Duplicate Webhook Payloads

Hi, we’ve received the call_analyzed payload on our webhook more than once on multiple occasions now, we’re trying to figure out if theres something we can do to prevent this

Hello @hussain

The duplicates are caused by Retell’s retry behavior when a 2xx isn’t received within 10 seconds.

Duplicates typically happen because of Retell’s retry policy: if your endpoint doesn’t return a 2xx success status within 10 seconds, the webhook retries up to 3 times. To prevent reprocessing:

  • Return a 2xx response quickly (process asynchronously after acknowledging).

  • Make your handler idempotent by deduplicating on call_id + event (e.g., call_analyzed for that call_id).

For more details you can see (Webhook Overview - Retell AI)

Thank You

So, what happen if a event got sent multiple times (like transcript_updated or transfer_started), the combination call_id + event are identical. How can we de-duplicate these distinct webhook for same event ?

Hey @tri.van.vo Today our webhooks don’t include a server-generated delivery ID, so de-duplication needs to happen on your side.

A few key points:

  • We retry on non-2xx or timeout (up to 3 times) with the exact same body and X-Retell-Signature. You can treat a hash of the raw body as a unique delivery key.
  • You can also check the event_timestamp.

Thank you. But I don’t see any mention about event_timestamp in the doc https://docs.retellai.com/features/webhook-overview . I already thought about the hashing approach, but the doc never mention event_timestamp make me though the body are identical. Anyway, I got a solution now.