Skip to main content

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 regionapi.whautomate.com

List webhooks​

GET /v1/webhooks

Lists the webhooks of the account.

Headers
x-api-keystringrequired
Your Whautomate API key.
Query parameters
limitinteger
Results per page (default 10, max 100).
pageinteger
Page number, from 1 (default 1).
Response 200
idstring
Unique identifier for the endpoint
namestringrequired
Human-readable name for the endpoint
activebooleanrequired
Indicates whether the endpoint is active or not
serverUrlstringrequired
URL of the server where webhooks are sent
webhookHeadersobject[]

Array of HTTP headers to be included in webhook requests

eventsstring (enum)[]required
Array of events that trigger webhooks for this endpoint. form_submitted (a web form response was completed) posts { event, formResponse } with formResponse as the FormResponse model; whatsapp_flow_submitted (a contact submitted a WhatsApp Flow built in Forms) posts { event, flowResponse } with flowResponse as the WhatsAppFlowResponse model.
createdAtstring
Timestamp of endpoint creation
updatedAtstring
Timestamp of endpoint update
Request
curl -X GET "https://api.whautomate.com/v1/webhooks?limit=2" \
-H "x-api-key: YOUR_API_KEY"
Response 200
[
{
"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​

POST /v1/webhooks

Subscribes a server URL to events.

Headers
x-api-keystringrequired
Your Whautomate API key.
Body
idstring
Unique identifier for the endpoint
namestringrequired
Human-readable name for the endpoint
activebooleanrequired
Indicates whether the endpoint is active or not
serverUrlstringrequired
URL of the server where webhooks are sent
webhookHeadersobject[]

Array of HTTP headers to be included in webhook requests

eventsstring (enum)[]required
Array of events that trigger webhooks for this endpoint. form_submitted (a web form response was completed) posts { event, formResponse } with formResponse as the FormResponse model; whatsapp_flow_submitted (a contact submitted a WhatsApp Flow built in Forms) posts { event, flowResponse } with flowResponse as the WhatsAppFlowResponse model.
createdAtstring
Timestamp of endpoint creation
updatedAtstring
Timestamp of endpoint update
Response 200
idstring
Unique identifier for the endpoint
namestringrequired
Human-readable name for the endpoint
activebooleanrequired
Indicates whether the endpoint is active or not
serverUrlstringrequired
URL of the server where webhooks are sent
webhookHeadersobject[]

Array of HTTP headers to be included in webhook requests

eventsstring (enum)[]required
Array of events that trigger webhooks for this endpoint. form_submitted (a web form response was completed) posts { event, formResponse } with formResponse as the FormResponse model; whatsapp_flow_submitted (a contact submitted a WhatsApp Flow built in Forms) posts { event, flowResponse } with flowResponse as the WhatsAppFlowResponse model.
createdAtstring
Timestamp of endpoint creation
updatedAtstring
Timestamp of endpoint update
Request
curl -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"
}
]
}'
Response 200
{
"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​

GET /v1/webhooks/{webhookId}

Gets one webhook by id.

Headers
x-api-keystringrequired
Your Whautomate API key.
Path parameters
webhookIdstringrequired
Response 200
idstring
Unique identifier for the endpoint
namestringrequired
Human-readable name for the endpoint
activebooleanrequired
Indicates whether the endpoint is active or not
serverUrlstringrequired
URL of the server where webhooks are sent
webhookHeadersobject[]

Array of HTTP headers to be included in webhook requests

eventsstring (enum)[]required
Array of events that trigger webhooks for this endpoint. form_submitted (a web form response was completed) posts { event, formResponse } with formResponse as the FormResponse model; whatsapp_flow_submitted (a contact submitted a WhatsApp Flow built in Forms) posts { event, flowResponse } with flowResponse as the WhatsAppFlowResponse model.
createdAtstring
Timestamp of endpoint creation
updatedAtstring
Timestamp of endpoint update
Request
curl -X GET "https://api.whautomate.com/v1/webhooks/tAG5Xabz12" \
-H "x-api-key: YOUR_API_KEY"
Response 200
{
"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​

PUT /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).

Headers
x-api-keystringrequired
Your Whautomate API key.
Path parameters
webhookIdstringrequired
Body
idstring
Unique identifier for the endpoint
namestring
Human-readable name for the endpoint
activeboolean
Indicates whether the endpoint is active or not
serverUrlstring
URL of the server where webhooks are sent
webhookHeadersobject[]

Array of HTTP headers to be included in webhook requests

eventsstring (enum)[]
Array of events that trigger webhooks for this endpoint. form_submitted (a web form response was completed) posts { event, formResponse } with formResponse as the FormResponse model; whatsapp_flow_submitted (a contact submitted a WhatsApp Flow built in Forms) posts { event, flowResponse } with flowResponse as the WhatsAppFlowResponse model.
createdAtstring
Timestamp of endpoint creation
updatedAtstring
Timestamp of endpoint update
Response 200
idstring
Unique identifier for the endpoint
namestringrequired
Human-readable name for the endpoint
activebooleanrequired
Indicates whether the endpoint is active or not
serverUrlstringrequired
URL of the server where webhooks are sent
webhookHeadersobject[]

Array of HTTP headers to be included in webhook requests

eventsstring (enum)[]required
Array of events that trigger webhooks for this endpoint. form_submitted (a web form response was completed) posts { event, formResponse } with formResponse as the FormResponse model; whatsapp_flow_submitted (a contact submitted a WhatsApp Flow built in Forms) posts { event, flowResponse } with flowResponse as the WhatsAppFlowResponse model.
createdAtstring
Timestamp of endpoint creation
updatedAtstring
Timestamp of endpoint update
Request
curl -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
}'
Response 200
{
"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​

DEL /v1/webhooks/{webhookId}

Deletes a webhook.

Headers
x-api-keystringrequired
Your Whautomate API key.
Path parameters
webhookIdstringrequired
Response 200
successboolean
Request
curl -X DELETE "https://api.whautomate.com/v1/webhooks/tAG5Xabz12" \
-H "x-api-key: YOUR_API_KEY"
Response 200
{
"success": true
}