Skip to main content

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 context
  • contact — 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.
Scheduling
  • calendar — Booking inputs, availability and booking results.
  • timezone — The caller’s resolved timezone and verification state.
  • callback — The arranged-callback record and outcome.
Messaging and data capture
  • 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.
Transfers and consent
  • 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.
Verification
  • auth_check — The outcome of a caller-verification check.
Deployment-specific
  • 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.
Advanced — managed automatically
  • 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.
These specialised and platform-managed namespaces appear only in scripts built around them and are populated for you — see Specialised and platform-managed namespaces.

Variable notation

The user-facing notation is:
Examples:
  • {{contact.first_name}}
  • {{contact.email}}
  • {{calendar.booking_time_raw}}
  • {{insurance.claim.response_status}}
  • {{custom.claim_number}}
The first segment is the namespace; everything after it is the field path. The namespace must start with a letter or underscore, and the path must have at least two segments — a single token such as {{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.
If the values exist, the caller hears:
A variable that has not been written yet has no value. In tool inputs it simply becomes empty. In spoken script text, the reference is left in place as written and a note is added to the call’s system notes. The caller can hear the raw reference read out, so any variable used in a spoken line must be written before that line, or seeded with a speakable fallback. {{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:
Only the 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 the custom namespace for values that do not belong to a fixed system namespace.
  • {{custom.claim_number}}
  • {{custom.customer_sentiment}}
  • {{custom.appointment.datetime}}
Custom paths are free-form and can be nested — no setup is needed, they are empty until a step writes them, and they are scoped to the call. Installed custom variable types also surface here as {{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.
The left side is where the value is stored; the right side is where to find it in the response. An empty source path stores the whole response body.

Code step examples

Read a value:
Write a value (the assignment persists immediately, so the next line or step reads the new value):
Write a custom value:
Guard reads that might be empty with 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

A written value has nothing in it until the step that populates it runs. Always place the populating step before any step that reads the value.

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 custom for 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: custom is free-form, while the system namespaces have a fixed set of fields.

Best practices

  1. Use {{...}} notation everywhere — in scripts, tool maps and Code Steps.
  2. Use descriptive custom paths — {{custom.claim_number}} rather than {{custom.value}}.
  3. Keep response maps small — store only the values a later step needs.
  4. Store full responses only when needed — when several later steps read different fields from them.
  5. Populate before you read — run the writing step before any step that references the value.

Next Steps