The Four Sources
| Source | When it’s available | Example variables |
|---|---|---|
| Contact data | Before the call starts (if the caller matches a contact) | {{contact.first_name}}, {{contact.email}}, {{contact.phone_number}} |
| Pre-call context | Before the call starts (fetched from your API via Dynamic Context) | {{account_tier}}, {{open_tickets}}, {{last_order_status}} |
| Built-in system | Always available | {{current_datetime}}, {{timezone}}, {{direction}}, {{agent_uuid}} |
| Post-call insights | After the call ends (AI extracts from transcript) | {{dyn_appointment_date}}, {{dyn_issue_summary}}, {{dyn_caller_sentiment}} |
Contact Variables
Available automatically when the caller’s phone number matches a contact in your system.| default("fallback") so the greeting still works when no contact is matched.
Available fields: contact.first_name, contact.last_name, contact.full_name, contact.email, contact.phone_number
Pre-Call Context (Dynamic Context)
Expert Mode The platform fetches this from your API before the conversation starts. Configure the endpoint in Call Flow → Before Call. Your API receives the caller’s number and agent ID, and returns JSON. Every field in the response becomes a variable.Built-In System Variables
Always available in every conversation:| Variable | What it contains |
|---|---|
{{current_datetime}} | Current date and time |
{{timezone}} | Agent’s configured timezone |
{{direction}} | inbound or outbound |
{{medium}} | Conversation channel, such as voice, web, or test |
{{agent_uuid}} | The agent’s unique ID |
{{agent_number}} | The phone number the agent is using |
{{contact_number}} | The caller’s phone number |
Post-Call Insight Variables
Available in Notifications after the call ends. AI extracts these from the transcript. Type{{dyn_ followed by a descriptive name:
Where You Can Use Variables
| Location | Contact | Pre-call | System | Post-call |
|---|---|---|---|---|
| Greeting message | Yes | Yes | Yes | No |
| Prompt | Yes | Yes | Yes | No |
| Notification emails | Customer fields only | No | Conversation fields only | Yes |
Notification emails use a separate post-call context. They do not receive live-call variables like
{{contact.first_name}}, Dynamic Context fields, {{current_datetime}}, or {{timezone}} directly. Use notification variables such as {{customer_name}}, {{customer_email}}, {{customer_number}}, {{conversation_date}}, {{conversation_direction}}, {{conversation_summary}}, and {{dyn_*}}.Syntax
Variables use Jinja syntax:{{ variable_name }}
Filters:
{{ contact.first_name | default("there") }}— fallback value{{ current_datetime | datetime("%H:%M") }}— format dates
Debugging Variables
If a variable isn’t working:- Check the source — is the contact matched? Is Dynamic Context returning data?
- Check spelling — variable names are case-sensitive
- Check the fallback — use
| default("...")for variables that might be empty - Test with different scenarios — inbound vs outbound, known vs unknown caller
Next Steps
Conversation Data Flow
See how values move through the conversation lifecycle
Template Syntax
Reference the full Jinja syntax and advanced patterns
Dynamic Context
Set up pre-call data fetching
Notifications
Use post-call variables in email templates
Greeting Messages
Personalize greetings with variables