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.

System prompt example
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.

Start message example
{{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.

VariableValueAvailable in
{{current_date:Europe/London}}Weekday and date as Tuesday 2026-09-22Voice prompts and start messages
{{current_time:America/New_York}}24-hour time with seconds and timezone abbreviation, for example 07:56:00 EDTVoice prompts and start messages
{{current_datetime:Asia/Tokyo}}Weekday, date, time and timezone abbreviationVoice prompts and start messages
{{current_weekday:Australia/Sydney}}Weekday nameVoice prompts and start messages
{{current_day:Europe/Paris}}Zero-padded day of monthVoice prompts and start messages
{{current_month:America/Chicago}}Zero-padded month numberVoice prompts and start messages
{{current_month_name:Asia/Kolkata}}Month nameVoice prompts and start messages
{{current_year:Pacific/Auckland}}Four-digit yearVoice prompts and start messages
{{current_date_iso:Africa/Johannesburg}}ISO date as YYYY-MM-DDVoice prompts and start messages
{{current_time_iso:Atlantic/Reykjavik}}24-hour time as HH:MMVoice prompts and start messages
{{greeting:Pacific/Honolulu}}Good morning, Good afternoon or Good evening in the selected timezoneVoice prompts and start messages
Parameterized timezone example
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.

VariableValueAvailable in
{{current_date_uk}}Weekday and UK date, for example Tuesday 22/09/2026Prompts and start messages
{{current_date_us}}Weekday and US date, for example Tuesday 09/22/2026Prompts and start messages
{{current_time_uk}}UK 24-hour time with seconds, for example 11:51:04Prompts and start messages
{{current_time_us}}US Eastern 12-hour time with seconds and AM/PMPrompts and start messages
{{current_datetime_uk}}Combined UK weekday, date and 24-hour timePrompts and start messages
{{current_datetime_us}}Combined US Eastern weekday, date and 12-hour timePrompts and start messages
{{current_weekday_uk}}UK weekday name, for example TuesdayPrompts and start messages
{{current_day_uk}}Zero-padded UK day of month, for example 22Prompts and start messages
{{current_month_uk}}Zero-padded UK month number, for example 09Prompts and start messages
{{current_month_name_uk}}UK month name, for example SeptemberPrompts and start messages
{{current_year_uk}}Four-digit UK yearPrompts and start messages
{{current_date_iso_uk}}UK date as YYYY-MM-DDPrompts and start messages
{{current_time_iso_uk}}UK 24-hour time as HH:MMPrompts and start messages
{{greeting_uk}}Good morning, Good afternoon or Good evening in UK timePrompts and start messages
{{greeting_us}}Good morning, Good afternoon or Good evening in US Eastern timePrompts 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.

VariableValueAvailable in
{{customer_number}}Caller for inbound calls; recipient for outbound callsVoice prompts and start messages
{{agent_number}}Called business number inbound; caller ID outboundVoice prompts and start messages
{{caller_number}}SIP From numberVoice prompts and start messages
{{called_number}}SIP To numberVoice prompts and start messages
{{call_direction}}inbound or outboundVoice prompts and start messages
{{call_type}}Usually sip or webVoice prompts and start messages
{{agent_name}}Name of the agent handling the callVoice prompts and start messages
{{call_sid}}Telephony-provider call identifier when suppliedVoice prompts and start messages
{{trunk_phone_number}}Number associated with the SIP trunkVoice prompts and start messages
{{unique_call_id}}Contact-centre reference captured from the configured SIP headerVoice 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.

Custom-variable example
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.

VariableValueAvailable in
{{parameters}}All values collected for the tool's parameter schemaTool payloads
{{parameters.[parameter_name]}}One configured tool parameterTool payloads
{{call}}Trusted call context object, including phone aliases and captured contextTool payloads
{{call.customer_number}}Direction-aware customer numberTool payloads
{{call.call_sid}}Provider call identifier when suppliedTool payloads
{{metadata}}Per-call metadata objectTool payloads
{{conversation.messages}}Array of current role and content messagesTool payloads
{{tool.name}}Configured tool nameTool payloads
{{tool.timestamp}}UTC ISO timestamp when the tool executesTool 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.

VariableValueAvailable in
{{call}}Full call objectCustom 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_atCustom webhook payloads
{{summary}}Full AI-generated call summary objectPost-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_outcomePost-conversation webhook payloads
{{structured.[variable_name]}}A value extracted using the webhook's structured-data fieldsPost-conversation webhook payloads
{{metadata.[key]}}Custom metadata supplied when the call was startedWebhook payloads
{{assistant.assistant_id}}Agent identifierWebhook payloads
{{assistant.user_id}}Owning user identifierWebhook payloads
{{webhook.webhook_id}}Webhook identifierWebhook payloads
{{webhook.webhook_name}}Configured webhook nameWebhook payloads
{{webhook.webhook_type}}Webhook typeWebhook payloads
{{webhook.executed_at}}UTC ISO delivery timestampWebhook payloads
{{conversation.messages}}Array of final role and content transcript messagesPost-conversation webhook payloads
{{conversation.text}}Transcript flattened into Agent and Customer linesPost-conversation webhook payloads
{{handoff}}Queue-handoff object containing event, queue, providerCallId, sipHeaders, assistantId, callLogId, fromNumber, toNumber, roomName, transcript, target and timestampQueue-handoff webhook payloads
{{handoff.queue}}Selected contact-centre queue nameQueue-handoff webhook payloads
{{handoff.providerCallId}}Captured provider call identifierQueue-handoff webhook payloads

Recording URLs are not exposed

Webhook payloads and template variables do not include a call-recording URL. Recordings remain available through authenticated Cloudax call experiences and recording APIs where the caller has permission.

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.

VariableValueAvailable in
{{call_duration}}Duration in secondsEmail and SMS templates
{{call_status}}Final technical call statusEmail and SMS templates
{{call_type}}Call type, with web as the fallbackEmail and SMS templates
{{from_number}}From numberEmail and SMS templates
{{customer_phone}}Direction-aware customer numberEmail and SMS templates
{{to_number}}To numberEmail and SMS templates
{{call_direction}}Call directionEmail and SMS templates
{{started_at}}Start timestamp as YYYY-MM-DD HH:MM:SSEmail and SMS templates
{{ended_at}}End timestamp as YYYY-MM-DD HH:MM:SSEmail and SMS templates
{{summary}}Summary textAfter-conversation email and SMS templates
{{sentiment}}positive, neutral, negative or unknownAfter-conversation email and SMS templates
{{resolution_status}}Resolution statusAfter-conversation email and SMS templates
{{disposition}}Call dispositionAfter-conversation email and SMS templates
{{disposition_confidence}}high, medium or lowAfter-conversation email and SMS templates
{{user_satisfaction}}high, medium, low or unknownAfter-conversation email and SMS templates
{{main_purpose}}Main purpose of the callAfter-conversation email and SMS templates
{{call_outcome}}Short outcome sentenceAfter-conversation email and SMS templates
{{key_topics_list}}Comma-separated key topicsAfter-conversation email and SMS templates
{{action_items_list}}Comma-separated action itemsAfter-conversation email and SMS templates
{{caller_name}}Caller's stated nameAfter-conversation email and SMS templates
{{customer_name}}Customer name aliasAfter-conversation email and SMS templates
{{customer_email}}Extracted contact information; also valid in recipient fieldsAfter-conversation email and SMS templates
{{customer_location}}Extracted customer locationAfter-conversation email and SMS templates
{{customer_account}}Extracted customer account detailsAfter-conversation email and SMS templates
{{issue_description}}Problem descriptionAfter-conversation email and SMS templates
{{issue_urgency}}Issue urgencyAfter-conversation email and SMS templates
{{issue_category}}Issue categoryAfter-conversation email and SMS templates
{{symptoms_list}}Comma-separated symptomsAfter-conversation email and SMS templates
{{follow_up_required}}yes, no or unknownAfter-conversation email and SMS templates
{{steps_taken_list}}Comma-separated steps takenAfter-conversation email and SMS templates
{{recommendations_list}}Comma-separated recommendationsAfter-conversation email and SMS templates
{{next_steps_list}}Comma-separated next stepsAfter-conversation email and SMS templates
{{[custom_variable]}}AI-extracted value configured on the action or inferred from an undeclared placeholderAfter-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.