> ## Documentation Index
> Fetch the complete documentation index at: https://www.voiceflow.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Steps

> Definitions for steps, with explanations of how each term fits into Voiceflow and links to the related documentation.

## Steps

### API step

Makes an HTTP request from inside a workflow, at a fixed point in the path rather than when a model
decides to. It runs an API tool with its input variables mapped explicitly.

**Also asked as:**
- call our backend at a set point in the flow
- run a saved request without letting the model choose when
- fetch data from our API in the middle of a flow
- make an HTTP request from the canvas

**Related:** [API tool](/docs/resources/glossary/build/tools#api-tool) · [Workflow](/docs/resources/glossary/build/playbooks-workflows#workflow)

**Documented in:** [API step › Using the API step](/docs/documentation/build/steps/api#using-the-api-step) · [API step › Configuration](/docs/documentation/build/steps/api#configuration)

### Buttons step

Presents a fixed set of choices instead of open input, so the next turn is one of a known few. Each
button can carry a URL, and a no-match path handles a reply that matches no label.

**Also asked as:**
- give the visitor a fixed set of choices to click
- present options as clickable buttons in a flow
- a menu of choices instead of free typing
- show a disclaimer with buttons before continuing

**Related:** [Buttons tool](/docs/resources/glossary/build/tools#buttons-tool) · [Card step](#card-step)

**Documented in:** [Buttons › Using the Buttons step](/docs/documentation/build/steps/buttons#using-the-buttons-step) · [Buttons › Configuration](/docs/documentation/build/steps/buttons#configuration)

### Call forward step

Transfers a live voice call to another number, in international format, with optional extensions.

**Also asked as:**
- send the caller on to a different number
- transfer a phone call from the flow
- forward the call to our reception line

**Related:** [Call forward tool](/docs/resources/glossary/build/tools#call-forward-tool) · [Live agent handoff step](#live-agent-handoff-step)

**Documented in:** [Call forward › Configuration](/docs/documentation/build/steps/call-forward#configuration)

### Card step

One rich message: an image, a title, a description and optional buttons.

**Also asked as:**
- one image with a heading, some text and buttons
- show a single rich message with a photo in it
- a product tile with a call to action

**Related:** [Carousel step](#carousel-step) · [Cards tool](/docs/resources/glossary/build/tools#cards-tool)

**Documented in:** [Card › Using the Card step](/docs/documentation/build/steps/card#using-the-card-step) · [Card › Configuration](/docs/documentation/build/steps/card#configuration)

### Carousel step

Several cards the user can browse through in one turn.

**Also asked as:**
- a row of items to swipe through
- show many products side by side
- scrollable set of cards

**Related:** [Card step](#card-step) · [Carousels tool](/docs/resources/glossary/build/tools#carousels-tool)

**Documented in:** [Carousel › Using the Carousel step](/docs/documentation/build/steps/carousel#using-the-carousel-step) · [Carousel › Configuration](/docs/documentation/build/steps/carousel#configuration)

### Code step

Runs JavaScript inline at one point in a workflow. A function is the reusable form of the same idea.
It cannot call external servers; use the API step or a function for that.

**Also asked as:**
- run a bit of JavaScript in the middle of a flow
- inline script without creating a whole function
- do some math or string formatting on a variable

**Related:** [Function](/docs/resources/glossary/build/tools#function) · [Set step](#set-step)

**Documented in:** [Code › Using the Code step](/docs/documentation/build/steps/code#using-the-code-step) · [Code › Limitations](/docs/documentation/build/steps/code#limitations)

### Condition step

Branches a workflow on a rule you write: a variable, a comparison operator and a value per path. The
Operator step is the model-driven alternative.

**Also asked as:**
- branch on a variable's value
- if this then that inside a flow
- send people down different paths based on their data
- go down a different path depending on what the user typed
- split the flow based on the reply
- route people to different branches

**Related:** [Operator step](#operator-step) · [Variable](/docs/resources/glossary/knowledge-and-data#variable)

**Documented in:** [Condition › Using the Condition step](/docs/documentation/build/steps/condition#using-the-condition-step) · [Condition › Configuration](/docs/documentation/build/steps/condition#configuration)

### End step

Ends the conversation, optionally with a final message, static or generated from a prompt.

**Also asked as:**
- finish the chat with a closing message
- close the session at a certain point in the flow
- hang up or end the chat when the flow is done
- the last step of a workflow

**Related:** [End tool](/docs/resources/glossary/build/tools#end-tool)

**Documented in:** [End › Using the End step](/docs/documentation/build/steps/end#using-the-end-step) · [End › Configuration](/docs/documentation/build/steps/end#configuration)

### Function step

Runs a function tool at a fixed point in a workflow: inputs are mapped from variables, outputs are
written back to variables, and the returned path decides where the flow goes next.

**Also asked as:**
- run my custom code at one point in the flow
- map a function's result into variables
- use my custom function at a point in the workflow
- branch on what my code returns

**Related:** [Function](/docs/resources/glossary/build/tools#function) · [Function path](/docs/resources/glossary/build/tools#function-path)

**Documented in:** [Function › Using the Function step](/docs/documentation/build/steps/function#using-the-function-step) · [Function › Configuration](/docs/documentation/build/steps/function#configuration)

### Integration step

Calls a third-party service such as Salesforce, Shopify or Zendesk from a fixed point in a workflow,
with the tool's required inputs filled from variables.

**Also asked as:**
- create a ticket in our helpdesk from the flow
- run a connector action at a set point
- log a Salesforce case from a workflow
- send a Gmail message at a fixed point in the flow

**Related:** [Integration](/docs/resources/glossary/build/tools#integration)

**Documented in:** [Integration › Using the Integration step](/docs/documentation/build/steps/integration#using-the-integration-step)

### Listen step

Waits for the user to say or type something before continuing, and saves the reply to a variable.

**Also asked as:**
- wait for an answer and store what they said
- capture the visitor's reply into a variable
- pause the flow until the user responds

**Related:** [Variable](/docs/resources/glossary/knowledge-and-data#variable) · [Buttons step](#buttons-step)

**Documented in:** [Listen › Using the Listen step](/docs/documentation/build/steps/listen#using-the-listen-step) · [Listen › Configuration](/docs/documentation/build/steps/listen#configuration)

### Live agent handoff step

Hands the conversation to a human in a contact center such as Zendesk, Kustomer, Genesys or Ujet,
with file exchange in both directions and provider-specific settings in a JSON metadata field.

**Also asked as:**
- hand the chat to a person
- escalate to a support rep
- transfer the conversation into our helpdesk
- let a person take over from the bot
- route angry or frustrated customers to a human
- hand off to Zendesk or another contact center

**Related:** [Call forward step](#call-forward-step) · [Transaction safety](/docs/resources/glossary/build/agent-setup#transaction-safety)

**Documented in:** [Live agent handoff › Core functionality](/docs/documentation/build/steps/handoff#core-functionality) · [Live agent handoff › Configuration](/docs/documentation/build/steps/handoff#configuration) · [Live agent handoff › Handing off to Zendesk](/docs/documentation/build/steps/handoff#handing-off-to-zendesk)


### Handoff metadata

The optional JSON settings on the Live agent handoff step — `noteBodyText` (an internal note for the
human agent), `disableFileUpload` (hide the file control), `waitTimeMessage` (how the expected wait
is communicated) and other provider-specific fields — with variables allowed in any value.

**Also asked as:**
- pass an escalation reason to the human agent
- stop customers sending files during a handoff
- tell the user how long they will wait for an agent

**Related:** [Live agent handoff step](#live-agent-handoff-step) · [File uploads](/docs/resources/glossary/deploy#file-uploads)

**Documented in:** [Live agent handoff › Configuration](/docs/documentation/build/steps/handoff#configuration) · [Live agent handoff › disableFileUpload](/docs/documentation/build/steps/handoff#disablefileupload) · [Live agent handoff › waitTimeMessage](/docs/documentation/build/steps/handoff#waittimemessage) · [Live agent handoff › noteBodyText](/docs/documentation/build/steps/handoff#notebodytext) · [Live agent handoff › Provider-specific capabilities](/docs/documentation/build/steps/handoff#provider-specific-capabilities)

### MCP step

Runs one tool from a connected MCP server from inside a workflow, where the flow reaches it, with
inputs mapped explicitly rather than chosen by the agent.

**Also asked as:**
- use a tool from an MCP server inside a flow instead of letting the model decide
- always run one MCP tool at the same place in the process
- run an MCP tool as part of a fixed process
- call a specific MCP tool from the canvas

**Related:** [MCP tool](/docs/resources/glossary/developer-surfaces#mcp-tool) · [Workflow](/docs/resources/glossary/build/playbooks-workflows#workflow)

**Documented in:** [MCP › Using the MCP step](/docs/documentation/build/steps/mcp#using-the-mcp-step) · [MCP tool › In a workflow](/docs/documentation/build/tools/mcp-tool#in-a-workflow)

### Message step

Says something to the user, either scripted (with optional variants) or generated from a prompt.

**Also asked as:**
- send text to the visitor
- have the bot say something at this point
- a generated reply inside a fixed flow

**Related:** [Start message](/docs/resources/glossary/build/agent-setup#start-message)

**Documented in:** [Message › Using the Message step](/docs/documentation/build/steps/message#using-the-message-step) · [Message › Configuration](/docs/documentation/build/steps/message#configuration)

### Operator step

A silent, model-driven branch. Evaluates conditions in natural language and routes accordingly,
producing no output the user sees.

**Also asked as:**
- let the model decide which branch to take
- AI routing without writing comparison rules
- classify the situation and pick a path

**Related:** [Condition step](#condition-step) · [Playbook step](#playbook-step)

**Documented in:** [Operator › Using the Operator step](/docs/documentation/build/steps/operator#using-the-operator-step) · [Operator › Configuration](/docs/documentation/build/steps/operator#configuration)

### Playbook step

Runs a playbook inside a workflow. Exit conditions decide when control returns to the flow, and
*Listen for other triggers* lets events, keypad input and a switch to the agent interrupt it.

**Also asked as:**
- put an AI skill in the middle of a fixed flow
- embed a playbook between two scripted steps
- go from a drawn flow into the agentic part and back
- a scripted flow that then hands over to an AI playbook
- show a disclaimer and buttons first, then let the agent take over

**Related:** [Playbook](/docs/resources/glossary/build/playbooks-workflows#playbook) · [Exit conditions](/docs/resources/glossary/build/playbooks-workflows#exit-conditions) · [Crew](/docs/resources/glossary/build/playbooks-workflows#crew)

**Documented in:** [Playbook step › Using the Playbook step](/docs/documentation/build/steps/playbook#using-the-playbook-step) · [Playbook step › Configuration](/docs/documentation/build/steps/playbook#configuration) · [Playbook step › Exit conditions](/docs/documentation/build/steps/playbook#exit-conditions)

### Set step

Assigns a value to a variable: a literal, a prompt-generated value, or an expression.

**Also asked as:**
- store something in a variable at this point
- update a value during the flow
- set a variable to a value in a workflow
- save a computed value for later steps

**Related:** [Variable](/docs/resources/glossary/knowledge-and-data#variable) · [Code step](#code-step)

**Documented in:** [Set › Using the Set step](/docs/documentation/build/steps/set#using-the-set-step) · [Set › Configuration](/docs/documentation/build/steps/set#configuration)

### Workflow step

Calls another workflow from the current one.

**Also asked as:**
- jump into another flow and come back
- reuse a common sequence
- call one flow from inside another
- chain workflows together

**Related:** [Nesting workflows](/docs/resources/glossary/build/playbooks-workflows#nesting-workflows)

**Documented in:** [Workflow › Using the Workflow step](/docs/documentation/build/steps/workflow#using-the-workflow-step)

### Handoff step

Transfers a conversation from a workflow to a configured live support connection.

**Documented in:** [Handoff step](/docs/documentation/build/steps/handoff)
