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

# Builder Steps

> How the Automation builder works, and a map of every step you can add — what each one does and when to use it.

## What is this?

An automation is a chain of **steps** — small building blocks that each do one job, like *send a message*, *ask a question*, *check something*, or *update a contact*. You drag steps onto the canvas in the Automation builder and connect them with lines. When the automation runs, it starts at the **trigger** and follows the lines from step to step.

Think of it like a recipe: the trigger says **when** to start cooking, and the steps say **what to do**, in order.

\[SCREENSHOT: automation-steps-builder-canvas — The Automation builder canvas with a trigger, several connected steps, and the step palette on the left]

This section explains every step in plain language: what it does, when to use it, and what its settings mean.

## What can I do here?

Steps are grouped in the builder's palette the same way they're grouped in these pages:

| Group                | What it's for                                                                                     | Page                                                           |
| -------------------- | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| **Send messages**    | Send text, media, buttons, lists, templates, forms, carousels, payments, and products on WhatsApp | [Send Messages](/workspace/automation/steps/send-messages)     |
| **Ask questions**    | Ask the customer something and wait for the answer                                                | [Ask Questions](/workspace/automation/steps/ask-questions)     |
| **Logic and timing** | Branch by conditions, business hours, or wait a while; jump or hand off                           | [Logic & Timing](/workspace/automation/steps/logic-and-timing) |
| **Sequences**        | Send a series of timed messages, like a drip campaign                                             | [Sequences](/workspace/automation/steps/sequences)             |
| **Integrations**     | Call an API, use Google Sheets and Calendar, detect a country, or send an event invite            | [Integrations](/workspace/automation/steps/integrations)       |
| **AI**               | Reply with AI, using your AI setting or one of your AI agents                                     | [AI Steps](/workspace/automation/steps/ai-steps)               |
| **Actions**          | Update the contact and conversation: assign, label, notes, status                                 | [Actions](/workspace/automation/steps/actions)                 |
| **Instagram**        | Send, ask, and manage comments on Instagram                                                       | [Instagram Steps](/workspace/automation/steps/instagram-steps) |
| **Facebook**         | Send, ask, and manage comments on Messenger and your Page                                         | [Facebook Steps](/workspace/automation/steps/facebook-steps)   |
| **Web Chat**         | Send and ask on your website chat                                                                 | [Web Chat Steps](/workspace/automation/steps/web-chat-steps)   |

## How to use it

### The basic ideas

**Trigger.** Every automation starts with a trigger — the event that starts it, such as a message arriving. See [Select a Trigger](/workspace/automation/select-a-trigger). It's the first block on the canvas, and every other step hangs off it.

**Connect steps with lines.** Drag from a step's output dot to the next step. The automation follows the lines. A step with only one output continues to whatever it's connected to.

**Steps with more than one path.** Some steps have several outputs, and you connect each one to what should happen next:

| Step                     | Its paths                                                |
| ------------------------ | -------------------------------------------------------- |
| Condition Logic          | **Success** and **Fail**                                 |
| Condition Branch         | one path per value you add, plus an optional **Default** |
| Working Hours            | **Open** and **Closed**                                  |
| Ask steps, Send Flow     | **Submitted** and **Not Submitted**                      |
| Buttons and lists        | one path per button or option the customer taps          |
| Send Template (Advanced) | one path per quick-reply button on the template          |
| Instagram Follow Check   | **Followed** and **Not Followed**                        |

**Steps that wait.** Ask steps, Send Flow, and Delay pause the automation until something happens — the customer answers, submits the form, or the time passes — and then continue.

### Variables — filling in details automatically

Wherever a step has a text box, you can add **variables** in double curly braces, and the platform swaps in the real value when the automation runs. Use the **Add Variable** button rather than typing them.

| You write                  | The customer sees                                |
| -------------------------- | ------------------------------------------------ |
| `Hi {{name}}, welcome!`    | Hi Priya, welcome!                               |
| `{{contact.name}}`         | The contact's name                               |
| `{{custom.city}}`          | The value in the contact's **city** custom field |
| `{{webhook.order.amount}}` | A value sent in by a webhook                     |

<Note>
  If a variable has no value, it stays as `{{…}}` in the message instead of turning blank, so check your variable names when you test.
</Note>

### Save answers in custom fields

Ask steps can save what the customer said into a [custom field](/workspace/contacts/custom-fields). Later steps — a message, a condition, an update — can then use that value as a variable. Create the custom fields **before** you build the automation.

### Which steps can I use?

* The **Send** and **Ask** steps are channel-specific: WhatsApp steps for WhatsApp automations, and separate Instagram, Facebook, and Web Chat steps for those channels.
* Steps for **logic, sequences, integrations, AI, and actions** work on every channel.
* The comment steps (reply, private reply, moderate) only appear when the trigger is a comment trigger. Facebook's private reply also works with the Page-mention trigger.
* Some steps are marked **beta** and may need a plan feature — Send Carousel, Send Call Request, Send Payment (India), and Google Calendar.

### A few example chains

| Goal                             | Steps                                                                                                                                     |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **Welcome + menu**               | Trigger *New Conversation* → Send Text ("Welcome!") → Send Button (Sales / Support) → each button leads to its own reply                  |
| **Capture a lead**               | Trigger *Message Received* → Ask Text (name, saved to a field) → Ask Number (budget) → Update Label (add *Hot Lead*) → Assign team member |
| **Only reply in business hours** | Working Hours → **Open**: Send Text; **Closed**: Send Text ("We're closed, back at 9am") → Create Note/Reminder                           |
| **Order updates from your shop** | Trigger *Receive Webhook* → Condition Branch (by order status) → Send Template for each status                                            |
| **Follow up after 2 days**       | Send Template → Delay (2 days) → Condition Logic (did they reply?) → Send Text                                                            |

<Tip>
  Start small. Build the chain with two or three steps, test it with your own phone, then add more. One clear job per automation is easier to fix than one giant flow.
</Tip>

## Troubleshooting / Technical Notes

* **A step I expect isn't in the palette.** The palette shows the steps for the automation's channel. Comment steps only appear with comment triggers.
* **A message shows `{{name}}` instead of a name.** The variable has no value for that contact. Check the field name, or set the field earlier in the flow.
* **The automation stops after an Ask step.** It's waiting for the customer's answer. If the customer never replies, connect the **Not Submitted** path so something happens.
* **A path isn't connected.** If a step has several outputs, connect each one — otherwise the automation ends when it reaches an unconnected path.
* **Something worked in testing but not live.** Make sure the automation is **Active** — see [Manage Live Flows](/workspace/automation/manage-live-flows).

## Related docs

* [Automation Overview](/workspace/automation/overview)
* [Create a Workflow](/workspace/automation/create-a-workflow)
* [Select a Trigger](/workspace/automation/select-a-trigger)
* [Use Templates](/workspace/automation/use-templates)
* [Custom Fields](/workspace/contacts/custom-fields)
