Chatbot Flows

A flow is the conversation plan your chatbot follows when it talks to a user. The Flow Editor is a visual canvas where you build that plan by adding messages, connecting them together, and adding logic to branch the conversation based on what the user does.

A flow is made of two things: messages (the boxes on the canvas, often called nodes) and connections (the arrows between them). When a user opens a chat, the flow runs from the Start Message and follows the arrows. Some messages just send text; others ask a question with quick-reply buttons, hand the conversation to a human agent, run custom logic, or branch based on the user's country, language, or the time of day.

You can keep more than one flow open at once. Each flow opens in its own resizable window — drag the title bar to move it, drag the corners to resize it, or click the maximise icon to fill the screen. Keyboard shortcuts apply to whichever flow window is currently in focus.

Managing Flows

Find, create, copy, export, and delete flows from the Flows menu.

View All Flows

View and search through all available chatbot flows in your organization.

Steps:

  1. Click Flows in the main menu.
  2. Click All Flows to see a list of all flows.
  3. Use the Search field to filter flows by name or ID.
Tips
  • Each flow card displays the flow name, ID number, and type.
  • You can Copy, Edit, Export, or Delete a flow directly from its card.

Create a New Flow

Create a new standard flow or import an existing flow from a JSON file.

Steps:

  1. Click Flows in the main menu.
  2. Click Create Flow.
  3. Choose Create New for a standard flow, or Import to upload an exported flow.
  4. Enter a unique Flow Name.
  5. Click Create New Flow (or Import New Flow if importing).
Tips
  • Flow names must be unique within your organization.
  • When importing, drag and drop a JSON flow file into the import area.

Copy a Flow

Create a duplicate of an existing flow with a new name.

Note
You can also make a copy from inside the Flow Editor — see Save, Export, or Make a Copy below.

Steps:

  1. Navigate to All Flows.
  2. Find the flow you want to copy and click Copy.
  3. Enter a new name for the copied flow and confirm.

Export a Flow

Export a flow as a JSON file for backup or to import into another organization.

Note
You can also export from inside the Flow Editor via the Save menu — see Save, Export, or Make a Copy below.

Steps:

  1. Navigate to All Flows.
  2. Find the flow you want to export and click Export.
  3. The flow downloads as a JSON file.

Delete a Flow

Permanently remove a flow from your organization.

Warning
You cannot delete a flow that is currently assigned to a chatbot. Remove the flow from all chatbots first.

Steps:

  1. Navigate to All Flows.
  2. Find the flow you want to delete and click Delete.
  3. Confirm the deletion when prompted.

Opening the Flow Editor

The Flow Editor opens in a resizable window. The flow is drawn on a large scrollable canvas; the toolbar across the top contains every action available to you.

Open a Flow for Editing

Open the visual Flow Editor to design or modify a flow.

Steps:

  1. Navigate to All Flows.
  2. Click Edit on the flow you want to modify.
  3. The Flow Editor opens, displaying every message in the flow.
Tips
  • The Start Message (the very first message in any flow) is special — it always exists, cannot be deleted, and is where every new conversation begins.
  • You can leave the Start Message empty: the flow will simply move on to the next connected message without sending anything.
  • You can open several flows side-by-side — drag a window's title bar to move it or its corners to resize it.
  • Clicking Edit on a flow you already have open brings that window to the front instead of opening a second copy of the same flow.

The canvas is much larger than the visible window. Pan and zoom to move around, and use the toolbar's view buttons to quickly fit, focus, or auto-arrange your flow.

Pan and Zoom

Move around the canvas and change the zoom level.

Steps:

  1. Click and drag any empty area of the canvas to pan.
  2. Scroll up or down with your mouse wheel (or trackpad) to zoom in and out under the cursor.

Focus All / Center on a Message

Quickly fit the whole flow on screen, or jump to a specific message.

Steps:

  1. Click the Focus All button (apps icon) to zoom out so every message is visible.
  2. Select a single message and click the Center on selection button (aperture icon) to focus and zoom on it.

Auto Layout

Automatically arrange every message into a tidy tree.

Note
Auto Layout respects Snap to Grid if it is enabled. The action is undoable — press Ctrl+Z (or +Z on Mac) to revert.

Steps:

  1. Click the Auto Layout button (git-network icon) in the toolbar.
  2. The flow is rearranged into a hierarchical tree starting from the Start Message.
  3. The canvas zooms to fit so you can see the result.
Tips
  • If only some messages are selected, the group action toolbar above the selection includes an Auto Layout icon that arranges just those messages.

Show or Hide the Grid

Show a background grid and choose its spacing.

Note
Your grid choice is remembered per browser, so it persists between sessions.

Steps:

  1. Click the Toggle Grid button (grid icon) to show or hide grid markers on the canvas. The shortcut is G.
  2. Click the small dropdown arrow next to the grid button to choose a spacing: 10, 20, 40 (default), 80, or 160 pixels.

Snap to Grid

Make messages snap to the grid when you drag them.

Steps:

  1. Click the Snap to Grid button (magnet icon) to toggle snapping on or off. The shortcut is S.
  2. When snapping is on, every dragged message — and every newly placed message — aligns to the nearest grid intersection.
Tips
  • You can have Snap to Grid on without showing the grid lines, and vice-versa.

Selecting Messages and Connections

Most actions in the editor — edit, delete, copy, connect — start by selecting something. The Flow Editor supports single selection, additive multi-selection, and a persistent box-select mode.

Select a Single Message or Connection

Click anything on the canvas to select it.

Steps:

  1. Click a message to select it. A small action toolbar appears above the selected message with Edit, Connect, and Delete icons.
  2. Click a connection arrow to select it. A delete icon appears at the middle of the arrow.
  3. Click any empty area of the canvas, or press Esc, to deselect.

Select Multiple Messages

Select a group of messages so you can move, copy, delete, or auto-layout them together.

Note
When two or more messages are selected, a group action toolbar appears above the selection with Delete, Copy, and Auto Layout icons that apply to the whole group.

Steps:

  1. Hold Shift and drag a box across the canvas to select every message inside it. Shift-drag is additive — messages already selected stay selected.
  2. Or click the Box Select button (crop icon) in the toolbar to turn on persistent box-select mode. The cursor becomes a crosshair and any canvas drag draws a selection box. Click the button again, or press Esc, to leave box-select mode.
  3. Press Ctrl+A (or +A on Mac) to select every message in the flow.

Connecting, Editing, and Deleting

Once you've selected a message or connection, you can edit it, connect it to another message, copy it, or delete it. Most actions are reachable from the small action toolbar that appears above a selected message, from keyboard shortcuts, or from both.

Connect Messages

Draw an arrow from one message to another to define the conversation flow.

Steps:

  1. Click a message to select it. A blue half-circle connect handle appears on its right edge, and a Connect icon (merge icon) appears in the action toolbar above it.
  2. Drag from the connect handle (or from the Connect icon) onto the target message. A preview line follows your cursor.
  3. Release over the target message to create the connection.
Tips
  • Press Esc at any time during the drag to cancel.
  • A message can have up to 6 outgoing connections.
  • Some message types have stricter rules — Route to Agent and Switch cannot have outgoing connections, and Logic Blocks can only have one. See the per-type sections below.

Edit a Message

Open a message's edit dialog to change its content.

Steps:

  1. Double-click the message, or select it and click the Edit icon (pencil) in the action toolbar.
  2. Change the fields in the edit dialog.
  3. Click Save Changes to apply, or Cancel to discard.

Delete a Message or Connection

Remove a message, a connection, or a group of selected messages.

Warning
Deleting a message also removes every connection to and from it. The Start Message cannot be deleted.

Steps:

  1. To delete a single message: select it and click the Delete icon (red trash) in the action toolbar, or press Delete / Backspace.
  2. To delete a connection: click the arrow, then click the Delete icon that appears at the middle of the arrow.
  3. To delete several messages at once: select them (see Select Multiple Messages) and either press Delete / Backspace or click the Delete icon in the group action toolbar.

Undo and Redo

Step backwards or forwards through recent changes.

Note
Undo and redo are scoped to the flow window you're in. Each open flow has its own independent undo history.

Steps:

  1. Click the Undo button (undo arrow) in the toolbar, or press Ctrl+Z (+Z on Mac).
  2. Click the Redo button (redo arrow), or press Ctrl+Y / Ctrl+Shift+Z (+Y / +Shift+Z on Mac).

Copy and Paste Messages

Copy one or more messages and paste them elsewhere — even into a different flow.

Steps:

  1. Select one or more messages.
  2. Press Ctrl+C (+C on Mac), or click the Copy icon in the group action toolbar when multiple messages are selected.
  3. A badge appears on the Paste button (clipboard icon) showing how many messages are on your clipboard.
  4. Press Ctrl+V (+V on Mac), or click the Paste button, to paste them into the current flow. Outgoing connections between copied messages are preserved.
Tips
  • The clipboard is shared across every Flow Editor window in this browser, so you can copy from one flow and paste into another.
  • To empty the clipboard, click the small dropdown arrow next to the Paste button and choose Clear Clipboard.
  • The Start Message is never copied, even if it is part of your selection.

Keyboard Shortcuts

Keyboard shortcuts apply to whichever Flow Editor window is currently in focus. They're suppressed while you're typing in a text field, so they never collide with the field's own shortcuts.

Shortcut Reference

Every keyboard shortcut supported by the Flow Editor.

ShortcutAction
EscCancel an in-progress connection drag, leave Box Select mode, or clear the current selection
Delete / BackspaceDelete the selected message(s) — the Start Message is protected
GToggle grid display
SToggle Snap to Grid
Ctrl+Z / +ZUndo
Ctrl+Y / Ctrl+Shift+ZRedo (same with on Mac)
Ctrl+A / +ASelect every message in the flow
Ctrl+C / +CCopy selected messages (only intercepted when messages are selected — otherwise normal browser text-copy)
Ctrl+V / +VPaste from the Flow Editor clipboard
Shift + dragBox-select; adds to the existing selection

Message Types

Every button in the message-creation section of the toolbar adds a different type of message to your flow. Click a type's icon, then click on the canvas to place it. Double-click the new message to fill in its content.

Each type has its own colour-coded header so you can recognise it at a glance: blue for messages, teal for User Details, violet for Web Link and Image, amber for Route to Agent, green and purple for Logic Blocks, red for Routes, indigo for Switch, and black with a sparkle for AI Agent.

This section covers the simpler types. The more involved ones — Route to Agent, Logic Blocks, and Switch — each have their own section further down.

Add a Text Message

Send plain text to the user, optionally with quick-reply buttons.

Steps:

  1. Click the Text Message button (text icon) in the toolbar.
  2. Click on the canvas to place the message.
  3. Double-click the message to open its edit dialog.
  4. Enter your message in the Message Text field.
  5. If the message has 2 or more outgoing connections, fill in a label for each Button field that appears.
  6. Click Save Changes.
FieldDescription
Message TextThe text sent to the user.
Use Quick Reply ButtonsToggle that appears once the message has 2 or more outgoing connections. On = show responses as quick-reply chips; off = show them as numbered choices in the message body.
Button 1–5 TextThe label shown on each response button. One field appears per outgoing connection.
Tips
  • The Start Message is allowed to be empty — the flow will skip past it.
  • Need help drafting? See Using the AI Writing Assistant below.
  • Different chat platforms have different length limits — see Platform Length Warnings below.

Add a Keyword

A jump-in point that fires when the user types a specific word.

Note
Keywords are also used as Facebook advertising bot payloads — set up an ad with a payload that matches the keyword and the user will land directly in this branch of the flow.

Steps:

  1. Click the Keyword button (menu icon) in the toolbar.
  2. Click on the canvas to place the keyword node.
  3. Double-click to edit and enter the keyword.
  4. Connect the keyword to the message that should run when that keyword is typed.
FieldDescription
KeywordThe word or phrase that triggers this branch when the user types it.

Send a message with a tappable button that opens a URL.

Steps:

  1. Click the Web Link button (link icon) in the toolbar.
  2. Click on the canvas to place the message.
  3. Double-click to open the edit dialog.
  4. Fill in the message text, the URL, and the button label.
FieldDescription
Link Message TextThe text shown above the link button.
URL to link toThe full web address, including https://.
Button TextThe label shown on the link button.

Add an Image

Send a picture.

Warning
Very large images may be rejected by some chat platforms. Optimise your images for web before uploading.

Steps:

  1. Click the Image button (image icon) in the toolbar.
  2. Click on the canvas to place the image node.
  3. Double-click to open the edit dialog.
  4. Drag and drop an image file into the upload area.

Add a User Details Request

Ask the user for their email address or phone number, validate the answer, and continue if it's valid.

Steps:

  1. Click the User Details button (contact icon) in the toolbar.
  2. Click on the canvas to place the node.
  3. Double-click to open the edit dialog.
  4. Choose whether to request Email address or Phone number.
  5. Fill in the prompt and the validation-error message.
  6. Decide how many failed attempts are allowed before the flow moves on without an answer.
FieldDescription
Request TypeEmail address or phone number.
Message TextThe prompt shown to the user.
Validation Error MessageWhat to send if the user's answer doesn't look like a valid email or phone number.
# of attempts before skippingHow many invalid replies are tolerated before the flow continues anyway. 0 = unlimited.

Add a Logic Input Block

Like a Logic Block, but waits for the next message from the user before it runs.

Steps:

  1. Click the Logic Input button (code-download icon) in the toolbar.
  2. Click on the canvas to place the node.
  3. Double-click to open the code editor.
  4. Write JavaScript that processes the user's reply.
  5. Click Save Changes.
Tips
  • Use Logic Input when you need to capture and validate free-form text from the user (e.g. an order number, a postcode) — full reference in Logic Blocks.

Add a Route

Define a named entry point that other parts of the flow can jump to.

Steps:

  1. Click the Route button (funnel icon) in the toolbar.
  2. Click on the canvas to place the node.
  3. Double-click to give it a name and optional description.
  4. Connect the Route to the first message in the branch it represents.
FieldDescription
RouteA unique name for this route (case-insensitive).
Route DescriptionOptional. Explain what this route is for — shown on the canvas to help yourself and other builders.
Tips
  • Routes are how Switch nodes, Logic Blocks, and the Flow Confusion setting send the conversation to a specific point in the flow.
  • Use Routes to keep reusable conversation segments (a main menu, an opt-out, a "talk to sales" branch) in one place.

Add an AI Agent

Hand the conversation to an AI Agent that answers questions from a Knowledge Base.

Steps:

  1. Click the AI Agent button (sparkle icon) in the toolbar.
  2. Click on the canvas to place the node.
  3. Double-click to configure which AI Agent runs, and what should happen if the user asks for a human.
FieldDescription
AI AgentWhich AI Agent handles this conversation. Set up agents in the AI Agents section.
Agent RoutingWhat happens when the user asks to speak to a human: route to the default BU, route to a specific BU, or jump to a Route inside this flow.
Business UnitShown when Agent Routing is set to a specific BU.
RouteShown when Agent Routing is set to a flow Route — pick which Route to jump to.
Routing to Agent MessageOptional message sent just before the hand-off to a human.
AI Initial GreetingOptional. Sent to the user the very first time they reach this block. If they re-enter the block later it is not re-sent. Leave empty if the messages before this block already serve as a greeting.
Tips

Routing to a Human Agent

The Route to Agent node hands the conversation off to a human. It is a terminal node — it ends the automated part of the conversation and cannot have any outgoing connections. Three routing modes determine which agent receives the chat.

Add a Route to Agent

Add a hand-off point that transfers the conversation to a human agent.

Steps:

  1. Click the Route to Agent button (chat-bubbles icon) in the toolbar.
  2. Click on the canvas to place the node.
  3. Double-click to choose a routing mode and configure it.

Default Routing

The simplest option: the chat is offered to any available agent across all Business Units. Choose Use default routing in the edit dialog. No further configuration is needed.

Route to a Specific Business Unit

Send the chat only to agents in one Business Unit. Choose Route to a specific Business Unit, then pick the team from the Business Unit dropdown. Use this when a particular branch of your flow should always reach a specific team (e.g. "Talk to Sales" only goes to the Sales BU).

Route by Country

Route the chat based on the user's detected country. Choose Route by country, then add one or more country rules: each rule pairs a list of countries (selected as chips) with a Business Unit. If no rule matches, the chat is sent to the Fallback BU.

The country is detected from the chat platform — usually from the user's phone number country code, or from IP geolocation on web channels. Not all channels provide country information; users without a detected country always fall through to the Fallback BU.

Note

Each country may only appear in one rule. When you add a country to a rule, it becomes unavailable in the other rules' chip pickers.

Logic Blocks

Logic Blocks run custom JavaScript inside the flow — useful for decisions, data transformation, and calls to external services. There are two API versions; pick one when you write the block.

Add a Logic Block

Run custom JavaScript to make decisions, transform data, or call external services.

Note
Logic Blocks can only have one outgoing connection — they always continue to the same next message. Use Routes or a Switch downstream if you need to branch on what the Logic Block did.

Steps:

  1. Click the Logic Block button (code icon) in the toolbar.
  2. Click on the canvas to place the node.
  3. Double-click to open the code editor.
  4. Write your JavaScript and choose the API version.
  5. Click Save Changes.
Tips
  • See the Logic Blocks guide for every function you can call and worked examples.

API Version 1.0

The original Logic Block API. Keeps existing Logic Blocks running unchanged. Choose this only when migrating or extending older flows.

API Version 2.0

The recommended version for new Logic Blocks. Cleaner async API and richer helpers. Pick 2.0 for any new code unless you have a specific reason to stay on 1.0.

Switch Nodes

A Switch sends the conversation to a named Route based on something about the user, the chat, or the time. It is a terminal node — it doesn't have outgoing connections to other messages; instead each rule names a Route to jump to.

Every Switch has a Fallback Route — the Route used when no rule matches.

Add a Switch

Branch the conversation to a named Route based on the user's country, language, the channel, or the time.

Note
Changing the Switch type clears any rules you've already entered, because the rule shape is different for each type. You'll be asked to confirm before this happens.

Steps:

  1. Click the Switch button (shuffle icon) in the toolbar.
  2. Click on the canvas to place the node.
  3. Double-click to choose what the Switch branches on, then configure the rules.
  4. Choose a Fallback Route for users who don't match any rule.

Switch by Country

Branch on the user's detected country. Add one rule per Route: each rule has a list of countries (selected as chips) and a Route. The country is derived from the phone number country code where available, or from IP geolocation on web channels. Users with no detected country fall through to the Fallback Route.

Switch by Language

Branch on the language the user's chat platform reports for them. Add one rule per Route, each with one or more language codes.

Switch by Channel

Branch on the chat platform the message arrived from — WhatsApp, Messenger, Web Widget, and so on. Use this to send platform-specific content (e.g. WhatsApp-only templates).

Switch by Business Hours

Branch based on the organisation's configured working hours. This mode has just two dropdowns: a Route to take when you are in hours, and a Fallback Route for when you are out of hours.

Switch by Day of Week

Branch on the current day of the week, evaluated in the organisation's timezone. Add a rule for each day or group of days you want to handle.

Switch by Date Range

Branch on the current date in the organisation's timezone. Each rule is a date range (both end dates are included) and a Route. Rules are checked top-to-bottom, so drag them to reorder if ranges overlap — first match wins.

Switch by Time of Day

Branch on the current time in the organisation's timezone. Each rule is a start time, an end time, and a Route. Use 24-hour HH:MM. A start time later than the end time means the range crosses midnight — for example, 22:0006:00 covers overnight. Rules are checked top-to-bottom; drag to reorder.

Composing Text Messages

The Text Message edit dialog has two extra features you'll use most often: the AI Writing Assistant, and the per-platform length warnings.

Use the AI Writing Assistant

Generate or refine message wording with an AI prompt, then drop it straight into the message.

Steps:

  1. Open a Text Message for editing.
  2. Click the AI Writing Assistant button next to the Message Text field.
  3. Describe what you want, or ask the assistant to rephrase or shorten what you already have.
  4. Apply the result — the Message Text field updates and length warnings refresh automatically.

Platform Length Warnings

As you type into a Message Text field or a Button label field, the editor compares the length against the limits of every supported chat platform. If you exceed one, a warning appears below the field listing the platforms that would reject the message.

Note
The warning is informational — you can still save a message that exceeds a platform's limit. If you're sure your flow will never run on the listed platforms, you can ignore the warning.
PlatformMessage limitButton label limit
WhatsApp409620
Web Widget409620
Facebook Messenger200020
Instagram100020
Telegram409664
LINE500020
Viber700025

Testing a Flow

You can try your flow end-to-end without publishing it to a chatbot, using a temporary embedded web-chat session.

Test in Web Chat

Open a web-chat session that runs your in-progress flow.

Note
Each Flow Editor window has one test session at a time. Clicking the Test button again brings the existing window back to the front instead of creating a second session.

Steps:

  1. Click the Test Flow button (flask icon) in the toolbar.
  2. A web-chat window opens beside the Flow Editor.
  3. Chat as if you were a user. The conversation follows your current draft — including any unsaved changes.
  4. When you're done, close the test window. The session is torn down automatically.

Saving, Exporting, and Copying

The Save button in the toolbar is a split button: click the main part to save, or click the small dropdown arrow next to it for export and copy options.

Save the Flow

Commit your changes.

Steps:

  1. Click the Save button (save icon) in the toolbar.
  2. If the flow is currently running on one or more chatbots, you'll be asked what to do with the active conversations.
OptionWhat it does
Close all active agent chatsEnds every in-progress agent chat that uses this flow. Use when your changes affect agent-side behaviour and you don't want existing chats finishing on an old version.
Reset users to the beginning of the flowSends every active user back to the Start Message on their next reply. Use when you've materially changed the flow structure.

Export as JSON

Download the current flow as a JSON file for backup or to import elsewhere.

Note
If you have unsaved changes, save first — the export reflects the most recently saved state.

Steps:

  1. Click the dropdown arrow next to the Save button.
  2. Choose Export as JSON. The file downloads immediately.

Make a Copy

Duplicate the current flow under a new name without leaving the editor.

Steps:

  1. Click the dropdown arrow next to the Save button.
  2. Choose Make a copy….
  3. Enter a new, unique name and confirm. The copy is created on the server; open it from All Flows when you're ready to edit it.

Flow Settings

Two toolbar buttons configure flow-wide behaviour: Default Messages (the system messages your chatbot uses in standard situations) and Global Settings (the flow's name and high-level behaviour).

Edit Default Messages

Customise the default system messages used throughout the flow.

Steps:

  1. Click the Default Messages button (wrench icon) in the toolbar.
  2. Edit each message in the dialog.
  3. Click Save Changes.
FieldDescription
Agent BusySent when every eligible agent is busy.
Routing to agentSent when the chat is being transferred to a human agent.
Flow ConfusionSent when the flow can't make sense of the user's reply. A good place to suggest a keyword that takes them to the main menu.
Chat closed with AgentSent when an agent closes the chat.
Agent is busy after a transferSent when one agent tries to transfer the chat to another agent who is busy or offline.
Out of Hours messageSent outside the organisation's configured working hours when no agents are available.
Invalid ActionSent when the user clicks an old chatbot button while already in conversation with a human agent.

Edit Global Settings

Change the flow's name and high-level behaviour.

Steps:

  1. Click the Global Settings button (cog icon) in the toolbar.
  2. Adjust the fields below.
  3. Click Save Changes.
FieldDescription
Flow NameThe name shown in All Flows and on the Flow Editor window's title bar. Must be unique within your organisation.
This flow only talks to agentsTurn on for flows used purely for agent-initiated outbound chats with no chatbot automation.
Only run this flow onceTurn on to stop the flow restarting after it ends. Useful for one-shot onboarding or campaign flows.
On Flow ConfusionWhat happens when the user's reply isn't understood: send the default Flow Confusion message, route to a human agent, or jump to a named Route.
Routes toShown when On Flow Confusion is set to "Direct the flow to a specific route" — the Route name to jump to.
Send Routing to agent messageTurn off if you'd rather hand off silently.
Send Chat closed with Agent messageTurn off for flows where agents reach out proactively and a "chat closed" notice would feel odd.
Tips
  • The simpler the flow, the more these defaults matter — they're what the user sees when the flow's main script doesn't have an answer.
Create a Chatbot