Webhooks
Receive Slovio events (messages, deliveries, contacts, conversations, CSAT, chatbot) on your server — setup, events, payload and delivery retries.
2 min readUpdated
Webhooks send events to your server as they happen, so you don't have to poll the API.
Set up
More → Developer → APIs → Webhooks.
Add a webhook:
- Endpoint URL: your HTTPS endpoint.
- HTTP Method: use POST.
- Signing secret (recommended): used to sign each delivery. See Verify webhook signatures.
- Event Permissions: the events to receive.
- Bots to notify: optionally limit chatbot events to certain bots.
- Active: on.
Save, then send a test delivery. It carries
"_test": trueindata.
Webhooks depend on your plan, and only the account owner can manage them.
Events
| Event | Actions |
|---|---|
message |
incoming, outgoing |
whatsapp |
sent, delivered, read, failed, update |
rcs |
sent, delivered, displayed, failed |
conversation |
resolved, assigned |
contact |
write, update, delete |
template |
write, update, delete |
broadcast |
write, update |
csat |
submitted |
chatbot |
response_sent, session_started, session_ended |
Payload
Every delivery has the same envelope:
{
"event": "message",
"action": "incoming",
"data": {
"channelType": "whatsapp",
"from": "+919876543210",
"text": "Is the 2BHK still available?"
},
"timestamp": "2026-10-01T09:30:12.000Z"
}The data above is an example; its fields vary by event. Send a test delivery to see the exact shape.
For whatsapp events, data carries Meta's original webhook body plus a comms object with Slovio's message ID and status.
Responding and retries
- Reply with any 2xx within 10 seconds. Do slow work after responding.
- Timeouts, network errors, 408, 429 and 5xx are retried up to 3 attempts in total (after 1 s, then 2 s). Other 4xx responses are not retried.
- After 25 failed deliveries in a row, the webhook is switched off. Fix your endpoint, then switch it back on.
- Each webhook keeps a delivery log. You can replay a delivery from there.
Common questions
How fast must my endpoint respond?
Within 10 seconds, with any 2xx status. Save the event and do slow work afterwards, or the delivery times out and is retried.
Why did my webhook switch itself off?
It failed 25 deliveries in a row. Fix your endpoint, then switch the webhook back on in More → Developer → APIs → Webhooks.
Are deliveries signed?
Only when you set a Signing secret. Then each delivery carries X-Slovio-Timestamp and X-Slovio-Signature. See Verify webhook signatures.
Do these webhooks include call events?
No. Call events have their own endpoints under Calling → Webhooks. See Calling webhooks.
How do I test my endpoint?
Save the webhook and send a test delivery. It carries "_test": true in data, so your code can tell it apart from a real event.
Stuck, or is something here out of date? Tell the team — we reply within a working day.
