How to know when the user pick up with Custom LLM and not with event call started as it comes before the user pick up
Hi, good catch, this one is a known gap.
There is no dedicated “user picked up” event in Custom LLM. The WebSocket connects when the call starts so your server is ready, which is why it feels early. The call_started webhook is actually closer to real connection (it does not fire on dial_failed, dial_no_answer or dial_busy), so if something is firing well before pickup, you may be seeing the WebSocket opening rather than the webhook itself.
The cleanest practical signal from inside your Custom LLM is the first real conversation activity: the first update_only with a user utterance, or the first response_required. The turntaking field on update_only helps too. Only catch is if your agent speaks first and the user stays silent, none of these fire.
Worth raising with Retell support if you need the exact connect moment, since it is not documented today.
Russell
This is a known behavior when telephony connects with the WebSocket. Retell doesn’t provide a dedicated event that confirms a human has picked up the call.
Retell connects to your WebSocket as soon as the call is placed, so the connection is ready in advance. The call_started event and greeting may occur as soon as the carrier reports that the call has connected, even if the person hasn’t spoken yet.
If you need to confirm that a person has answered and spoken, you can configure the agent to wait for the user to speak first and then look for an update_only event containing a user utterance.
If the agent speaks first, the initial response_required event with an empty transcript and response_id of 1 indicates that the carrier has reported the call as answered. However, this does not necessarily confirm that a human has spoken.