Flows: Guided customer conversations

Written by:Malaz Madani

Share Article

Flows are visual workflows you design in your dashboard to guide a conversation before β€” or instead of β€” your AI agent. They run on every channel your app supports (Web, WhatsApp, Messenger, Instagram) without any extra work, and the customer sees native UI on each platform.

This article walks through what Flows can do.

[SCREENSHOT 1] Flows list page (Customer Service β†’ Flows). Show at least one Live flow and one Draft, with Switches visible.

What you can build

Anything from a one-message greeting to a multi-branch funnel that collects information, runs conditional logic, hands off to your AI with full context, or routes to a human agent with a packaged summary.

A Flow is a graph β€” a set of nodes connected by edges. You drag nodes from a side palette onto a free 2D canvas. There are 8 node types, grouped into three categories.

[SCREENSHOT 2] The canvas with the palette open on the left, showing the three category headers and the 8 nodes.

The 8 nodes

Functional β€” what the customer actually sees

Send Message β€” the bot sends text. Optionally include a media URL (image).

Options β€” ask a multiple-choice question with up to 20 buttons. The customer's pick is stored in a variable. You can set synonyms for each button (so "Yeah", "yep", "yes" all match), and choose how to handle unmatched typed text:

  • Strict β€” typed text rejected, composer disabled until a button is clicked

  • Match-or-reprompt (default) β€” fuzzy-match against labels and synonyms, retry up to 3 times

  • AI classify β€” send the typed text to a small AI model that picks the best option

  • Bail to AI β€” typed text immediately exits to Let AI Answer with collected context

Collect Input β€” ask a free-text question and store the answer in a variable. Optional validators: email, phone, regex.

[SCREENSHOT 3] Properties panel of any node (Send Message or Options) so the user sees the side panel where configuration happens.

Flow control

Trigger β€” where the flow begins. Currently fires on chat_start (the customer's first message).

Branch β€” routes the conversation based on conditions on collected variables. Conditions evaluate top-to-bottom; first match wins.

End β€” terminates the flow cleanly with an optional final message.

Integration β€” handing off

Let AI Answer β€” passes the conversation to your AI agent with all the collected context auto-injected into its system prompt. The AI takes over from here. The flow can wire what happens after the AI either resolves the question or escalates it.

Human Handover β€” routes to a human agent in your inbox with a packaged summary. The customer sees an automatic message ("Your query has been sent to a human…"), your admins get notified, and the chat lands in your inbox in human mode.

Variables

Variables are how you carry information through a flow. They have three scopes:

  • User attribute: Persists across all conversations with this user (e.g., customer_email, plan, account_id)

  • Conversation attribute: Persists for this chat only (e.g., topic, order_id, language_preference)

  • Workflow var: This run only (ephemeral) (e.g., attempt_count, selected_option)

And six types: text, number, boolean, list, date, reference.

Anywhere you have a variable, you can:

  • Use it as a Branch condition

  • Reference it later in the same flow

  • Have it auto-injected into the AI's system prompt at the Let AI Answer node, so the AI has full context

Publishing β€” the Live toggle

Each Flow has a Switch in two places: on its card in the list, and in the canvas header.

  • Off β€” Draft. Saved but not visible to customers.

  • On β€” Live. Customers see this flow on every channel.

[SCREENSHOT 4] Two cards in the list β€” one Live (Switch ON), one Draft (Switch OFF). Description shows "Live" / "Off".

A few rules to know:

  • Only one Flow can be Live per app at a time. Turning a different Flow on automatically turns the previous one off.

  • A Live Flow can't be deleted. Toggle it Off first.

  • Toggling Off doesn't lose your draft β€” your work stays exactly as you left it. You can re-publish anytime; that becomes the next version.

  • Customers mid-flow stick with the version they started on. Publishing a new version doesn't disrupt in-flight conversations; new conversations get the new graph.

Channel behavior

You design one flow. The runtime renders it appropriately on each platform.

Web widget

Options buttons are inline pills with 10px corners. They disable automatically once the customer picks (visible in conversation history but greyed out).

[SCREENSHOT 5] Web widget showing an Options message with clickable buttons.

WhatsApp

Buttons map to WhatsApp's native interactive UI based on count:

  • 1 – 3 buttons: Interactive Reply Buttons

  • 4 – 10 buttons: Interactive List ("View options" β†’ list rows)

  • 11+ buttons: Numbered text fallback

[SCREENSHOT 6] WhatsApp Interactive Buttons message.

[SCREENSHOT 7] WhatsApp Interactive List message.

Facebook Messenger and Instagram

Buttons map to native Quick Replies:

  • 1 – 13 buttons: Quick Reply bubbles

  • 14+ buttons: Numbered text fallback

[SCREENSHOT 8] Messenger Quick Replies bubbles.

[SCREENSHOT 9] Instagram Quick Replies bubbles.

Markdown formatting

The AI sometimes writes in markdown (bold, ## headings, - lists, [links](url)). The runtime cleans this up automatically per channel:

  • Web β€” markdown renders normally.

  • WhatsApp β€” bold becomes WhatsApp's native bold (*bold*). Headings become bold. Bullets become β€’. Links become text (url).

  • Messenger / Instagram β€” strict plain text. All markdown markers stripped.

Long messages

Customers never see truncated messages. If an AI reply exceeds a channel's text limit (1,000 chars on Instagram, 2,000 on Messenger, 4,096 on WhatsApp), the runtime splits it at the safest available boundary (paragraph β†’ line β†’ sentence) and sends multiple messages in order.

How it integrates with AI

When a Flow reaches a Let AI Answer node, the AI receives a system prompt with three layers stacked:

  1. Your AI agent's persona (from your Customer Service settings)

  2. A preamble listing every variable the flow has collected

  3. Optional author-defined instructions you set on that specific node

So by the time the AI takes over, it knows the customer's plan, order, language, intent β€” whatever you've collected. It doesn't have to re-ask.

How it integrates with the inbox

When a Flow ends with Human Handover (or AI escalates), the chat moves into your inbox with mode human. Any agent on your team can pick it up by clicking Take Over in the chat header.

The Take Over button requires:

  • Your plan to include the Shared Inbox feature

  • The per-app Human Handoff setting to be enabled (Customer Service Settings β†’ Human Handoff)

[SCREENSHOT 10] Inbox view of a chat in human mode, with the Take Over button visible in the header and the right-side panel showing the channel and mode.

The customer-facing system message and admin notifications are the same as when the AI escalates β€” there's one canonical escalation pipeline.

Limits

  • Buttons per Options node: 20 (Above 11, every channel falls back to numbered text)

  • Variables per app: unlimited

  • Live flows per app: 1

  • Reply Button label: 20 chars (WhatsApp / Messenger platform limit)

  • List row title: 24 chars (WhatsApp platform limit)

  • Bot text per message: 1,000 / 2,000 / 4,096 (IG / FB / WA)

Things to keep in mind

  • Keep button labels short (mobile messengers truncate aggressively).

  • Use synonyms on Options buttons if you expect customers to type variations.

  • Always wire the fallback edge on Options nodes β€” if no button matches, the flow needs somewhere to go.

  • Make sure every path eventually reaches an End, Let AI Answer, or Human Handover.

  • The same flow looks different on each channel. If your customers use multiple channels, glance at each one before publishing widely.

On the roadmap

Not yet available, but on the way:

  • Persistent menus for Messenger and Ice Breakers for Instagram (always-visible UI configured per app).

  • Multi-select Options nodes (let customers pick more than one).

  • Test in widget before publish.

  • Run inspector in the agent inbox (see the active node + collected variables on a live chat).

Did this answer your question?

More Support

Get more support from us