We no longer recommend Workflows for new builds. Prefer Assistants or Squads depending on complexity. See Assistants and Squads. This page is retained for legacy reference.
Why We’ve Moved Away from Workflows
While the Workflows product is fully built, we’ve found that current AI systems aren’t yet capable of acting as truly autonomous agents that can:
In contrast, the Squads pattern has consistently led to better results for customers. We’re now focusing on improving the ergonomics and developer experience around Squads to make this approach even more effective.
Workflows is a visual builder designed for creating robust, deterministic conversation flows. It empowers developers and low-code builders to design agents through an intuitive interface representing interactions via nodes and edges.

Key Benefits:
Common Use Patterns:
Workflows consists of node and edges. There are multiple types of nodes and a Workflow must have a start node, which is the main entry point for the conversation flow.
By default a Conversation Node is the start node, but it can be changed to a different type of note. Start nodes cannot be deleted and a Workflow must have exactly one.
The Conversation Node is the default type of node. It’s highly configurable and it’s the main building block for conversation flows.

Configuration options
First Message: Specify the initial spoken message when entering the node. This configuration is helpful if developers want the agent to speak first without waiting for user to say something.
Prompt: Provide detailed instructions guiding agent responses and conversation direction, including response style and content. The prompt is the most important part of the Conversation Node. Building reliable and high-quality voice agents heavily depend on the quality of the prompt supplied.
Model/Voice/Transcriber Settings: Individually configure the AI model, voice, and transcription services per node. This is similar to configuring Single Prompt Assistants.
Extract Variables: Extract Variables lets users gather/extract variables from a conversation. These variables can be used as dynamic variables for the rest of the workflow via liquid syntax {{ variable_name }}. Variables can be configured by defining variable name and data type (String, Number, Boolean, Integer), writing a clear extraction prompt, and setting enums for String-type variables to constrain values.

The API Request Node allows developers to make HTTP Requests to their API, custom endpoints, or automation services like Make, n8n, or Zapier. Developers can configure it to perform GET and POST requests. Request bodies must be formatted in JSON Schema (the body UI builder automatically does this).

Transfer calls to another phone number, including human agents or specialized voice agents.
Developers can specify a phone number destination and a transfer plan, which lets them specify a message or a summary of the call to the person or agent picking up in the destination number before actually connecting the caller.

Terminal node to end calls explicitly. Configure with an optional closing message (via the first message field) to users before termination.

Workflows without a defined End Call Node risk unintended minutes usage. Ensure all workflows have clear termination points to ensure the call eventually ends.
Integrate existing Tools library functionalities. Select tools previously created for use within Workflows, maintaining consistency with Assistant configurations.

Allows routing to this node from any point in the workflow, commonly used for escalation purposes e.g. when user wants to jump from the pre-determined conversation flow to speaking to a human to address specific needs. This feature can be enabled via the Global toggle; developers must specify an Enter Condition that defines the condition for routing to the Global Node.
A node is connected to another node via an edge. Developers can specify a condition (within the edge) that must be true (satisfied) for the conversation to flow from one node to the next.

Written in plain language and evaluated by LLMs:
For precise control using variables:
Mix logical operators with variables:
Best practices for conditions:
A useful combination of features is to extract variables as enums and use them to branch conversation flows based on a specific set of tasks that the agent can help users with.
Ready to start building? Check out these resources: