# Building a flow (/flows/building-a-flow)



You build a flow in three steps: choose what starts it, add optional conditions,
and define the response. Open an assistant, select **Flows**, then create a new
flow to open the builder.

## Step 1: Trigger [#step-1-trigger]

The trigger is the event that makes a flow eligible to run. The most common
trigger is when a visitor sends a message, and other triggers cover moments such
as the chat opening. Choose the trigger that fits what you want the flow to react
to. For most rules that answer questions, the message trigger is the right choice.

## Step 2: Conditions [#step-2-conditions]

Conditions are optional. They narrow a flow so it runs only in specific
situations. You can require that any condition matches, or that all of them match,
and you can stack several together.

The condition you will use most describes the **context of the conversation**: you
explain, in plain language, the kind of message this flow should handle, and you
can give a few example messages that should match and a few that should not. These
examples sharpen the match so the flow fires on the right questions.

Leave conditions empty when a flow should apply broadly, and add them when you need
precision.

## Step 3: Response [#step-3-response]

The response is what the flow actually does. It is an ordered list of actions, and
they run top to bottom. A response must have at least one action.

Common patterns include:

* A single **fixed message** for a rule that always replies the same way.
* A **search of your knowledge** for a rule that should give a helpful, grounded
  answer.
* A message followed by **buttons** that point visitors to the next step.
* An **escalation** when a rule should hand the visitor to your team.

See [Flow actions](/flows/actions) for every action and its settings.

## Save, order, and test [#save-order-and-test]

When you save a flow, it joins the list. Drag it to set its priority relative to
the other flows, remembering that the first match wins. Then test it in the live
preview by sending messages that should and should not trigger it. Adjust the
description and examples until it fires exactly when you intend.

<Callout title="Start simple">
  A small number of clear flows is easier to reason about than many overlapping
  ones. Add a flow when you have a specific behavior in mind, and lean on the
  Default behavior for everything else.
</Callout>
