A Conversation Flow defines how your chatbot talks to users using a state-machine model. Your bot moves between states based on what the user says. Each state can send a message, wait for input, and decide what to do next.
Conversation Flows work across any channel your chatbot is connected to (WhatsApp, Web Widget, REST API, etc.).
When to Use a Conversation Flow
Use a Conversation Flow when you need:
- A scripted conversation with clear steps (e.g., collect a name → confirm → save)
- Conditional branching (e.g., "if user says yes → go to checkout, if no → go to menu")
- Intent detection using keywords or NLU
- Actions like calling a webhook or querying a knowledge base at specific points
- Have no access to Meta Business Account that is verified to allow you to use Meta Flows
For interactive WhatsApp-native UI (forms, carousels, pickers), use Meta Flows instead.
Creating a Conversation Flow
- Inside your chatbot, click Flows in the sidebar, then Conversation Flows.
- Click Create Flow (or New Conversation Flow).
- Enter a name and optional description.
- Click Create.
The flow opens directly in the Flow Editor.
Note: Your plan limits how many flows a chatbot can have. See Billing & Plans.
The Flow Editor Layout
The Flow Editor has four main areas:
| Area | Purpose |
|---|---|
| Canvas (centre) | Visual graph of states and transitions |
| Property Panel (right) | Edit the selected state's details |
| JSON IDE (tab) | Edit the raw flow JSON with live validation |
| Chat Preview (tab) | Simulate the conversation in real time |
A toolbar at the top provides: Save, Validate, and Publish buttons.
Working with States
A state is a step in your conversation — a point where the bot says something and waits for the user's response (or moves on automatically).
Adding a State
- On the canvas, click the + Add State button (or right-click the canvas for the context menu).
- A new state node appears on the canvas.
- Click the state to select it and edit its properties in the Property Panel.
Configuring a State
In the Property Panel for a selected state:
- Name — A unique identifier for the state (used in transitions). Use lowercase with underscores (e.g.,
ask_name). - Actions — What the bot does in this state. You can add multiple actions:
- Send message — The bot sends a text message to the user
- Call webhook — Calls an external URL (e.g., to fetch data from your system)
- Query knowledge base — Searches a connected KB for an answer
- Is Initial State — Mark one state as the starting point of the flow (the bot begins here)
Renaming a State
Click the state name in the Property Panel and type a new name. All transitions referencing this state are updated automatically.
Adding Transitions
A transition defines where the bot goes next based on user input.
Adding a Transition
- Select a state on the canvas.
- In the Property Panel, scroll to the Transitions section.
- Click Add Transition.
- Configure:
- Condition — What triggers this transition (see below)
- Target State — Which state to move to
Condition Types
| Condition | Behaviour |
|---|---|
| Always | Always move to the target state (no user input needed) |
| Intent match | Move when the user's message matches a defined intent |
| Keyword match | Move when the user's message contains a specific word or phrase |
| Regex match | Move when the user's message matches a regular expression |
| Default | The fallback if no other condition matches |
Drawing Transitions on the Canvas
You can also draw a transition directly on the canvas:
- Hover over the source state node — a small connector dot appears on its edge.
- Click and drag from that dot to the target state node.
- Configure the transition condition in the Property Panel.
Using Intents and NLU
Intents let your bot understand what the user means, not just what they literally typed.
Creating an Intent
- In the Property Panel, go to the Intents tab.
- Click Add Intent.
- Give the intent a name (e.g.,
greeting) and add example phrases (e.g., "Hello", "Hi there", "Hey"). - The NLU model uses these examples to match similar user messages.
Using an Intent in a Transition
When adding a transition condition, select Intent match and choose the intent from the list.
JSON IDE
The JSON IDE tab shows the complete flow as a JSON document. Advanced users can edit the flow JSON directly.
- Live validation — Errors are underlined in red as you type
- Error markers — Hover over an underlined section to see the specific error
- Two-way sync — Changes in the JSON IDE are reflected on the canvas, and vice versa
Tip: If you are troubleshooting a complex flow, switching to the JSON view can make it easier to see the full structure at once.
Chat Preview
The Chat Preview tab lets you simulate a conversation with your flow before going live.
- Click the Chat Preview tab.
- Type a message as if you were a user.
- The preview bot responds according to your flow logic.
- Use this to test all your transitions, conditions, and responses.
Variables like ${user_name} are interpolated in the preview if you have set them.
Save, Validate, and Publish
Your flow must go through three steps before users can interact with it:
Step 1: Save
Click Save to save your current changes. This stores the draft on the server but does not activate the flow.
Tip: Save frequently so you don't lose your work.
Step 2: Validate
Click Validate to check your flow for errors. The backend checks:
- All transitions point to existing states
- Required fields are filled in
- Actions are correctly configured
If there are errors, they appear as markers in the JSON IDE and as a list in the toolbar. Fix all errors before publishing.
Step 3: Publish
Click Publish to make the flow live. The published version is what users interact with.
Note: Only a validated flow can be published. Publishing replaces the previous live version.
Flow Status Badges
On the Conversation Flows list page, each flow shows a status badge:
| Badge | Meaning |
|---|---|
| Draft | The flow has been saved but not yet published |
| Published | The flow is live and active |
| Invalid | The flow failed validation; cannot be published |
Related Guides
- Meta Flows — WhatsApp-native interactive UI flows
- Knowledge Bases — Connect a KB for Q&A answers
- Integrations — Deploy your flow to WhatsApp or your website