Skip to content
TriedDocs
Webhooks

Webhooks FAQ and troubleshooting

Answers to common webhook questions and fixes for missing, duplicate, late or rejected events.

I am not receiving any events#

Check in this order:

  1. Is a URL set? For call events: the agent's Agent Level Webhook URL, else Settings, Webhooks, URL. If neither is set, nothing is sent and nothing is logged.
  2. Is the event enabled? Open the agent's Webhook Settings, Events. transcript_updated and the four transfer events are off by default.
  3. Is the agent version published? Live numbers use the version bound to them. A webhook URL added only to a draft does not reach live calls.
  4. Look at the delivery log. If attempts are there with errors, the problem is on the receiving side. If there are no attempts, it is one of the three points above.
  5. Press Test on the Webhooks page with your URL. If the test fails, the URL is unreachable from the internet or blocked as a private address.

Events arrive twice#

A retry is sent when an attempt times out or returns a non-2xx. If your server finished the work but replied after the timeout, you get the same body again. Make handlers idempotent: store call_id (or chat_id, alert_id) with event and skip repeats.

A second call_analyzed is also expected after someone presses Rerun on the call or calls rerun-call-analysis. It carries the new analysis.

call_analyzed arrives late#

call_analyzed waits for the call_ended delivery to finish. If your call_ended endpoint is down, Tried tries 4 times over at least 7 seconds plus 4 timeouts before it gives up, and only then sends call_analyzed. Fix the call_ended handler or reply 2xx immediately.

transfer_bridged arrives after call_ended#

Transfer events and call events are delivered independently. Order them by transfer.timestamp and call.end_timestamp, not by arrival time.

My signature check fails#

  • Verify against the raw request body. Frameworks that parse JSON first and re-serialise it change the bytes.
  • Use the full API key string of the key with the Webhook badge, not its id.
  • Check that your server clock is within 5 minutes of real time.
  • If someone moved the Webhook badge to another key, update your verifier.

See Secure webhooks.

The delivery log shows "private or reserved address"#

The URL resolves to a private, loopback or link-local address, which Tried refuses for security. Use a public hostname or a tunnel. See Test webhooks.

Can I use different URLs for different events?#

Not on one agent: one agent URL receives all of its enabled call and transfer events. You can:

  • Give each agent its own URL.
  • Give each alert rule its own URL.
  • Give each chat agent its own URL.
  • Route by event inside your handler.

Can the agent URL include the tenant or call id?#

Yes. The agent URL accepts {{variable}} placeholders for call events, filled from the call's dynamic and collected variables plus call_id and agent_id. See Register a webhook.

How big are payloads?#

Call payloads contain the whole transcript with word timings. A long call can produce a body of several hundred kilobytes. Make sure your body size limit on the webhook route allows it.

Are webhooks sent for test calls in the dashboard?#

Yes. Web calls started from Test Audio are real calls and send call_started, call_ended and call_analyzed like any other call. Text-only Test LLM sessions are not calls and send no webhooks.

Does the inbound webhook delay the call?#

Yes, by the time your server takes to answer, up to 10 seconds per attempt. Every other webhook is sent in the background and never delays a call.

Can my webhook reply change the call?#

Only the inbound call webhook reads your reply. For everything else the reply body is ignored. To act on a live call, use the API (for example update-live-call or stop-call).

Is there a webhook for inbound SMS?#

No. Inbound SMS messages are answered by the number's agent. Read SMS conversations with list-sms-chats.

Can I replay old events?#

There is no replay button. The delivery log keeps each attempt's request body, which you can read with GET /webhook-deliveries and feed to your handler, or fetch the current call with get-call.

Where do webhooks come from?#

From Tried's egress addresses when the deployment publishes them. See Egress IP addresses.