Call webhooks: delivery, retries and duplicates

Last updated: 9 October 2026 · 4 min read

Clomni sends each call event to your address and waits for your answer. If a delivery fails, it is sent again a few times.

Steps

  1. 1

    How to answer

    Answer with 2xx within 5 seconds. Do the slow work (writing to the CRM, downloading the recording) after answering, in your own queue.

  2. 2

    When a delivery is retried

    Clomni sends the delivery again when:

    • your server cannot be reached;
    • no answer comes within 5 seconds;
    • the answer is 429 or 5xx.

    There are 5 attempts in all, 30 seconds, 1, 2 and 4 minutes apart. A 4xx answer (for example 400, 401, 404) is taken as final and is not retried.

  3. 3

    Spotting a duplicate

    A retried delivery keeps its delivery_id, and the X-ChatX-Delivery header carries the same value. Remember it: if the same delivery_id arrives again, it is a duplicate, do not process it. The pair id + event is also unique per call and works the same way.

  4. 4

    After 5 attempts

    If all 5 attempts fail, that event is lost. That is why call_ended carries everything about the call again: even without call_started you can record the whole call from call_ended. Store the call by id and update it on each event.

Document