Problem Summary:
Retell is sending two events back-to-back:
call_ended
call_analyzed
The call_analyzed event is the only one that contains the structured data I need (extracted fields, transcript, intents). However, because call_ended fires milliseconds before call_analyzed, Zapier often does not receive or trigger on the analyzed event at all.
What I’m experiencing:
Both events are sent to the same Zapier Catch Hook URL
call_ended arrives first and triggers the Zap
The call_analyzed event either:
never appears in Zap history, or
is ignored because Zapier treats it as part of the same request session
What I need:
I only want to process the call_analyzed event.
Is there a supported way in Retell to either:
Send ONLY the call_analyzed webhook and disable call_ended,
OR
Add a 1–3 second delay before call_analyzed is sent,
OR
Route call_ended and call_analyzed to separate webhook URLs?
This race condition is preventing reliable CRM automation because the final structured data is not consistently delivered to Zapier.
Please advise on the recommended configuration to ensure the analyzed event is always received.
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).
Thanks — I understand filtering in Zapier.
However, filtering is not my issue. The issue is delivery: Zapier often never receives the call_analyzed POST at all (it does not appear in Zap History / Catch Hook samples), even though call_ended is received seconds/milliseconds before it.