Webhooks and 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. That turns any app Zapier supports into a trigger for Wexio flows.

Provider docs: Setting up webhooks in Zapier
Setup
1. Connect It in Wexio
Go to Settings → Webhooks and API → Webhooks → New connection → Inbound and keep Authentication mode on Shared secret (default). Copy the endpoint URL and the webhook 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 suggests them from the trigger step |
| Headers | x-webhook-secret = the Wexio webhook secret |
Use Zapier's Custom Request action (POST) to pass the body as a raw JSON string instead of Zapier's key/value pairs. It lets you set Content-Type: application/json explicitly, which some payload shapes (nested objects) need.
3. Resolve Contacts, Capture the Schema and Bind a Flow
This is the same as for any inbound setup.
- Set Identifier type and JSON path on the Wexio connection, for example
Emailwith$.customer.email. - Tap Capture schema, run the Zap once and let Wexio learn the fields.
- Add a Webhook Received trigger on a flow and pick this connection.
Example - New Google Form Response to 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, then WA Template "thank_you_survey" with
{{webhook.customer.name}}
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Zap test returns 401 | The x-webhook-secret header is missing or mis-cased | Copy the secret fresh and make sure the 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 does not exist in Wexio yet, or the JSON path is wrong |
| Duplicate flow runs | Zapier retried on a slow response | Add the header X-Idempotency-Key: {{bundle_id}}. Wexio dedupes replays |
Related
- Custom Shared Secret - how the shared secret header works
- Inbound Webhooks - auth modes, contact resolution and response codes
- Webhook Received - the trigger that starts your flow
- Webhook History - check why a request failed