Webhook Race Condition - call_ended Fires Immediately Before call_analyzed Causing Zapier to Miss Analyzed Event

Retell AI does not support sending only the call_analyzed event or adding a delay between webhook events(1). The webhook will POST the payload to your endpoint for all event types: call_started, call_ended, and call_analyzed(1). All events are triggered to the same webhook URL(2).

The webhook has a timeout of 10 seconds(1). If within 10 seconds no success status (2xx) is received, the webhook will be retried, up to 3 times(1). The webhook will be triggered in order, but is not blocking(1). For example, if the webhook for call_started is not successful, Retell can still trigger call_ended webhook(1).

Recommended solution:

Since you cannot disable specific webhook events or route them to separate URLs, you need to handle filtering on the Zapier side(3). Your webhook URL will receive all the events - call_started, call_ended, call_analyzed(3). In Zapier, you can write logic where you process further only when the event type is call_analyzed(3).

The webhook payload contains an event field that specifies the event type(1). You can use Zapier’s built-in filtering to check this field and only continue the workflow when event equals call_analyzed.

Additional considerations:

When a call did not connect (like calls with dial_failed, dial_no_answer, dial_busy disconnection reasons), it will not have its call_started webhook triggered(1). It will still have its call_ended and call_analyzed webhook triggered(1)(4).

The call_ended event contains all fields from the call object except call_analysis(1). The call_analyzed event is triggered when call analysis is complete and contains the full call data including the call_analysis object(1).