# Duplicate Webhook Payloads

**URL:** <https://community.retellai.com/t/duplicate-webhook-payloads/2573>\
**Category:** Support Help\
**Tags:** bug\
**Created:** [May 4, 2026, 8:25pm UTC](https://community.retellai.com/t/duplicate-webhook-payloads/2573 "2026-05-04T20:25:31Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![hussain](https://yyz2.discourse-cdn.com/flex008/user_avatar/community.retellai.com/hussain/32/140_2.png) [@hussain](https://community.retellai.com/u/hussain)\
**Post date:** [May 4, 2026, 8:25pm UTC](https://community.retellai.com/t/duplicate-webhook-payloads/2573/1 "2026-05-04T20:25:31Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![mark1](https://yyz2.discourse-cdn.com/flex008/user_avatar/community.retellai.com/mark1/32/2524_2.png) [@mark1](https://community.retellai.com/u/mark1)\
**Post date:** [May 4, 2026, 8:35pm UTC](https://community.retellai.com/t/duplicate-webhook-payloads/2573/2 "2026-05-04T20:35:28Z")

</div>

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](https://docs.retellai.com/features/webhook-overview))

Thank You

---

<div class="post-metadata">

**Author:** ![tri.van.vo](https://yyz2.discourse-cdn.com/flex008/user_avatar/community.retellai.com/tri.van.vo/32/2134_2.png) [@tri.van.vo](https://community.retellai.com/u/tri.van.vo)\
**Post date:** [June 15, 2026, 1:46pm UTC](https://community.retellai.com/t/duplicate-webhook-payloads/2573/5 "2026-06-15T13:46:43Z")

</div>

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 ?

---

<div class="post-metadata">

**Author:** ![Shah-Fazal](https://yyz2.discourse-cdn.com/flex008/user_avatar/community.retellai.com/shah-fazal/32/2522_2.png) [@Shah-Fazal](https://community.retellai.com/u/Shah-Fazal)\
**Post date:** [June 15, 2026, 2:59pm UTC](https://community.retellai.com/t/duplicate-webhook-payloads/2573/6 "2026-06-15T14:59:55Z")

</div>

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`.

---

<div class="post-metadata">

**Author:** ![tri.van.vo](https://yyz2.discourse-cdn.com/flex008/user_avatar/community.retellai.com/tri.van.vo/32/2134_2.png) [@tri.van.vo](https://community.retellai.com/u/tri.van.vo)\
**Post date:** [June 16, 2026, 6:47am UTC](https://community.retellai.com/t/duplicate-webhook-payloads/2573/7 "2026-06-16T06:47:49Z")

</div>

> [@Shah-Fazal](#):
>
> - 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.
