Build a WhatsApp Bot with the Flow Builder
Overview
The Flow Builder is a drag-and-drop canvas for building automated WhatsApp conversations. You place nodes (welcome messages, menus, buttons, conditions, handoffs) and connect them with connectors to define exactly what your bot does when a customer messages you.
Every flow reacts to inbound messages in real time. When a customer sends a message, the bot walks through your nodes step by step — showing menus, capturing answers, branching on the reply, and handing off to a human when needed.
The bot runtime is rule-based and deterministic — it follows the exact menu logic you draw. It is not an AI or LLM, so its behaviour is fully predictable and easy to test.
What You Can Build
The Flow Builder suits any structured, repeatable conversation. Common examples:
- Support triage bot — a welcome message, a menu (Billing / Technical / Talk to an agent), and each option routed to an answer or a human handoff.
- After-hours responder — a Business hours node that routes contacts to a live menu during opening hours and to an "we're closed" message otherwise.
- Lead qualification — collect a name, company, and requirement into variables, then branch on the answers.
- FAQ deflection — a menu of common questions, each wired to a pre-written answer, cutting the load on your team.
- Booking / status flows — call an external system with an API node and reply with the result.
Prerequisites
- A WhatsApp Business Account connected to Cliqtel (setup guide)
- A WhatsApp number that can receive inbound messages
- For handoff nodes, at least one agent or team that can pick up conversations
- For Template nodes, an approved message template in your WABA (see campaigns guide)
Step 1 — Create a Flow
Go to My Numbers → Messaging — WhatsApp → Flows and create a new flow. You'll land on an empty canvas with a single node already in place: the "Message received" trigger.
Every flow starts from this trigger. It fires whenever a customer sends your number a message, and it's the entry point for everything that follows. Give your flow a clear name (for example, Support triage) so you can find it later.
Step 2 — Add & Connect Nodes
The node palette runs down the left side of the canvas. Drag a node onto the canvas to add it, then click it to open its configuration panel. Let's build the support triage bot:
- Message — a welcome greeting, e.g. "Hi! Thanks for contacting Cliqtel. How can we help?"
- Menu (list) — three options: 1. Billing, 2. Technical, 3. Talk to an agent
- Message nodes for the Billing and Technical answers
- Handoff node for "Talk to an agent"
Menu and Buttons nodes expose one output per option — a small dot next to each option. Drag from an option's dot to the node you want that option to lead to. Each connector is labelled with the option it represents (or True/False for a Condition, Open/Closed for Business hours), so the branch logic is readable at a glance.
For the triage bot, wire:
- Billing → the Billing Message node
- Technical → the Technical Message node
- Talk to an agent → the Handoff node
To only greet customers during opening hours, add a Business hours node right after the welcome message: wire its Open output to the menu, and its Closed output to a Message node that says you're closed and when you'll be back.
Step 3 — Use Variables
Variables let your bot remember what a customer told it and personalise later replies. Reference a variable anywhere text is allowed using the {{name}} syntax. Every node's config panel includes a variables picker so you don't have to type names by hand.
Variables come from three places:
- Collect nodes — save the customer's next reply into a named variable (e.g. capture their name into
{{customer_name}}). - Menu / Buttons selections — the chosen option is available to later nodes.
- API responses — map fields from an external system's response into variables.
Collect node -> saves reply into customer_name
Message node -> "Thanks, {{customer_name}}! One moment while
I connect you to the right team."You can chain these: collect a name and a company, branch on a menu choice, then send a Message that reads back everything the bot captured.
Step 4 — Test the Flow
Open the built-in Test simulator to walk through your flow conversationally — exactly as a customer would experience it, but without publishing. Type replies, tap menu options, and watch the bot follow your connectors so you can confirm every branch behaves as intended.
Testing is the fastest way to catch a dead-end option, a menu branch wired to the wrong node, or a variable that never gets set.
Step 5 — Publish
Before you publish, the Flow Builder runs a validation pass:
- Errors — problems that block Publish, such as an unconnected node or a menu option with no destination. These must be fixed first.
- Warnings — advisories that don't block Publish but are worth reviewing, such as an unused variable.
Use Save at any time to store your work as a draft — a draft is never live. When validation is clean, click Publish to make the flow active on your WhatsApp number. From that moment, inbound messages are handled by your bot.
Node Reference
Nodes available from the left palette:
| Node | What it does |
|---|---|
| Message received | The trigger every flow starts from. Fires when a customer sends your number a message. |
| Message | Sends a text message. Supports variables via {{name}}. |
| Menu (list) | Presents a list of choices (up to 10 options). One output per option. |
| Buttons | Presents up to 3 quick-reply buttons. One output per button. |
| Collect | Waits for the customer's reply and saves it into a variable. |
| Condition | Branches on data with a True and a False output. |
| Business hours | Routes the conversation via Open or Closed outputs depending on the time. |
| Template | Sends an approved WhatsApp message template. |
| Wait | Pauses the flow for a set time, then continues. |
| API / Webhook | Calls an external system and can map its response into variables. |
| Handoff | Hands the conversation to a human agent. |
| End | Ends the flow. |
Best Practices
- Open with a clear welcome — tell the customer who they've reached and what to do next.
- Keep menus short — even though a list allows up to 10 options, 3–5 is easier to scan. Use Buttons (max 3) for the most common choices.
- Always offer a human — include a "Talk to an agent" option wired to a Handoff node so customers are never trapped.
- Handle after-hours — use a Business hours node so closed-time contacts get an honest "we're closed" reply instead of silence.
- Name variables clearly —
{{customer_name}}beats{{v1}}when you revisit the flow months later. - Avoid dead ends — make sure every branch leads somewhere; the validation pass flags unconnected nodes.
- Test, then publish — walk every branch in the simulator before you Publish, and again after any edit.
- Use Arrange — tidy the layout regularly so the flow stays readable as it grows.
FAQ
Does the bot use AI?
No. The Flow Builder runtime is rule-based and deterministic — it follows the exact menu and branch logic you draw on the canvas. It doesn't use an AI or LLM to interpret free-form messages, which makes its behaviour fully predictable and easy to test.
Can I edit a flow that's already live?
Yes. Editing a published flow creates a working draft, so your live bot keeps running unchanged while you make and test edits. Your changes only reach customers when you Publish again — so you can safely refine and re-simulate before pushing an update.
What happens after business hours?
Add a Business hours node to control this. During opening hours the conversation follows the Open output (for example, to your menu); outside them it follows the Closed output, where you can send a message explaining you're closed and when you'll be back. Without a Business hours node, the flow behaves the same at all times.
How do I hand off to a human?
Wire the relevant option — typically a "Talk to an agent" menu choice — to a Handoff node. When a customer reaches it, the conversation is passed to a human agent to continue. It's good practice to include a handoff path in every flow.
Does saving a flow make it live?
No. Save stores a draft only. A flow goes live on your WhatsApp number when you Publish it — and Publish is only available once the validation pass reports no errors.
Ready to build your first bot?
Open the Flows tab under Messaging — WhatsApp, or explore rich messages and campaigns to make your flows more engaging.