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

# Steps Overview

> Steps are the building blocks of every flow. Each step represents a single action in your conversation — speaking to the user, executing logic, calling a service, or navigating to another flow.

## Step Types

Voxworks supports three step types:

| Type      | Purpose                               | Interactive | Awaits Response | Interruptible |
| --------- | ------------------------------------- | ----------- | --------------- | ------------- |
| **Voice** | Speak to user and listen for response | Yes         | Yes             | Yes           |
| **Tool**  | Call external services                | No          | No              | No            |
| **Flow**  | Navigate to a sub-flow                | No          | Depends         | No            |

***

## Common Step Properties

All steps share these properties:

| Property | Description                    | Default  |
| -------- | ------------------------------ | -------- |
| `id`     | Unique identifier for the step | Required |
| `type`   | Step type (voice, tool, flow)  | Required |

Voice and Tool steps also have a `script` property for spoken output.
Flow steps do not have a script, they simply navigate directly to the sub-flow.

***

## Step-Specific Settings

Each step can configure conversation dynamics:

| Setting            | Options                                       | Description                                      |
| ------------------ | --------------------------------------------- | ------------------------------------------------ |
| `eagerness`        | keen, normal, patient                         | How quickly to respond after user stops speaking |
| `thinking_effort`  | fast, normal, deep                            | LLM reasoning depth for this step                |
| `silence_response` | hurried, patient, extremely patient, infinite | How long to wait before prompting silent users   |

See [Conversation Dynamics](/conversation-dynamics/overview) for details on these settings.

***

## Voice Steps

Voice steps are the primary interactive component. They:

* Speak a message to the user
* Wait for the user's response
* Evaluate conditions to determine the next step

```text theme={null}
Voice Step: "Would you like to schedule a demo?"
   Condition: "User agrees" → Booking step
   Condition: "No" → Thank user and say goodbye step
   Condition: "Otherwise" → Loop back to current step
```

It's recommended to use "Otherwise" to loop back to the current step, allowing the assistant to ensure step conditions have been met before continuing.

[Learn more about Voice Steps →](/flows/steps-voice)

***

## Tool Steps

Tool steps call external services. They:

* Execute integrations (SMS, calendar, webhooks)
* Return results that can be used in conditions
* Can map outputs to variables

```text theme={null}
Tool Step: Check calendar availability
   Condition: true (slots available) → Speak options step
   Condition: false (no slots) → Apologize and offer alternative
```

[Learn more about Tool Steps →](/flows/steps-tool)

***

## Flow Steps

Flow steps navigate to sub-flows. They:

* Invoke another flow as a module
* Variables are automatically available in the sub-flow
* Return success or failure to the parent flow

[Learn more about Flow Steps →](/flows/steps-flow)

***

## Step Execution Order

Steps execute in sequence unless conditions redirect:

1. **Enter step** — Step settings are applied (eagerness, idle, etc.)
2. **Execute** — Step-specific action runs
3. **Evaluate** — Conditions are checked (for voice/tool steps)
4. **Navigate** — Move to the next step based on conditions

***

## Conditions

Most steps include conditions that determine navigation:

| Step Type | Condition Basis                  |
| --------- | -------------------------------- |
| Voice     | AI analysis of user response     |
| Tool      | Boolean result of tool execution |
| Flow      | Result returned from sub-flow    |

***

## Best Practices

1. **Keep steps focused** — Each step should do one thing
2. **Use clear scripts** — Write naturally, as you would speak
3. **Plan your conditions** — Consider all possible user responses
4. **Set appropriate dynamics** — Adjust eagerness and thinking for each step
5. **Test step transitions** — Verify conditions work as expected

***

## Next Steps

* [Voice Steps](/flows/steps-voice) — Design interactive conversations
* [Tool Steps](/flows/steps-tool) — Integrate external services
* [Flow Steps](/flows/steps-flow) — Navigate between flows
