Where to configure webhooks
An agent can have several webhooks, each with its own URL and events. Account-level webhooks are sent in addition to the agent’s own webhooks.
Account-level webhooks
Agencies often want one endpoint per client instead of configuring every agent. Add the webhook to the subaccount and it fires for all of its agents, including agents created later. See Subaccounts and SIP.Simple and advanced webhooks
Each webhook has a Mode: Simple or Advanced.
Simple webhooks need only an HTTPS URL. To set one up in an agent:
1
Open the agent's webhooks
Open the agent and select Webhooks in the settings sidebar (or the Webhook stage on the workflow canvas).
2
Add a webhook
Click Add Webhook, keep Mode on Simple, and enter your Webhook Url. It must start with
https://.3
Choose events
Under Send the webhook for, select the events you want. See Choosing events.
4
Save and test
Save the agent and place a test call. The delivery appears on the call in the dashboard.
Choosing events
Each webhook fires only for the events selected for it. Events cover the whole lifecycle:- Before and during the call:
DIALING,CONNECTED,COULD_NOT_CONNECT:BUSY,COULD_NOT_CONNECT:NO_ANSWER,FAILED,HANG_UP,FORWARDED,FORWARDED_CALL_FINISHED. - After the call:
POST_PROCESSING_FINISHED:<outcome>for each outcome and each custom success criterion,CALL_FINISHED,CONTACT_UNREACHED,CONTACT_LAST_DAILY_ATTEMPT. - Text and Email agents:
POST_PROCESSING_FINISHED:<outcome>, plusCONTACT_UNREACHEDandFAILEDfor Text agents.
events, it subscribes to the five main outcomes: POST_PROCESSING_FINISHED:INTERESTED, NOT_INTERESTED, CALL_ME_LATER, WRONG_NUMBER, and DO_NOT_CALL.
See Webhook events for when each event fires and which to pick.
Create a webhook with the API
Subscribing a URL the agent already has merges the new events into the existing webhook. To replace or remove webhooks, send the full list with
PATCH /agents/{agentId} ("webhooks": [] removes all).
The API accepts the standard call events.
CONTACT_UNREACHED, CONTACT_LAST_DAILY_ATTEMPT, and events for custom success criteria can be selected in the dashboard.Delivery and retries
- Respond with any
2xxstatus to acknowledge a delivery. Anything else, or a timeout, counts as a failure. - Failed call webhook deliveries are retried automatically, up to 5 attempts in total, with increasing delays starting at about 10 seconds.
- Deliveries for the same call are sent one at a time, in event order. Deliveries for different calls can arrive in parallel and out of order.
- The same event can occasionally be delivered more than once (for example, when your server processed a request but the response was lost). Make your handler idempotent: use the call
idpluswebhookEventas a deduplication key.
5xx responses).
Logs
Every delivery attempt is logged on the call. Open the call from the agent’s results or the contact’s interactions to see each webhook that fired, the request that was sent, and your server’s response status and body. Use this first when a webhook doesn’t arrive.Testing
- Test calls. Calls you place with Test Call in the agent send webhooks like any other call, with
isTestCall: truein the payload. Filter these out in production handlers. - Send Test Request. In the advanced webhook editor, Send Test Request sends the configured request and shows the response.
- Replay a payload.
GET /agents/{agentId}/calls/{callId}/webhook-payloadreturns the payload for any past call, which is handy for building and testing your handler. - Local development. Expose your local server with a tunneling tool and use its HTTPS URL.
Network and security
Callers sends webhooks from these IP addresses. If your endpoint is behind a firewall, allow both:Troubleshooting
The webhook never arrives
The webhook never arrives
Check that the agent has the event selected, the URL is public HTTPS, and your firewall allows the IPs above. Then open the call’s webhook log to see the response your server returned.
I get the same event twice
I get the same event twice
A previous attempt failed or timed out from Callers’ side and was retried. Deduplicate on
id + webhookEvent, and respond faster.POST_PROCESSING_FINISHED:INTERESTED never fires but calls succeed
POST_PROCESSING_FINISHED:INTERESTED never fires but calls succeed
If your agent uses custom success criteria, subscribe to their events (
POST_PROCESSING_FINISHED:<criterion name>), or use CALL_FINISHED and read successCriteria from the payload.Signature verification fails
Signature verification fails
Verify against the raw request body, before any JSON parsing or re-serialization, and use the right scheme for the webhook type. See Validating webhook signatures.
Related
Webhook events
Every event and when it fires.
Webhook payload
Every field Callers sends.
Advanced webhooks
Custom method, headers, and body.
Validating signatures
Verify requests come from Callers.
Troubleshooting
Webhooks that never arrive, time out, or fail signature checks.