Back to the journal
Momo Business Guides

Build your first WhatsApp flow

From the empty state to a published keyword flow with one button and one question, a simulated run, a publish and a real test from a customer phone.

Message flows run on WhatsApp in this release. Other channels are on the roadmap; a flow bound to any other channel is refused at publish.

A message flow is a scripted WhatsApp conversation: the customer sends a keyword, the flow greets them, offers buttons, asks a question, stores the answer and either finishes or hands the thread to a person. This guide takes you from the empty state to a published flow with one button and one question, and shows you where to look when it does not start.

Before you start

You need a WhatsApp number connected to your workspace (Accounts) and a second phone to play the customer. Your role needs the flow permissions (view, create, edit, publish — an owner or manager has them). Decide who will answer when the flow hands a conversation to a person: Hand to human marks the thread for attention, it does not find a colleague for you.

If your workspace shows Message flows dimmed with a lock, the module is not on your plan yet — ask us to switch it on.

Start from a sample, or from nothing

Open Message flows and select New flow. The gallery offers ready-made starting points — a welcome menu with opening hours, a shop that takes an order and a payment, a support desk that answers from your knowledge base. Picking one installs a draft you can edit; nothing goes live until you publish.

To build from nothing, name the flow "Customer enquiry menu" and select Create. The canvas opens with a start step. Everything you drag from the palette on the left lands on the canvas; the panel on the right shows the settings of the selected step; the Issues list at the bottom tells you what publish will refuse.

Build the conversation

  1. Select the starter Send text and write your greeting: "Karibu {{contact.first_name}}! What can we help you with?". Variables in {{…}} are filled in when the message is sent.
  2. Drag a Buttons step onto the canvas and connect the greeting's next handle to it. Give it one button "Order help" with the id order and a second "Talk to a person" with the id human. Each id becomes an exit on the right of the step.
  3. Connect order to an Ask text step. Question: "Please send your order reference." Store the answer in order_ref. Leave Must be as "anything" unless your references have a fixed shape.
  4. Connect ok to a Hand to human step whose message says "Asante. Our team will look at reference {{vars.order_ref}} and reply here." Connect human to another Hand to human.
  5. Every question has a timeout exit and Ask text has an invalid one. Draw them to an End step with a short goodbye, or to the human handover. An exit left undrawn on a question is an error at publish — a customer who is still waiting must not be left in silence.

The canvas saves as you go; wait for Saved before you test. Undo is Ctrl/⌘-Z; a colleague editing the same flow is shown, and both sets of edits are merged.

Tell it when to start

Open Triggers and add A keyword the customer sendsis exactly menu. Triggers are ordered across all your flows; if two live flows claim the same word the panel says so, and the one higher in the order wins. Would this start it? lets you type a message and see which flow answers.

Try it before anyone else does

Simulate opens the Studio: a handset on the left, the steps the run took on the right. Tap the buttons, type an answer, and use Wait runs out to see what a customer who goes quiet gets. Steps that need the outside world — a payment, a colleague's approval, an API — answer with a stand-in unless you tell them otherwise ("Make a step answer…"). Toggle 24-hour window is open off to see what happens when WhatsApp will only carry a template (why that matters).

Save as test keeps a run as a scenario; every scenario runs again at publish and a failing one stops the publish.

Publish

Select Publish. The sheet shows what changed since the last live version, the readiness checks (a connected number is required; a mapped template, opening hours and an AI profile are warnings with a link to fix them) and the result of your scenarios. Publishing creates version 1; conversations already in progress keep the version they started on, new ones use the new version. Versions lists them all and can put an earlier one back.

Test it for real, then watch it

From the customer phone send menu. If nothing happens, check in this order: the flow is active and published; the keyword matches exactly (punctuation counts); the account's responder in Accounts → Automations allows it — keyword flows start on an account that has not chosen a responder, or on a chat switched to Message flow; an account whose responder is an AI agent or a person starts no flow, and one whose responder is a specific flow starts that one; the chat itself is not switched to a person; nobody replied to that customer from the inbox in the meantime (a human reply ends the flow on purpose).

The Studio's Runs tab shows every conversation the flow had, what it ended on and why — Why did my flow stop? explains the words. From there you can nudge a waiting customer, end a stuck run, or replay one to reproduce a problem.

Where next

Thanks for reading.Explore more stories