Skip to main content

Node Types

Every Voice Workflow is built from nodes. Each node is one phase of the call. At any moment only the current node’s prompt and tools are active, which is what keeps the agent on-script as the conversation moves from greet → branch → collect → end. Nodes fall into two families, plus a single terminal node:

Conversational nodes

They own a caller turn — the agent speaks, the caller replies, and the Director extracts variables from what was said. Conversation and Collector nodes are conversational.

Internal nodes

They run instantly with no caller turn. The flow passes straight through them to the next conversational node. Condition, Set Variable, API Request, and Transfer are internal.
A workflow always ends at a Terminal node — End Call. In the builder the palette on the left groups nodes exactly this way: Conversational, Internal, and Terminal.

All node types

NodeFamilyWhat it does
ConversationConversationalSpeaks using a per-node prompt layered over the Global Prompt; can extract and require variables this phase.
CollectorConversationalA prebuilt, transcription-hardened collector for one common value (email, phone, name, address, or DTMF).
ConditionInternalBranches by its outgoing edge conditions — no caller turn, no spoken output.
Set VariableInternalSets a variable from a template string with {{variable}} interpolation.
API RequestInternalCalls an external API (the unified API & Webhook tool) and maps response fields into variables.
TransferInternalBridges the live call to a human or phone number.
End CallTerminalEnds the call with an optional closing message and records an outcome label.
GlobalConversationalA Conversation node marked Global that any interruptible node can jump to, handle the situation, then return.
These are voice workflow nodes. They are unrelated to the chat Flow Editor, which uses Agent / Tool / Team graph nodes.

Conversation

The workhorse node. It speaks to the caller and drives the conversation forward.
SettingWhat it controls
PromptA per-node prompt that is layered over the shared Global Prompt. It governs only this phase of the call.
First MessageAn optional opening line. Only the opening node greets the caller — set the First Message on your Start node.
ExtractThe list of variables to capture from what the caller says during this phase.
RequireVariables that must be captured before the flow may leave this node. The node re-asks until they’re filled.
Model / Voice overrideOptionally run this single node on a different model or voice.
InterruptibleWhether Global nodes are allowed to interrupt this node.
Extract vs. Require: extract tells the Director which variables to listen for this turn; require additionally blocks the transition until those variables are captured. A variable can be extracted without being required.

Collector

A Collector is a prebuilt, transcription-hardened node tuned to reliably capture one common value over the phone, where spelled-out emails and digit strings are easy to mishear. Available collectors:
CollectorCaptures
EmailAn email address.
PhoneA phone number.
NameA caller’s name.
AddressA postal address.
DTMFKeypad digits (touch-tones).
Reach for a Collector instead of a plain Conversation node whenever a phase exists only to capture one of these values cleanly.

Condition

An internal node that routes without speaking. It has a single output, and the branching lives entirely on its outgoing edges — each edge carries its own condition.
  • Equation edges are checked first, deterministically, first-true-wins.
  • An Unconditional edge acts as the “else”.
Because a Condition node takes no caller turn, the flow passes straight through it to the next conversational node. See Transitions, Variables & the Director for how edge conditions are written and resolved.
A Condition node branches by edge conditions, not by true/false handles. To add a branch, draw another edge from its output and give that edge a condition.

Set Variable

An internal node that assigns a variable from a template string, with {{variable}} interpolation so you can compose new values from existing ones — for example setting {{full_name}} from {{first_name}} {{last_name}}. It runs instantly and passes through to the next conversational node.

API Request

An internal node that calls an external service and feeds the result back into the workflow. It reuses the unified API & Webhook tool (api_connect), with three modes — API Endpoints, Webhook, and Free-form Request — and a Response → Variable mapping that lands response fields into workflow variables so a downstream Condition can branch on them. The chosen endpoint’s parameters are filled from workflow variables of the same name (extract-before-call), and on a failed call the node follows its error edge so the call never hangs. See API Request Node for the full configuration, including the Configure API modal, auth options, OpenAPI import, and a worked example.

Transfer

An internal node that bridges the live call to a human agent or a phone number. Use it when the caller needs a person, or when the workflow has done its job and the rest of the call belongs to a human.

End Call

The terminal node. Place it wherever a path through the workflow finishes.
SettingWhat it controls
Closing messageAn optional final line the agent says before hanging up.
OutcomeA label recorded for the run (e.g. booked, not_interested) so you can see how calls ended.
Use distinct outcome labels on different End Call nodes to make your call results easy to read after the fact.

Global nodes

Any Conversation node can be marked Global. A Global node is not part of the linear path — instead it has an enter-condition (a prompt or an equation) and becomes reachable from any interruptible node the moment its enter-condition matches. This is how you handle things that can come up at any point in the call — a caller raising a pricing objection, asking to speak to a human, or going off-script. When the enter-condition matches:
  1. The flow jumps to the Global node, which handles the situation.
  2. When it’s done, the flow returns to the node the caller was on.
A cooldown (measured in turns) prevents a Global node from re-triggering immediately after it returns.
A node only reaches Globals if its Interruptible toggle is on. Turn it off on nodes where an interruption would be disruptive (for example, mid-way through collecting a sensitive value).
Global enter-conditions are written and evaluated like any other condition — see Transitions, Variables & the Director for the resolution order (equation edges, then prompt edges, then global enter-conditions).
Keep each Conversation node focused: one phase = one job. A node that only greets, or only confirms the appointment date, gives the Director a small, clear set of variables to extract and edges to choose from — which makes routing more accurate and the call faster.

Next steps

Transitions, Variables & the Director

How edges, conditions, variables, and the Director move the call between nodes.

API Request Node

Configure outbound API calls and map responses into variables.

The Workflow Builder

Add, connect, and arrange nodes on the canvas.

Workflow Templates

Start from Lead Qualification, Appointment Booking, or Support Triage.