Overview
This is the complete reference to every variable available during a call: the values your script, tools, conditions, response maps and Code Steps can read and write, and how tools populate them. Each field is listed with its data type and a realistic example value. A variable reference always uses double-brace notation —{{namespace.path}} — and you insert one by typing / in any supported field. If you are new to variables, read Variable notation first, then jump to the namespace you need from At a glance.
At a glance
Values are grouped into namespaces. The first part of every reference is the namespace; everything after it is the field path. Caller and call contextcontact— Caller identity and contact-record fields.call— Call-session facts: id, live transcript, current date and time, call direction and environment flags, the script’s guidelines, and whether the last scripted line was heard.custom— Your free-form values and the home of your custom variables.
calendar— Booking inputs, availability and booking results.timezone— The caller’s resolved timezone and verification state.callback— The arranged-callback record and outcome.
sms— Outbound text, collected email or value, and send-error line.data_collection— The result of a Data Collection field capture.surveys— Survey question inputs and the completed-question result.webhook— The landing spot for a webhook response.
handoff— How the call’s handoff attempts to a person turned out.route— The caller’s confirmed service location and the routing endpoint that covers it.analysis— In-call values that post-call analysis must not override, such as recording consent.
auth_check— The outcome of a caller-verification check.
auth— Caller-identity details captured for verification, read by the Auth | Check tool.insurance— Policy, claim, FNOL and routing values for insurance deployments.marketing— Disposition and lead-capture state for the Voxworks demo line.
temp— Per-turn scratch slots maintained inside graph flows.graph— The current position and bookkeeping within an advanced graph flow.relationship— Rapport signals a graph flow reads to adapt how it speaks.
Variable notation
The user-facing notation is:{{contact.first_name}}{{contact.email}}{{calendar.booking_time_raw}}{{insurance.claim.response_status}}{{custom.claim_number}}
{{total}} is treated as ordinary text, not a variable.
Do not put spaces inside the braces: write {{contact.first_name}}, never {{ contact.first_name }}. Insert references by typing / in any supported field to pick from the list, or type them by hand.
Reading variables
Use a variable reference inside text where you want the value inserted.{{call.transcript.full}} is expanded first, before any other reference, so you can safely feed it to extraction tools.
A variable’s value can itself contain references or text functions. They are filled in too, up to two levels deep. For example, you can store a reusable sentence such as Our office is open {{custom.policy.opening_hours_spoken}}. in a custom variable and use that variable in a script line.
Writing variables
Tools that write values expose a field such as Destination, Response Map or Output Map. Point it at a variable reference using the same notation:custom namespace accepts any field you write. Every other namespace — including call, contact and temp — has a fixed set of fields (the ones listed below): writing to a field that is not part of the namespace is ignored, and a later step reads that reference back empty. The call.transcript and call.step values are read-only and cannot be written at all. If you need a new field in one of the fixed namespaces, speak to the Voxworks team for further custom configuration.
Custom variables
Use thecustom namespace for values that do not belong to a fixed system namespace.
{{custom.claim_number}}{{custom.customer_sentiment}}{{custom.appointment.datetime}}
{{custom.<type_name>.<field_path>}}, and the whole instance is available as {{custom.<type_name>}}. Always keep the custom. prefix — {{type_name.field}} on its own will not resolve.
See Custom variables and Custom variable types for how these are defined and linked to contacts.
Nested reads
Some variables hold a whole object, such as a webhook response or a booking record. Read a nested field by adding a dotted path immediately after the reference — the stored value is resolved first, then the suffix digs into it.Response maps
A response map has the destination variable on the left and the source path (into the tool’s response) on the right.Code step examples
Read a value:str({{custom.value}} or ""). See the Code Step docs for the full run() contract.
Where variables work
Variables are substituted in:- Voice step scripts
- Condition next-step logic
- Tool input maps and response maps
- Code Step logic
- SMS message content
- LLM tool response maps and destinations
Variable lifecycle
Namespace reference
Every namespace available in a call is listed below with its fields, data types and example values. The Written by note under each namespace shows how the values are populated.contact
The caller’s contact record. Seeded at call start from the matched contact, and readable throughout the call. Fields backed by a stored record persist back to the contact after the call.
Written by: Seeded at call start, then updated when you map a capture tool’s result onto a contact field (Data Collection, SMS email collection) or when the caller confirms a correction to their name or timezone during the call.
call
Call-session facts kept up to date automatically for the current call. The date and time fields are computed fresh on every read in your team timezone, so a long call that crosses midnight sees the new values.
Written by: Maintained automatically by the platform for the call session.
custom
Your own per-call values plus the home of your custom variables. Any {{custom.<path>}} of two or more segments works without any setup — write to it from a Code Step, an LLM tool or a webhook and read it back later. Installed custom variable types appear under this namespace in the / picker as {{custom.<type_name>.<field>}}. See Custom variables and Custom variable types.
Written by: You — via Code Step, LLM Custom, or any tool with a {{custom.…}} destination. Custom variable types are seeded from your team’s records.
calendar
Booking inputs and the availability and booking results produced by the calendar tools. The inputs marked Input are set on the booking tool’s own fields; everything else is written back for your confirmations and routing. Common calendar settings live on Calendar tools.
Written by: Book Calendar Appointment | Pro.
timezone
Timezone verification state. Seeded from the contact’s stored timezone at call start, then updated as the caller’s location is confirmed. Use {{timezone.resolved_iana}} as the zone the caller’s times are quoted in.
Written by: Book Calendar Appointment | Pro, when its timezone check is enabled.
callback
State for arranging a callback. The record object is written every time the tool finishes and carries everything a person or the assistant needs to make the callback. Its input fields are configured on the tool.
Written by: Arrange Callback | (BETA).
sms
SMS results. {{sms.message}} is the outbound text, {{sms.email}} is the address collected and validated by the round-trip email tool, {{sms.value}} is the value collected by SMS | Get Value, and {{sms.send_error_spoken}} gives the agent a natural line to say if a send fails. The email tool’s opening, body and fallback lines are configured on the tool itself. See Send SMS and Read SMS.
Written by: SMS | Get Valid Email, SMS | Get Value, SMS | Send to contact, SMS | Read from contact.
data_collection
The Data Collection tools expose their result in this namespace. Everything they need to run the exchange is configured on the tool’s own fields. See Data Collection - v0.2 and the single-field Data Collection tools.
Written by: Data Collection - v0.2, Data Collection - Name, Data Collection - Date of Birth, Data Collection - Phone, Data Collection - Alphanumeric.
surveys
State for the Survey tools. The question configuration arrives as a custom variable instance, and the completed question is written back to {{surveys.output_obj}}, which the tool maps onto the same custom variable instance. The per-question capture is handled for you.
Written by: Survey and Survey (graph).
webhook
The conventional landing spot for a Send Webhook response. Map the response with an empty path in the tool’s Response Map to capture the whole body here, then dig into it with a dotted suffix. See Send Webhook.
Written by: Send Webhook.
handoff
The outcome of the call’s handoff attempts, so a script can tell why a transfer to a person did not work and respond honestly instead of guessing. Written after every attempt, whether it came from Live Handoff, the Handoff tool, or a handoff triggered on a live call. Route on {{handoff.last.status}}.
Written by: The platform, at the end of each handoff attempt.
route
The caller’s confirmed service location and the routing endpoint that covers it. Route on {{route.status}}, and put {{route.endpoint_id}} in a Handoff step’s Routing Endpoint to dial it. See Routing | Service Location.
Written by: Routing | Service Location - v0.2.
The namespace also holds the tool’s own working fields. They are private to the tool.
analysis
Values captured during the call that post-call analysis must not override.
Written by: Your script — a Data Collection step, a Code Step, or any tool with an {{analysis.…}} destination.
auth_check
The result set written by the verification tool after it compares the caller’s answers against the record. Route on {{auth_check.verified}} or {{auth_check.status}}. See Auth Check.
Written by: Auth | Check.
Specialised and platform-managed namespaces
These namespaces are not general-purpose variables you author — they belong to specific flow types and are populated for you, so you will only see them in the/ picker on a script that was built around them. auth and insurance back specific customer deployments (identity verification, policy and claim lookup, First Notice of Loss lodgement); marketing is the Voxworks demo line; and temp, graph and relationship are maintained automatically inside advanced graph-based flows. Speak to the Voxworks team for further custom configuration.
auth
Caller-identity details captured before verification, consumed as the inputs of the Auth | Check tool.
Written by: Code Step / LLM | Data extraction steps in the flow, ahead of Auth | Check.
insurance
The namespace behind an insurance deployment: policy and contact details, claim lookup results, First Notice of Loss (FNOL) draft identifiers, incident/vehicle/complaint capture, intent-menu state and sub-organisation routing metadata. Backed by the claims-system integration.
Written by: FiveSigma | Get Claim and FiveSigma | Post FNOL, plus the deployment’s own policy lookup and capture steps (Code Step / LLM | Data).
marketing
State for the Voxworks marketing/demo-line flow: booking intent, lead-capture progress, recovery fire-counters and the final call disposition.
Written by: Code Steps and LLM | Custom classification steps in the Voxworks demo-line flow.
temp
Fixed platform scratch slots for per-turn state in graph flows — ten slots each of boolean, string, number and object. You use the existing slots; you cannot add fields to this namespace.
Written by: Code Steps in graph flows (Select & Route, Line-Select and similar).
graph
Generic graph-runtime state — the current position within an advanced graph flow, visit and peak bookkeeping, intent-detour return addresses and line-rotation and tone counters. Flow-agnostic and maintained for you.
Written by: The Code Steps in graph flows (Select & Route, Line-Select and similar).
relationship
The relationship-dimension scores and their observation inputs that graph-method flows use to adapt how they speak — comfort, engagement and trust scores, per-turn observations, and the qualitative reads injected into prompts.
Written by: The relationship-update and relationship-read Code Steps in graph flows.
Common issues
- A variable does not resolve — check the spelling, namespace and path.
- The caller hears a raw
{{...}}reference — the variable was never written before the line was spoken. Make sure the step that writes it runs first, or seed it with a fallback value that reads naturally. - A write is skipped — the destination is not a valid variable reference, or the field is not part of a fixed namespace (see Writing variables).
- A fixed namespace rejects a field — that field is not part of the namespace; use
customfor ad-hoc values. - A nested field is empty — confirm the stored value is actually an object and the suffix matches the response shape.
{{custom.some.path}}works but{{contact.some.path}}does not — this is expected:customis free-form, while the system namespaces have a fixed set of fields.
Best practices
- Use
{{...}}notation everywhere — in scripts, tool maps and Code Steps. - Use descriptive custom paths —
{{custom.claim_number}}rather than{{custom.value}}. - Keep response maps small — store only the values a later step needs.
- Store full responses only when needed — when several later steps read different fields from them.
- Populate before you read — run the writing step before any step that references the value.
Next Steps
- Custom variables — Define your own typed, per-contact data.
- Tools overview — See every tool and the variables it reads and writes.
- Tool steps — Pass variables to tools and map their results back.
- Data collection — Capture, confirm and store values from the caller.

