Mo
12/23/2025, 11:25 AMAI Evy
12/23/2025, 11:25 AMAI Evy
12/23/2025, 11:26 AMAI Evy
12/23/2025, 11:26 AMcall_id field. [(1) ]() You can then use the "Get a Call" action in Zapier to retrieve all call details using that call ID. [(2) ]()
Option 2: Use Retell webhooks
Configure a webhook URL in your agent settings. Retell will POST call data (including call_id) to your webhook endpoint when events occur (like call.ended) . You can set up a Zapier webhook trigger to receive this data. [(3) ]()
Workflow example from the tutorial:
1. Use "Make a Phone Call" action → returns call_id [(1) ]()
2. Add "Get a Call" action → pass the call_id from step 1 [(2) ]()
3. This retrieves all call details including transcripts, summaries, etc.
The call_id is returned in the response when you create a phone call:
json
{
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6"
}
[(1) ]()
You can then map this call_id field to subsequent Zapier steps or send it to your database/webhook. [(2) ]() , [(6) ]()AI Evy
12/23/2025, 11:26 AMMo
12/23/2025, 11:34 AMAI Evy
12/23/2025, 11:34 AMAI Evy
12/23/2025, 11:34 AMcall_id as an additional field when sending data to Zapier. However, I can't see what specific interface or configuration you're referring to (the image/context isn't visible to me) .
Here's what I can confirm about the `call_id`:
The call_id is returned in the response when you create or register a phone call:
[(1) ]() , [(2) ]()
json
{
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6"
}
[(1) ]()
If you're using the metadata field, you can store custom data including a reference to the call. The metadata field accepts an arbitrary object for storage purposes:
[(3) ]()
javascript
const callResponse = await client.call.update('call_a4441234567890777c4a4a123e6', {
metadata: { customer_id: 'cust_123', notes: 'Follow-up required' },
}) ;
Could you clarify:
1. Are you trying to send the call_id via a webhook to Zapier?
2. Or are you trying to include it in the metadata or retell_llm_dynamic_variables fields when creating a call?
This will help me point you to the right approach.AI Evy
12/23/2025, 11:34 AMAI Evy
12/23/2025, 11:34 AMAI Evy
12/23/2025, 11:44 AMMo
12/23/2025, 11:44 AMAI Evy
12/23/2025, 11:44 AMcall_id in `retell_llm_dynamic_variables`—Retell provides it automatically as a system default variable.
Use the built-in {{call_id}} variable
The call_id is available as a system default dynamic variable that you can reference directly in your prompts, tool configurations, or webhook URLs:
[(1) ]()
| Variable | Description | Example |
|----------|-------------|---------|
| {{call_id}} | Current call session id | call_12345678906eaa0222bd3dd2a6c |
Webhook payload already includes call_id
When Retell sends webhook events (call_started, call_ended, call_analyzed) , the payload automatically includes the `call_id`:
[(2) ]()
json
{
"event": "call_ended",
"call": {
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
"agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
"call_status": "registered",
...
}
}
So if you're receiving webhooks in Zapier, the call_id should already be present in the payload. You can map it directly from the call object in your Zap.
If you need to use call_id within your agent's custom function/tool URL, you can include {{call_id}} in the URL or tool description, and it will be resolved at runtime.
[(1) ]()AI Evy
12/23/2025, 11:44 AMAI Evy
12/23/2025, 11:44 AMMo
12/23/2025, 11:47 AMAI Evy
12/23/2025, 11:47 AMAI Evy
12/23/2025, 11:47 AMcall_ended, call_analyzed) send to another, so Zapier sees them as separate events.
Solution: Include call_id in your custom function payload
Since {{call_id}} is a system default dynamic variable, you can include it directly in your custom function/tool that sends the appointment data to Zapier. When you configure your booking tool, add call_id as a parameter alongside name, appointment date/time, etc. [(1) ]()
Your custom function payload to Zapier would look something like:
json
{
"call_id": "{{call_id}}",
"name": "{{customer_name}}",
"appointment_date": "2025-01-15",
"appointment_time": "10:00 AM"
}
This way, when the agent triggers the booking function, all fields—including `call_id`—arrive in a single webhook event to Zapier.
Alternative: Use metadata field
You can also store appointment details in the metadata field during the call. The metadata object is included in the call_ended and call_analyzed webhook payloads:
json
{
"event": "call_ended",
"call": {
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
"metadata": {},
"retell_llm_dynamic_variables": {
"customer_name": "John Doe"
},
...
}
}
If you update the call's metadata with appointment info during the conversation, it will all arrive together in the call_ended or call_analyzed webhook.AI Evy
12/23/2025, 11:47 AMAI Evy
12/23/2025, 11:47 AMMo
12/23/2025, 12:02 PMAI Evy
12/23/2025, 12:02 PMAI Evy
12/23/2025, 12:03 PMcall_id to your custom function's JSON parameter schema. [(1) ]()
You have two options:
Option 1: Add it as a const value using the dynamic variable
In your JSON schema, add a call_id property with a const value that references the system variable:
json
{
"type": "object",
"properties": {
"name": {
"type": "object",
"description": "",
"properties": {
"first_name": {
"type": "string",
"description": "User first name"
},
"last_name": {
"type": "string",
"const": "{{last_name}}"
}
}
},
"order_id": {
"type": "number",
"const": 1234
}
}
}
Following this pattern, you'd add something like:
json
"call_id": {
"type": "string",
"const": "{{call_id}}"
}
Using const means the value will be applied directly to the function without LLM resolution.
Option 2: Add it as a query parameter
Alternatively, you can add call_id as a query parameter in your custom function configuration (under "Set query parameters") with a const value of {{call_id}}.
Either approach will include the call_id in the same request that sends your appointment data to Zapier.AI Evy
12/23/2025, 12:03 PMAI Evy
12/23/2025, 12:03 PMMo
12/23/2025, 12:07 PMAI Evy
12/23/2025, 12:07 PMAI Evy
12/23/2025, 12:07 PMcall_id, add a new field with:
- Field name: call_id
- Type: string
- Use the const value toggle and set it to {{call_id}}
Using const means the value will be applied directly to the function without LLM resolution. [(1) ]()
For your other fields (name, appointment date/time, etc.) , add them similarly—use description for values the LLM should resolve from the conversation, or const for values you want applied directly (including dynamic variables) .
What to add to your prompt:
Include explicit instructions for when to invoke the custom function. For example:
When user provided the city name, please get the weather for that city by calling the `get_weather` function.
Adapted for your booking scenario, you might add something like:
> "When the user has provided their name, preferred appointment date, and time, call the book_appointment function with all collected information."
This follows the best practice of explicitly stating when the function should be invoked. , [(3) ]()AI Evy
12/23/2025, 12:07 PMAI Evy
12/23/2025, 12:07 PMMo
12/23/2025, 12:09 PMAI Evy
12/23/2025, 12:09 PMAI Evy
12/23/2025, 12:09 PMcall_id, you'd toggle to const value and enter {{call_id}}. This ensures the system variable is passed directly rather than having the LLM try to determine it.AI Evy
12/23/2025, 12:09 PMAI Evy
12/23/2025, 12:09 PMMo
12/23/2025, 12:10 PMAI Evy
12/23/2025, 12:10 PMAI Evy
12/23/2025, 12:11 PM{{call_id}} there, and it will be passed directly without the LLM trying to interpret it. [(1) ]()
Example from the documentation showing const usage:
json
"last_name": {
"type": "string",
"const": "{{last_name}}"
}AI Evy
12/23/2025, 12:11 PMAI Evy
12/23/2025, 12:11 PMMo
12/23/2025, 12:30 PMAI Evy
12/23/2025, 12:30 PMAI Evy
12/23/2025, 12:30 PMWhen user provided the city name, please get the weather for that city by calling the `get_weather` function.
For your check availability scenario, adapt it like this:
> "When the user asks to check availability or requests available appointment times, call the check_availability function."
Or more detailed:
> "Whenever the user mentions wanting to check availability, see open times, or asks when appointments are available, immediately invoke the check_availability function with the required parameters."
The key is to include in the prompt explicitly when is the best time to invoke the custom function.AI Evy
12/23/2025, 12:30 PMAI Evy
12/23/2025, 12:30 PMMo
12/23/2025, 12:38 PMMo
12/23/2025, 12:38 PMMo
12/23/2025, 12:38 PMAI Evy
12/23/2025, 12:39 PMAI Evy
12/23/2025, 12:39 PMcall_id will be included automatically if you configured it as a const value with {{call_id}} in your custom function parameters—you don't need to mention it in the prompt. [(1) ]()
The prompt instructions are for telling the LLM when to call the function (e.g., "when user asks to check availability") . The parameters you defined in the form (including call_id as a const value) determine what data gets sent when the function fires.
So:
- **Prompt**: Controls when the function is invoked
- **Parameters (const values) **: Controls what data is sent—these are applied directly without LLM involvement
Since you set call_id with const value {{call_id}}, it will be automatically resolved and included in every request to your webhook endpoint, regardless of what the prompt says.AI Evy
12/23/2025, 12:39 PMAI Evy
12/23/2025, 12:39 PM