Workflow Builder
The Workflow Builder is a visual editor inside the dashboard for designing directed acyclic graph (DAG) workflows that control how calls flow through conversation nodes, conditional branches, transfers, and integrations. Assign a workflow to an agent to replace or augment its single-prompt behaviour with structured, multi-step logic.
Prerequisites: Neuratel account with dashboard access
What workflows are
A workflow is a graph of nodes connected by edges. Each node performs a specific action — hold a conversation, evaluate a condition, transfer the call, send an SMS, or call a webhook. The agent traverses the graph in real-time during a call, moving from node to node based on conversation outcomes and branch conditions.
Workflows are separate from agents. You create a workflow in the builder, design its graph, publish it, then assign it to one or more agents from within Agent Studio.
Node types
| Node type | Purpose |
|---|---|
conversation | Run an AI conversation turn with its own system prompt and model |
branch | Evaluate a condition and route to different nodes based on the result |
transfer | Transfer the call to a phone number (blind or warm) |
end_call | Hang up the call with an optional closing message |
sms_send | Send an SMS message to a phone number |
webhook_call | Make an HTTP request to an external endpoint and use the response |
wait | Pause for a specified duration before continuing |
set_variable | Set or update a workflow variable for use in downstream nodes |
knowledge_base | Query a knowledge base and inject results into the conversation |
global | Define fallback behaviour that applies to all nodes (e.g., global interruption handling) |
Creating a workflow
Step 1: Open the Workflow Builder
- Click Workflows in the left sidebar
- Click New Workflow
- Give it a name and optional description
- Click Create
The visual canvas opens. You'll see an empty graph ready for nodes.
Step 2: Build the graph
- Add nodes — click + Add Node and select a node type
- Configure each node — click a node to open its settings panel on the right
- Connect nodes — drag from a node's output handle to another node's input handle
- Set the start node — right-click the first node and select Set as Start
Example graph: inbound support router
Code
The greeting conversation node uses its system prompt to identify the caller's intent and set the intent variable. The detect_intent branch node reads that variable and routes accordingly.
Step 3: Publish
Click Publish in the top-right corner. Publishing freezes the current graph as a version and makes it available for assignment to agents.
You must publish before a workflow can be used by an agent. Draft workflows are editable but inactive.
Step 4: Assign to an agent
- Open Agent Studio for the agent you want to use this workflow
- Go to the Channels section (or agent settings)
- Under Workflow, select your published workflow
- Save the agent
Once assigned, the agent uses the workflow graph to control call flow instead of relying solely on the agent-level system prompt. The agent's brain, voice, and transcriber settings still apply as defaults — individual conversation nodes can override the model and prompt.
Versioning
Workflows follow a draft-to-published lifecycle:
| State | Description |
|---|---|
draft | Editable. Changes to the graph are saved but not active |
published | Frozen. The graph is immutable at this version. Active calls use this version |
Each time you publish, the version number increments. You can view version history and restore previous versions from the workflow's History tab in the builder.
Node configuration reference
conversation
Runs an AI conversation turn. The agent speaks, listens, and responds using the node's instructions.
| Field | Description |
|---|---|
instructions | System prompt for this conversation turn |
provider | LLM provider (overrides agent default) |
model | Specific model to use |
temperature | Response variability 0–1 |
max_turns | Maximum back-and-forth turns before moving to next node |
branch
Evaluates a workflow variable and routes to different nodes based on its value.
| Field | Description |
|---|---|
variable | The variable name to evaluate |
conditions | List of {value, target} pairs |
default_target | Node to go to if no condition matches |
transfer
Transfers the call to a phone number.
| Field | Description |
|---|---|
mode | blind (immediate) or warm (announced) |
destination | E.164 phone number to transfer to |
message | What the agent says before transferring (warm only) |
end_call
Hangs up with an optional closing message.
| Field | Description |
|---|---|
message | What the agent says before disconnecting |
sms_send
Sends an SMS during the call.
| Field | Description |
|---|---|
to | Destination number. Use {{caller_number}} for the caller |
body | Message text. Supports {{variable}} interpolation |
webhook_call
Makes an HTTP request and makes the response available to downstream nodes.
| Field | Description |
|---|---|
url | Endpoint URL. Supports {{variable}} interpolation |
method | HTTP method: GET, POST, PUT, PATCH, DELETE |
headers | Key-value headers |
body | Request body (for POST/PUT/PATCH) |
set_variable
Sets a workflow context variable.
| Field | Description |
|---|---|
name | Variable name |
value | Value to set. Can be a literal or expression |
Best practices
| Practice | Reason |
|---|---|
| Keep graphs shallow (under 10 nodes) | Deep graphs are hard to debug and increase call latency |
| Use conversation nodes for distinct topics | Each node gets a focused prompt, producing better responses |
Set default_target on every branch | Prevents calls from getting stuck if no condition matches |
| Publish before assigning | Draft workflows cannot be used by agents |
| Test with WebRTC before live calls | Use the dashboard Talk button to walk through the graph |
| Use variables for context passing | set_variable nodes let you carry data between conversation turns |
| Choose models per node | Use faster/cheaper models for simple nodes, stronger models where nuance matters |
