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_analyzedfor thatcall_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.