Webhooks & APIIntegrations
Zapier
Fire Wexio flows from any Zap
Zapier's Webhooks by Zapier action can POST to a Wexio inbound URL at the end of any Zap — turning ~6000 Zapier-supported apps into triggers for Wexio flows.

Provider docs: Setting up webhooks in Zapier
Setup
1. Create an inbound Wexio connection
Settings → Webhooks & API → New connection → Inbound. Keep Auth mode: Shared Secret. Copy the endpoint URL and the signing secret.
2. Add a Webhooks by Zapier step
In your Zap, add Webhooks by Zapier → POST.

| Field | Value |
|---|---|
| URL | The Wexio endpoint URL |
| Payload type | Json |
| Data | Your JSON fields — Zapier's field picker auto-suggests from the trigger step |
| Headers | x-webhook-secret = the Wexio signing secret |
Use Zapier's Custom Request action (POST) if you need to pass the body as a raw JSON string instead of Zapier's auto-built key/value pairs. Custom Request lets you include Content-Type: application/json explicitly, which some payload shapes (nested objects) need.
3. Contact resolution, schema, flow
Same as any inbound setup:
- Configure Identifier type + JSON path on the Wexio connection (e.g.
Email+$.customer.email). - Tap Capture schema, run the Zap once, let Wexio learn the fields.
- Add a Webhook Received trigger on a flow and pick this connection.
Example — New Google Form Response → WhatsApp Template
- Zap trigger: Google Forms → New response
- Zap action: Webhooks by Zapier → POST to Wexio
- Payload:
{ "customer": { "phone": "{{response_phone}}", "name": "{{response_name}}" }, "survey": "nps" } - Wexio connection: identifier
Phone number, path$.customer.phone - Wexio flow: Webhook Received → WA Template "thank_you_survey" with
{{webhook.customer.name}}
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Zap test returns 401 | Missing or mis-cased x-webhook-secret header | Copy the secret fresh, ensure header name matches exactly |
Zap test returns 400 INVALID_JSON | Payload type was set to Form | Switch to Json |
| Zap runs but no flow fires | IDENTIFIER_NOT_FOUND in history | The contact doesn't exist in Wexio yet, or the JSON path is wrong |
| Duplicate flow runs | Zapier retry on slow response | Include X-Idempotency-Key: {{bundle_id}} header — Wexio dedupes replays |