{{current_date}}, that the engine swaps for a real value at the start of every call. It lets one set of instructions say something different on every call - today’s date, the number that dialled, the customer’s name from your campaign.
Most agents never need them. The engine already tells the agent the date, time, day of the week, timezone and who is calling, before the first word. Use a placeholder only when you want the exact wording under your control.
Do I need variables at all?
Probably not for the basics. At the start of every call the engine adds a short block of live facts to your instructions - the date, tomorrow’s date, the next seven days, the time, the timezone, the caller’s number, your number and the call direction. The agent reads it automatically. Nothing to set up, nothing to write. Write a placeholder when the phrasing matters:Every variable
Write the name in double curly braces, exactly as shown. Names are case-sensitive -{{Current_date}} will not match.
Date and time
All of these follow the agent’s timezone setting, and daylight saving is handled for you.
This call
The caller
How does the agent know who is calling?
When a number that has called before dials again, the engine looks up the most recent call that captured a name and passes a short note to the agent:Can I pass my own data into a call?
Yes, on outbound calls. One call - senddynamic_vars with the call:
{{first_name}} and {{appointment_time}} in your instructions.
A campaign - every column in your recipient list becomes a variable with the column’s name, automatically. You do not have to write placeholders at all: the agent is handed each recipient’s details as context for that call. Write naturally (“remind them about their appointment”) and the agent has the values. See Outbound calls.
Inbound calls do not take your own values yet - an inbound caller is a stranger until they say who they are, and the engine already supplies everything known about the call.
Why is being said out loud on my calls?
Because that name does not exist. When the engine does not recognise a placeholder it leaves the text exactly as written, so it ends up in what the agent reads - and the agent may say it. This is deliberate: a visible mistake is easier to find than a silently deleted one. Check the spelling against the tables above, and remember names are case-sensitive and need both pairs of braces:{{current_date}}, not {current_date} or {{Current_Date}}.
Which braces go where
Everything uses double braces except one: the message a caller gets after the call.
The post-call template is the odd one out because it came first and changing it would break every template already saved. If a placeholder is not being replaced, check the brace count before anything else.
When are variables filled in?
Values are read once, so there is no added delay on the call. If something changes minute by minute, do not put it in a variable - put it in your instructions, or fetch it during the call with a custom function.
What we do not have, and why
We are deliberate about this. Every variable is a promise - once it exists, agents depend on it.Good to know
- On inbound calls an unknown name is left in place, so you can see the mistake. On outbound calls and in SMS it is replaced with nothing, so a wrong name leaves a gap in the sentence instead.
- Values are turned into text.
trueandfalseappear as the words “true” and “false”. - Names must be letters, numbers or underscores -
{{first_name}}works,{{first name}}does not. - Both directions get the live-facts block. Only outbound gets your own values.
Related
- Agents - where the timezone and other settings live
- Caller context - what the engine remembers about a returning caller
- Outbound calls - campaigns and recipient columns
- Custom functions - fetch live data during the call instead
- Writing a good agent prompt - where variables fit in your instructions