GigoDA
09/07/2026, 3:27 PMAI Evy
09/07/2026, 3:27 PMAI Evy
09/07/2026, 3:27 PMAI Evy
09/07/2026, 3:27 PMAI Evy
09/07/2026, 3:27 PMAI Evy
09/07/2026, 3:28 PMAI Evy
09/07/2026, 4:07 PMGigoDA
09/07/2026, 4:29 PMAI Evy
09/07/2026, 4:29 PMAI Evy
09/07/2026, 4:29 PMAI Evy
09/07/2026, 4:29 PMAI Evy
09/07/2026, 4:29 PMAI Evy
09/07/2026, 4:29 PMGigoDA
09/07/2026, 4:31 PMAI Evy
09/07/2026, 4:31 PMAI Evy
09/07/2026, 4:31 PMdynamic_variables field, which lets you set dynamic variables for the inbound call at the point the webhook responds [(1) ]() . Since the webhook can perform a lookup (e.g., against a CRM/database) before the call starts and then return that contact data as dynamic_variables, those values are available to the agent from the start of the call as variables it can reference in the prompt [(2) ]() , [(3) ]() .
For example, the community Discord guidance describes this exact flow: use the inbound webhook to get the caller's phone number before the call starts, look them up, and send the information back to the agent as a dynamic variable, referenced in the prompt like Hello {{user_name}} [(2) ]() . This means the agent doesn't need to wait for the caller to speak — the looked-up data is already injected as a variable before the call begins .
Regarding whether a second native Search Contact lookup is required mid-call: the sources don't state that GoHighLevel's Search Contact tool can accept or reuse a contact record injected via the webhook's dynamic_variables. The GoHighLevel agent functions documentation describes Search Contact as finding a contact by phone number to identify the caller, and other tools (Get Contact, Update Contact, etc.) working off a contact ID typically obtained from that Search Contact call [(4) ]() . Nothing in the sources describes passing a webhook-provided contact ID directly into these tools to skip a mid-call Search Contact invocation.
So thAI Evy
09/07/2026, 4:31 PMdynamic_variables is documented and supported [(1) ]() , [(2) ]() , but whether that eliminates the need for a second native Search Contact call depends on whether your prompt/flow is designed to reference the dynamic variable (e.g., a contact ID) instead of invoking the tool again — the sources don't explicitly confirm or rule out feeding a dynamic variable into Search Contact's tool config to bypass a second lookup [(4) ]() . I don't have documentation confirming this exact integration detail.
Check out these potentially relevant sources: [Inbound call & SMS webhook]() , [GoHighLevel agent functions]() , [Discord message from @omar.13. on 2026-01-13]() . Want a general answer based on common patterns instead?AI Evy
09/07/2026, 4:31 PMAI Evy
09/07/2026, 4:31 PMGigoDA
09/07/2026, 4:43 PMAI Evy
09/07/2026, 4:43 PMAI Evy
09/07/2026, 4:43 PMAI Evy
09/07/2026, 4:43 PMAI Evy
09/07/2026, 4:43 PMAI Evy
09/07/2026, 4:44 PMAI Evy
09/07/2026, 4:44 PMAI Evy
09/07/2026, 5:06 PMGigoDA
09/07/2026, 5:06 PMAI Evy
09/07/2026, 5:06 PMfrom_number, described as helping "identify the caller and process the call / SMS accordingly" [(1) ]() . Similarly, {{user_number}} is documented as the "User's phone number (from_number for inbound, to_number for outbound) " [(2) ]() . Both of these are populated from whatever number is presented to Retell as the calling party on the inbound leg.
However, the sources don't address the specific mechanics of carrier-level forwarding — that is, whether the original caller's number is preserved end-to-end when a carrier forwards a business line to a Retell number, versus being replaced by the forwarding carrier's own number (a common telecom behavior sometimes called caller ID rewriting, depending on the carrier's forwarding method) . None of the documentation here describes how PSTN/carrier call-forwarding affects the caller ID Retell ultimately receives.
There's also a related Discord report worth flagging: one user found that from_number did not appear as expected in agent-specific webhooks (call_started, call_ended, call_analyzed) when the "opt out sensitive data" setting was enabled on the agent — Retell confirmed this is expected behavior in that case, and the number was only recoverable via the phone-number-level inbound webhook [(3) ]() . This is a different cause than carrier forwarding, but it's a relevant caveat if Orca has that privacy setting enabled, since it would also suppress `froAI Evy
09/07/2026, 5:06 PM{{user_number}} value.
Check out these potentially relevant sources: [Inbound call & SMS webhook]() , [Dynamic variables: personalize Retell agent calls]() , [Inbound call webhook doesn't contain from_number 😰]() . Want a general answer based on common telecom forwarding behavior instead?AI Evy
09/07/2026, 5:06 PMAI Evy
09/07/2026, 5:06 PMGigoDA
09/07/2026, 5:07 PMAI Evy
09/07/2026, 5:07 PMAI Evy
09/07/2026, 5:08 PMcurl --request POST \
--url <https://api.retellai.com/v2/create-phone-call> \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"from_number": "+14157774444",
"to_number": "+12137774445",AI Evy
09/07/2026, 5:08 PMAI Evy
09/07/2026, 5:08 PMAI Evy
09/07/2026, 5:08 PMGigoDA
09/07/2026, 5:08 PMAI Evy
09/07/2026, 5:08 PMAI Evy
09/07/2026, 5:08 PMcontact_id passed directly from a dynamic variable, or whether they require a Search Contact call first in the same session.
None of the available sources describe the internal input requirements of those specific GHL functions in that level of detail. The sources here cover the inbound call webhook's dynamic_variables mechanism [(1) ]() , GoHighLevel contact sync behavior for imported contacts [(2) ]() , and unrelated Discord threads about dynamic variable delivery issues [(3) ]() [(4) ]() [(5) ]() — none of which state whether Get Contact, Update Contact, or Create Note can take a contact ID directly as an argument versus requiring a Search Contact lookup first.
Check out these potentially relevant sources: [Inbound call & SMS webhook]() , [GoHighLevel contact sync]() .
Want a general answer based on common patterns instead?AI Evy
09/07/2026, 5:09 PMAI Evy
09/07/2026, 5:09 PM