Variables and Placeholders
Variables insert live values into agent prompts, start messages, API request payloads, webhook payloads, and post-call email or SMS templates. The available names and missing-value behaviour depend on where the template is used.
Give an agent the current time
Add an IANA timezone variable directly to the system prompt. It is evaluated when the prompt is sent to the model, so the agent receives the live value rather than the text of the placeholder. Replace Europe/London with the timezone the agent should use.
The current date and time is {{current_datetime:Europe/London}}.
Use this value whenever the caller asks for the current date or time.Timezone variables also work in start messages and are recalculated for every new conversation.
{{greeting:Europe/London}}. The time is {{current_time:Europe/London}}. How can I help?Syntax and resolution
Write a variable as two opening braces, its exact name, and two closing braces. Spaces immediately inside the braces are accepted, but using the autocomplete picker avoids spelling mistakes.
- Prompt and start-message variables include timezone-qualified names such as {{current_time:Europe/London}} and flat call-context names such as {{customer_number}}.
- Tool and webhook payload variables use namespaced paths such as {{call.from_number}} or {{summary.sentiment}}.
- Names are case-sensitive in prompts and post-call templates. Request-payload paths are resolved case-insensitively.
- An unavailable value is not guessed. See the final section for the exact missing-value behaviour on each surface.
Any IANA timezone
Voice-agent prompts and start messages can calculate a value in any valid IANA timezone. Put the timezone after a colon, as shown below. Replace the example timezone with the required IANA name; daylight-saving changes are handled automatically.
| Variable | Value | Available in |
|---|---|---|
{{current_date:Europe/London}} | Weekday and date as Tuesday 2026-09-22 | Voice prompts and start messages |
{{current_time:America/New_York}} | 24-hour time with seconds and timezone abbreviation, for example 07:56:00 EDT | Voice prompts and start messages |
{{current_datetime:Asia/Tokyo}} | Weekday, date, time and timezone abbreviation | Voice prompts and start messages |
{{current_weekday:Australia/Sydney}} | Weekday name | Voice prompts and start messages |
{{current_day:Europe/Paris}} | Zero-padded day of month | Voice prompts and start messages |
{{current_month:America/Chicago}} | Zero-padded month number | Voice prompts and start messages |
{{current_month_name:Asia/Kolkata}} | Month name | Voice prompts and start messages |
{{current_year:Pacific/Auckland}} | Four-digit year | Voice prompts and start messages |
{{current_date_iso:Africa/Johannesburg}} | ISO date as YYYY-MM-DD | Voice prompts and start messages |
{{current_time_iso:Atlantic/Reykjavik}} | 24-hour time as HH:MM | Voice prompts and start messages |
{{greeting:Pacific/Honolulu}} | Good morning, Good afternoon or Good evening in the selected timezone | Voice prompts and start messages |
The current time in Tokyo is {{current_datetime:Asia/Tokyo}}.Invalid IANA timezone names are logged and resolve to an empty value rather than using a guessed timezone.
Legacy fixed-region aliases
Use the IANA timezone format above for new agents. These older UK and US aliases remain available so existing prompts and start messages continue to work.
| Variable | Value | Available in |
|---|---|---|
{{current_date_uk}} | Weekday and UK date, for example Tuesday 22/09/2026 | Prompts and start messages |
{{current_date_us}} | Weekday and US date, for example Tuesday 09/22/2026 | Prompts and start messages |
{{current_time_uk}} | UK 24-hour time with seconds, for example 11:51:04 | Prompts and start messages |
{{current_time_us}} | US Eastern 12-hour time with seconds and AM/PM | Prompts and start messages |
{{current_datetime_uk}} | Combined UK weekday, date and 24-hour time | Prompts and start messages |
{{current_datetime_us}} | Combined US Eastern weekday, date and 12-hour time | Prompts and start messages |
{{current_weekday_uk}} | UK weekday name, for example Tuesday | Prompts and start messages |
{{current_day_uk}} | Zero-padded UK day of month, for example 22 | Prompts and start messages |
{{current_month_uk}} | Zero-padded UK month number, for example 09 | Prompts and start messages |
{{current_month_name_uk}} | UK month name, for example September | Prompts and start messages |
{{current_year_uk}} | Four-digit UK year | Prompts and start messages |
{{current_date_iso_uk}} | UK date as YYYY-MM-DD | Prompts and start messages |
{{current_time_iso_uk}} | UK 24-hour time as HH:MM | Prompts and start messages |
{{greeting_uk}} | Good morning, Good afternoon or Good evening in UK time | Prompts and start messages |
{{greeting_us}} | Good morning, Good afternoon or Good evening in US Eastern time | Prompts and start messages |
The additional legacy aliases {{current_date_gb}}, {{current_time_gb}}, and {{current_datetime_gb}} return the same values as their _uk equivalents.
Voice-call variables
These values are populated from the active voice or SIP call. They are not available to a standalone chat-agent session.
| Variable | Value | Available in |
|---|---|---|
{{customer_number}} | Caller for inbound calls; recipient for outbound calls | Voice prompts and start messages |
{{agent_number}} | Called business number inbound; caller ID outbound | Voice prompts and start messages |
{{caller_number}} | SIP From number | Voice prompts and start messages |
{{called_number}} | SIP To number | Voice prompts and start messages |
{{call_direction}} | inbound or outbound | Voice prompts and start messages |
{{call_type}} | Usually sip or web | Voice prompts and start messages |
{{agent_name}} | Name of the agent handling the call | Voice prompts and start messages |
{{call_sid}} | Telephony-provider call identifier when supplied | Voice prompts and start messages |
{{trunk_phone_number}} | Number associated with the SIP trunk | Voice prompts and start messages |
{{unique_call_id}} | Contact-centre reference captured from the configured SIP header | Voice prompts and start messages |
Custom call and campaign variables
Any valid call metadata key can be referenced as a flat prompt or start-message variable. Reserved built-in call variables take priority over metadata with the same name.
- Test and preview calls detect custom placeholders in the prompt and start message and ask you to enter their values before the call starts.
- API and manual outbound calls can supply metadata; each key becomes a prompt variable for that call.
- Browser test links accept a vars JSON object or repeated var.name query parameters.
- Campaign contact fields and contact metadata become variables for that contact's call.
Snake-case metadata also gets a camelCase alias. For example, customer_reference is available as both {{customer_reference}} and {{customerReference}}. When a name is available, {{firstName}} and {{first_name}} contain the first name after removing a common title; {{greetingName}} contains that first name or the fallback value there.
Hi {{greetingName}}, your reference is {{reference}}.Tool request variables
Custom tool payloads use the following namespaces. Tool parameters are chosen by the model from the configured parameter schema; trusted call context overrides a model-supplied value when both use the same key.
| Variable | Value | Available in |
|---|---|---|
{{parameters}} | All values collected for the tool's parameter schema | Tool payloads |
{{parameters.[parameter_name]}} | One configured tool parameter | Tool payloads |
{{call}} | Trusted call context object, including phone aliases and captured context | Tool payloads |
{{call.customer_number}} | Direction-aware customer number | Tool payloads |
{{call.call_sid}} | Provider call identifier when supplied | Tool payloads |
{{metadata}} | Per-call metadata object | Tool payloads |
{{conversation.messages}} | Array of current role and content messages | Tool payloads |
{{tool.name}} | Configured tool name | Tool payloads |
{{tool.timestamp}} | UTC ISO timestamp when the tool executes | Tool payloads |
Wrap a payload path as {{base64(parameters.example)}} to Base64-encode that value. A placeholder used as the whole JSON field preserves arrays, objects, booleans and numbers; a placeholder embedded in text becomes a string.
Webhook request variables
Custom webhook payloads expose the final call, summary, extracted fields and delivery context through these namespaces. Post-conversation values are not available to pre-conversation or during-conversation requests.
| Variable | Value | Available in |
|---|---|---|
{{call}} | Full call object | Custom webhook payloads |
{{call.[field]}} | call_id or id, call_type, call_status, started_at, uk_date_yyyy_mm_dd, ended_at, duration, call_direction, from_number, to_number, customer_number, phone_number_id, error_reason, sip_status_code, call_initiation_type, room_name, participant_id, message and token counts, latency fields, client_cost, feature flags, ending flags, transfer fields, compliance fields, metadata, call_metrics, call_structured_data, created_at and updated_at | Custom webhook payloads |
{{summary}} | Full AI-generated call summary object | Post-conversation webhook payloads |
{{summary.[field]}} | summary_text, caller_name, summary, key_topics, action_items, sentiment, user_satisfaction, resolution_status, disposition, disposition_confidence, requested_callback_time, main_purpose, customer_info, issue_details, resolution_details and call_outcome | Post-conversation webhook payloads |
{{structured.[variable_name]}} | A value extracted using the webhook's structured-data fields | Post-conversation webhook payloads |
{{metadata.[key]}} | Custom metadata supplied when the call was started | Webhook payloads |
{{assistant.assistant_id}} | Agent identifier | Webhook payloads |
{{assistant.user_id}} | Owning user identifier | Webhook payloads |
{{webhook.webhook_id}} | Webhook identifier | Webhook payloads |
{{webhook.webhook_name}} | Configured webhook name | Webhook payloads |
{{webhook.webhook_type}} | Webhook type | Webhook payloads |
{{webhook.executed_at}} | UTC ISO delivery timestamp | Webhook payloads |
{{conversation.messages}} | Array of final role and content transcript messages | Post-conversation webhook payloads |
{{conversation.text}} | Transcript flattened into Agent and Customer lines | Post-conversation webhook payloads |
{{handoff}} | Queue-handoff object containing event, queue, providerCallId, sipHeaders, assistantId, callLogId, fromNumber, toNumber, roomName, transcript, target and timestamp | Queue-handoff webhook payloads |
{{handoff.queue}} | Selected contact-centre queue name | Queue-handoff webhook payloads |
{{handoff.providerCallId}} | Captured provider call identifier | Queue-handoff webhook payloads |
Recording URLs are not exposed
Post-call email and SMS variables
Email subjects, email bodies, recipient addresses, SMS recipients and SMS bodies use flat placeholders. Summary-derived values are available only after the conversation summary has been generated.
| Variable | Value | Available in |
|---|---|---|
{{call_duration}} | Duration in seconds | Email and SMS templates |
{{call_status}} | Final technical call status | Email and SMS templates |
{{call_type}} | Call type, with web as the fallback | Email and SMS templates |
{{from_number}} | From number | Email and SMS templates |
{{customer_phone}} | Direction-aware customer number | Email and SMS templates |
{{to_number}} | To number | Email and SMS templates |
{{call_direction}} | Call direction | Email and SMS templates |
{{started_at}} | Start timestamp as YYYY-MM-DD HH:MM:SS | Email and SMS templates |
{{ended_at}} | End timestamp as YYYY-MM-DD HH:MM:SS | Email and SMS templates |
{{summary}} | Summary text | After-conversation email and SMS templates |
{{sentiment}} | positive, neutral, negative or unknown | After-conversation email and SMS templates |
{{resolution_status}} | Resolution status | After-conversation email and SMS templates |
{{disposition}} | Call disposition | After-conversation email and SMS templates |
{{disposition_confidence}} | high, medium or low | After-conversation email and SMS templates |
{{user_satisfaction}} | high, medium, low or unknown | After-conversation email and SMS templates |
{{main_purpose}} | Main purpose of the call | After-conversation email and SMS templates |
{{call_outcome}} | Short outcome sentence | After-conversation email and SMS templates |
{{key_topics_list}} | Comma-separated key topics | After-conversation email and SMS templates |
{{action_items_list}} | Comma-separated action items | After-conversation email and SMS templates |
{{caller_name}} | Caller's stated name | After-conversation email and SMS templates |
{{customer_name}} | Customer name alias | After-conversation email and SMS templates |
{{customer_email}} | Extracted contact information; also valid in recipient fields | After-conversation email and SMS templates |
{{customer_location}} | Extracted customer location | After-conversation email and SMS templates |
{{customer_account}} | Extracted customer account details | After-conversation email and SMS templates |
{{issue_description}} | Problem description | After-conversation email and SMS templates |
{{issue_urgency}} | Issue urgency | After-conversation email and SMS templates |
{{issue_category}} | Issue category | After-conversation email and SMS templates |
{{symptoms_list}} | Comma-separated symptoms | After-conversation email and SMS templates |
{{follow_up_required}} | yes, no or unknown | After-conversation email and SMS templates |
{{steps_taken_list}} | Comma-separated steps taken | After-conversation email and SMS templates |
{{recommendations_list}} | Comma-separated recommendations | After-conversation email and SMS templates |
{{next_steps_list}} | Comma-separated next steps | After-conversation email and SMS templates |
{{[custom_variable]}} | AI-extracted value configured on the action or inferred from an undeclared placeholder | After-conversation email and SMS templates |
List values use the _list suffix and are inserted as comma-separated text. The valid names are {{key_topics_list}}, {{action_items_list}}, {{symptoms_list}}, {{steps_taken_list}}, {{recommendations_list}}, and {{next_steps_list}}; {{key_topics}} and {{action_items}} are not post-call template variables.
Availability and missing values
- Clock values are calculated at execution time, not when the template is saved.
- Voice-call values are empty when the underlying SIP or call context does not provide them. Unknown placeholders in a spoken start message are removed before speech.
- Before and during-conversation post-call actions cannot use summary-derived or AI-extracted values because the final conversation does not yet exist.
- In a custom tool or webhook JSON payload, a missing whole-field placeholder becomes null. A missing placeholder embedded inside text becomes an empty string.
- Unknown prompt placeholders remain visible in a system prompt, so verify spelling and supply every custom value. Test calls prompt for custom values they detect.