Webhooks
Webhooks send events to your server as they happen. An account can have up to 5 webhooks; the serverUrl must be HTTPS and is pinged when saved (it must answer 200). Payload formats are described in Webhooks.
Values for events: incoming_whatsapp_message, outgoing_whatsapp_message, incoming_instagram_message, outgoing_instagram_message, incoming_telegram_message, outgoing_telegram_message, incoming_messenger_message, outgoing_messenger_message, incoming_website_message, outgoing_website_message, incoming_tiktok_message, outgoing_tiktok_message, client_created, client_tag_added, client_tag_removed, contact_created, contact_tag_added, contact_tag_removed, appointment_scheduled, appointment_rescheduled, appointment_cancelled, appointment_visited, appointment_no_show, appointment_double_confirmed, class_participant_scheduled, class_participant_rescheduled, class_participant_cancelled, class_participant_visited, class_participant_no_show, class_participant_waitlisted, invoice_draft, invoice_sent, invoice_pending, invoice_paid, form_submitted, whatsapp_flow_submitted.
Client events need the CRM Suite add-on, appointment and class events need Bookings, and invoice events need Sales.
api.whautomate.comList webhooks
/v1/webhooksLists the webhooks of the account.
x-api-keystringrequiredlimitintegerpageintegeridstringnamestringrequiredactivebooleanrequiredserverUrlstringrequiredwebhookHeadersobject[]Array of HTTP headers to be included in webhook requests
eventsstring (enum)[]requiredcreatedAtstringupdatedAtstringcurl -X GET "https://api.whautomate.com/v1/webhooks?limit=2" \
-H "x-api-key: YOUR_API_KEY"
[
{
"id": "U5vNRkCmr8",
"name": "CRM sync",
"active": true,
"serverUrl": "https://app.whautomate.com/hooks/crm-sync",
"webhookHeaders": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"events": [
"incoming_whatsapp_message",
"contact_created"
],
"createdAt": "2026-10-29T11:43:36.889Z",
"updatedAt": "2026-10-29T11:43:36.889Z"
}
]
Create a webhook
/v1/webhooksSubscribes a server URL to events.
x-api-keystringrequiredidstringnamestringrequiredactivebooleanrequiredserverUrlstringrequiredwebhookHeadersobject[]Array of HTTP headers to be included in webhook requests
eventsstring (enum)[]requiredcreatedAtstringupdatedAtstringidstringnamestringrequiredactivebooleanrequiredserverUrlstringrequiredwebhookHeadersobject[]Array of HTTP headers to be included in webhook requests
eventsstring (enum)[]requiredcreatedAtstringupdatedAtstringcurl -X POST "https://api.whautomate.com/v1/webhooks" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Booking sync",
"serverUrl": "https://hooks.example.com/whautomate",
"active": true,
"events": [
"client_created",
"appointment_scheduled",
"appointment_cancelled"
],
"webhookHeaders": [
{
"key": "X-Webhook-Secret",
"value": "replace-with-your-secret"
}
]
}'
{
"id": "tAG5Xabz12",
"name": "Booking sync",
"active": true,
"serverUrl": "https://hooks.example.com/whautomate",
"webhookHeaders": [
{
"key": "X-Webhook-Secret",
"value": "replace-with-your-secret"
}
],
"events": [
"client_created",
"appointment_scheduled"
],
"createdAt": "2026-10-29T12:40:32.894Z",
"updatedAt": "2026-10-29T12:40:32.894Z"
}
Get a webhook
/v1/webhooks/{webhookId}Gets one webhook by id.
x-api-keystringrequiredwebhookIdstringrequiredidstringnamestringrequiredactivebooleanrequiredserverUrlstringrequiredwebhookHeadersobject[]Array of HTTP headers to be included in webhook requests
eventsstring (enum)[]requiredcreatedAtstringupdatedAtstringcurl -X GET "https://api.whautomate.com/v1/webhooks/tAG5Xabz12" \
-H "x-api-key: YOUR_API_KEY"
{
"id": "tAG5Xabz12",
"name": "Booking sync",
"active": true,
"serverUrl": "https://hooks.example.com/whautomate",
"webhookHeaders": [
{
"key": "X-Webhook-Secret",
"value": "replace-with-your-secret"
}
],
"events": [
"client_created",
"appointment_scheduled"
],
"createdAt": "2026-10-29T12:40:32.894Z",
"updatedAt": "2026-10-29T12:40:32.894Z"
}
Update a webhook
/v1/webhooks/{webhookId}Updates a webhook. Partial: a field left out keeps its stored value. name, serverUrl, events, webhookHeaders and active cannot be cleared (400). A changed server URL is pinged and must answer 200 (400 otherwise).
x-api-keystringrequiredwebhookIdstringrequiredidstringnamestringactivebooleanserverUrlstringwebhookHeadersobject[]Array of HTTP headers to be included in webhook requests
eventsstring (enum)[]createdAtstringupdatedAtstringidstringnamestringrequiredactivebooleanrequiredserverUrlstringrequiredwebhookHeadersobject[]Array of HTTP headers to be included in webhook requests
eventsstring (enum)[]requiredcreatedAtstringupdatedAtstringcurl -X PUT "https://api.whautomate.com/v1/webhooks/tAG5Xabz12" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"events": [
"client_created",
"appointment_scheduled",
"appointment_cancelled",
"appointment_rescheduled"
],
"active": false
}'
{
"id": "tAG5Xabz12",
"name": "Booking sync",
"active": false,
"serverUrl": "https://hooks.example.com/whautomate",
"webhookHeaders": [
{
"key": "X-Webhook-Secret",
"value": "replace-with-your-secret"
}
],
"events": [
"client_created",
"appointment_scheduled",
"appointment_cancelled"
],
"createdAt": "2026-10-29T12:40:32.894Z",
"updatedAt": "2026-10-29T12:40:32.943Z"
}
Delete a webhook
/v1/webhooks/{webhookId}Deletes a webhook.
x-api-keystringrequiredwebhookIdstringrequiredsuccessbooleancurl -X DELETE "https://api.whautomate.com/v1/webhooks/tAG5Xabz12" \
-H "x-api-key: YOUR_API_KEY"
{
"success": true
}