Webhook delivery issues
Webhooks that do not arrive, fail verification, arrive late, or arrive twice, with what to check in Recent deliveries.
What you will achieve
You will find why a webhook is missing or rejected.
Look at Recent deliveries first
Open the webhook and read Recent deliveries. The row for a call shows the status code and any error, and tells you most of what you need.
Symptoms
| Symptom | Likely cause | Fix |
|---|---|---|
| No deliveries at all | The agent does not send to this webhook, or Webhook is off in its Tools | Open the agent, Tools, Built-in, switch Webhook on and choose it under Send to |
| Not sent for a call | The call did not finish, or the review has not run | Wait for the call to be reviewed; call.completed is sent once it is |
call.started or tool.called never arrives | The event is not ticked under Events, the webhook is paused, the call began before you ticked it, or the agent does not send to this webhook | Tick it, switch the webhook on, save, and make a new call |
Some tool.called events are missing from a busy call | More than 50 events were waiting because your endpoint answered slowly | Answer 2xx quickly and do the work afterwards |
| Status 401 or 403 in the row | Your endpoint rejected the request | Check your auth; 4xx is not retried |
| Status 5xx or a timeout | Your server failed or was too slow | Fix it, or raise Timeout; 5xx and timeouts are retried up to Attempts |
| An error about the address | A private or internal URL, or not http(s) | Use a public address |
| Signature does not match | Re-serialised body, wrong header, or wrong secret | See Verify webhook signatures |
| Test works, real calls do not | The agent does not send to this webhook, the webhook is paused, or the call began before you saved | Check the agent's Send to, that the webhook is on, and make a new call |
| The same call arrives twice | A retry after a slow answer | Answer 2xx quickly and ignore a repeated call_id |
| Payload is missing a section | It was not ticked under What to send | Tick it and save |
Arrives with review.status of pending | The review had not finished | Fetch the call later from the API for the complete review |
Testing
Choose Send test and watch the new row in Recent deliveries. Then make a short real call.
Expected result
A row marked as succeeded with status 200 for each finished call.
Related guides
Something here does not match what you see in the dashboard? Let us know.
