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, environment flags.
  • 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 and send-error line.
  • data_collection — The result of a collect-confirm 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.
  • 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 engine-managed namespaces appear only in scripts built around them and are populated for you — see Specialised and engine-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 may hear:
A variable that has not been written yet resolves to an empty value. In tool inputs a missing variable simply becomes empty; in spoken script text an unresolved reference is dropped and noted internally for debugging. {{call.transcript.full}} is expanded first, before any other reference, so you can safely feed it to extraction tools.

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:
The custom, call, contact and temp namespaces accept any field you write. The other namespaces have 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. 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
  • Function and 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, 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 | Send to contact, SMS | Read from contact.

data_collection

The generic collect-confirm-spell field-capture tool exposes just two results your flow reads after it returns. Everything it needs to run the exchange is configured on the tool’s own fields. See Data collection. Written by: Data Collection.

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 Warm 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.

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 engine-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. A legacy shape built for an insurance client’s caller-verification flow. 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. Design docs may use conventional alias names (temp.line for {{temp.string.str_1}}, temp.tone for {{temp.string.str_2}}), but the resolvable reference is always the slot path. 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 emitted by the graph build (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.
  • A write is skipped — the destination may not be 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