Webhooks Overview¶
Webhooks allow your application to receive notifications when important events happen in the call center platform (calls, messages, contacts, lists, etc).
When an event occurs, the system sends an HTTP POST request with a JSON payload to the webhook URL you configured.
How webhooks work¶
-
You create a webhook in the UI and select:
- the target URL
- the events you want to receive
- optional contact lists to filter events
-
When an event happens:
- the platform builds a JSON payload
- sends it as a
POSTrequest to your webhook URL - retries automatically on transient failures
-
Your server processes the payload and returns any
2xxresponse to acknowledge delivery.
Webhook URL¶
Each webhook has a single target URL.
All events selected for that webhook are delivered to the same URL.
You must route and handle different event types by inspecting the event name and the JSON body.
Event types¶
The platform currently sends the following webhook events:
Contact events¶
| Name | Description |
|---|---|
Contact Created |
A new contact was created |
Contact Modified |
An existing contact was updated |
Contact list events¶
| Name | Description |
|---|---|
Contact List Created |
A contact list became non-empty (created) |
Contact List Modified |
A contact list was updated |
Call events¶
| Name | Description |
|---|---|
Call Ended |
A call finished |
Call Abandoned |
Caller hung up before being answered |
Call Overflowed To Voicemail |
Call was routed to voicemail |
Call Disposition Saved |
A disposition was saved |
Call Disposition Modified |
A disposition was changed |
Call Recording Received |
All call recordings are available |
Messaging events¶
| Name | Description |
|---|---|
Message Received |
An inbound message was received |
Message Sent |
An outbound message was sent |
Each event has its own documentation file describing the payload format and examples.
Delivery & retries¶
- Webhooks are sent using HTTP
POSTwith a JSON body. - A request is considered successful if your server returns any 2xx status code.
The system automatically retries failed requests:
- Up to 3 retries (maximum 4 total attempts)
- Retries happen only for:
- connection errors
- 5xx server responses
- 4xx responses are not retried
- Exponential backoff is used: 1s → 2s → 4s
Ordering and duplicates¶
- Events for the same call or message are sent in the order they occur.
- Because of retries, duplicate deliveries are possible.
- Your webhook endpoint must be idempotent and handle the same event more than once safely.
Required behavior for your endpoint¶
Your webhook endpoint must:
- Accept
POSTrequests with a JSON body - Respond with a
2xxstatus code as fast as possible - Be able to process:
- missing fields
nullvalues- empty arrays
- duplicate events
Security¶
At this time: - Requests are not signed - No secret or HMAC header is sent
You should protect your webhook endpoint using: - a private, unguessable URL - IP allow-listing (if available) - or your own validation logic