In this article9
  1. What a “flow” actually is: a conversation drawn rather than written
  2. The blocks: the steps you build everything from
  3. From blank canvas to publish: the actual order
  4. A complete example: a customer asks “how much?”
  5. The validator: what blocks publishing, and how to fix it
  6. The assistant: it builds with you, and fixes what broke
  7. When a flow is the wrong tool
  8. What the builder does not do — and what to do instead
  9. A checklist before publishing

The question that reaches our support in these exact words: “can I build the automatic reply myself, without needing a developer?”. The answer: you build it yourself, because building here is adding a step and joining it with a line. But the part usually neglected is not the building — it is what happens to the customer who writes something you did not account for. This guide deals with both.

What a “flow” actually is: a conversation drawn rather than written

A flow is a diagram. You put cards in it — each card one step: “send this message”, “show these buttons”, “wait an hour”, “hand to an agent” — and join them with lines. The line is the meaning: “after this step, go to that one”. And when a customer’s message arrives, the platform walks the lines exactly as you drew them, with no improvisation.

  • Every flow starts with a trigger. One step answering the question “when does this run?” — an incoming message containing a certain word, a new conversation, or a scheduled time. Without a trigger the flow cannot be published at all.
  • What lies between the steps is the decision. A buttons card produces a path per button, and a condition card produces “true” and “false” paths. Branching is drawn, not written.
  • The memory is called variables. The customer’s answer is stored under a name you choose, then used in any later step — in a message’s text, or in a condition’s comparison.
  • A path either ends or is handed over. Either an “end” card or a “hand to an agent” card. A path ending in neither is silence in the customer’s face.

The blocks: the steps you build everything from

The block list is split into groups: triggers, messages, logic, AI, actions (which include a card that calls your external system), contacts, bot control, and the end. The shop and channel groups do not appear at all unless you have a live connection, so the list shows what you have rather than what you might buy. These are the steps you will use in nine flows out of ten — and each has a configuration condition the validator enforces before publishing:

The stepWhat it doesWhat the validator requires
Incoming messageThe commonest trigger: it fires when a message arrives matching a rule you set (the message text contains “price”, the button text equals something, the sender’s number starts with…).At least one matching rule, with a field, an operator and a value
Keyword triggerThe simplest form to start with: a list of words, and whichever appears starts the flow.At least one word
Send a messageYou write the text here, or choose a ready message from the message library, or an approved template.Message text or a choice from the library — and the library must be published
Buttons / listShows the customer ready options instead of them typing. Every option has its own output from the card.Text above the options, and at least one option. 3 buttons at most, or 10 list items
Ask a questionSends a question and waits for the customer’s reply, then stores what they wrote in a variable you name.The question text, and a variable name to store the answer in
ConditionCompares a variable with a value, and produces two paths: “true” and “false”.A variable and a comparison operator — with both branches connected
DelayPauses the path for a period before the next step: minutes, hours or days.A duration greater than zero with its unit, up to a maximum of thirty days
Set a variableWrites a value into a variable yourself, rather than waiting for it from the customer.The variable name
AI agentHands the conversation to an agent working towards a goal rather than fixed text, then takes it back through one of four routes.A model, a goal, a system prompt, and at least one exit route connected
OTP verificationSends a verification code through an authentication template and waits for it to be entered, then produces success and failure paths.An approved authentication template, with both the success and failure paths connected
Hand to an agentEnds the machine’s role and puts the conversation in front of your team in the inbox. It has no output — it is a terminus.Nothing — you only connect into it
Add a tagPuts a tag on the contact that stays after the conversation ends, so it can segment campaigns later.Choosing an existing tag
EndCloses the path explicitly.That no line leaves it going forward
Flow builder
Incoming messageTrigger
Send a messageWelcome 👋
Search for a block…
Messages
Send a message
Ask a question
Buttons / list
OTP verification
Logic
Condition
Loop
Delay
Set a variable
AI
AI agent
Actions
HTTP request
Hand to an agent
The block list as it actually opens: from the + on a card, not from a side panel. Split into groups with a search, and the step is added already connected to what came before.

From blank canvas to publish: the actual order

This is the sequence as you actually go through it on screen. The order is deliberate: the validator and the simulator come before publishing rather than after, because discovering something after publishing means a customer discovered it.

Building a flow — the steps on screen

workflow
  1. 1
    Create a flow and choose the trigger typeFrom the flows page: a name, an optional description, and the trigger type. The name is what you will see in lists later, so make it describe the case rather than a number.
  2. 2
    Add the next step from the + on the cardThere is no side panel to drag from. Every card carries a + at its exit point; press it and the block list opens, split into groups — triggers, messages, logic, AI, actions, contacts, bot control — with a search. The difference is not cosmetic: the step is added already connected to what came before, so no orphaned card appears for you to forget.
  3. 3
    Connect what is left with linesWhat you did not add from a + you connect by hand: drag from a card’s exit point to another card. Cards with several paths — buttons, condition, the AI agent — have an exit point per path, each with its name shown on it.
  4. 4
    Set each card’s settingsPress the card and the settings panel opens: the message text, the buttons, the variable name, the delay duration. Insert a variable into any text from the “insert variable” button rather than typing it by hand — the list shows the variables that are actually defined.
  5. 5
    Run the simulator and walk the path as a customerFill in the trigger’s data — the incoming message text, the number and the name — and press “run”. The conversation walks in front of you: you press the buttons and type the replies, and the variables panel shows every variable’s value moment by moment. Nothing goes out to WhatsApp.
  6. 6
    Open the “flow problems” panel and empty itThe panel is open while you build and updates as you go. What it finds is sorted into errors, warnings and notes — and errors alone are what block publishing.
  7. 7
    PublishPublishing saves a copy in the version history. If a later edit breaks something, you restore the old version — and restoring copies it into your draft for you to review and then publish, so it never goes live by itself.
Three stations come before publishing: the settings on each card, then the simulator, then the problems panel. The publish button does not work while a single error remains.

A complete example: a customer asks “how much?”

The commonest flow in the Saudi market by far, and the one most often built incompletely. The goal: whoever asks gets a number within seconds, and whoever does not find their answer reaches a person — not silence.

The “how much?” flow — from the first message to the handover

example
  1. 1
    The trigger — “incoming message” with a clear ruleThe field “message text”, the operator “contains”, the value “price”. Add a second rule for “how much” and a third for “what’s the price”, because a Saudi customer writes all three. And the trigger itself can capture the message text into a variable for you to use later.
  2. 2
    The options — a “buttons / list” card with three buttons“Which service are you asking the price of?” then three buttons: “cleaning”, “maintenance”, “something else”. Three is WhatsApp’s maximum — if you have more services, make the third “other options”, opening a list of ten items.
  3. 3
    The capture — “set a variable” on each button’s outputOn the “cleaning” button’s path put a card writing service = cleaning, and the same on the “maintenance” path. Now the customer’s choice is a value you can compare and build on, rather than a button press that vanishes a moment later.
  4. 4
    The tag — “add a tag” on the same pathA tag of “interested — cleaning” stays on the contact after the conversation ends. This is the step that turns an automatic reply into a marketing asset: a month later you have a ready segment, built from real behaviour rather than guesswork.
  5. 5
    The routing — a “condition” card with both branches connectedIs service one of the services with a published price? The “true” branch goes to a “send a message” card carrying the package and the price. The “false” branch goes to the handover. Never leave a branch dangling — the validator will block publishing, and it is right to.
  6. 6
    The safe exit — “hand to an agent”The “something else” button’s path and the “false” branch both end here. The conversation appears in the team inbox and the automatic reply stops. This card has no output — and that is deliberate: after it, a person takes over.
  7. 7
    The close — an “end” card after the price messageWithout it you will see a note that the send step has no next step. The note does not block publishing, but closing the path explicitly makes the diagram say exactly what you mean.
Seven cards. The sixth — the handover — is the difference between a flow that serves and a flow that annoys: everything you did not anticipate ends there.

The validator: what blocks publishing, and how to fix it

The “flow problems” panel checks the whole diagram on every edit, and grades what it finds into three levels: Error blocks publishing, aWarning passes but alerts you to what may fail at run time, and aNote blocks nothing. These are what appear most in practice:

What you see in the panelGradeThe fix
“This flow has no trigger”ErrorAdd a trigger card — every flow needs at least one starting point
The trigger has no outgoing connectionErrorConnect the trigger to the first step — otherwise the flow receives and does nothing
“This node needs both its true and false branches connected”ErrorConnect the missing branch — usually “false” — to a handover or an apology message
A connection pointing at a card that does not existErrorUsually the result of deleting a card and leaving its line. Fixed with one press and no AI usage
“An end node cannot be connected forwards”ErrorDelete the line leaving the end card — this is another free automatic fix
More than 3 buttons or 10 list itemsErrorReduce the number, or move the options into a list under an “other options” button
“The goal field is required” on the AI agentErrorWrite a specific goal for the agent — and the model and the system prompt too, all three are mandatory
“No incoming connection to this node”WarningAn orphaned card that will never run: connect it or delete it
One of the AI agent’s routes is unconnectedWarningThe agent has four exits (goal met, goal not met, handed over, failed). Give each one a destination
“This step may fail outside the 24-hour window”WarningSet a fallback template on the step, to be sent when the window is closed — the warning then turns into a reassuring note
“This step has no next step”NoteAdd an end card if the path has genuinely finished

The detail of approved templates — why they are rejected and how to be approved first time — is in the template approval guide.

The assistant: it builds with you, and fixes what broke

Inside the builder there is a panel called the “flow assistant”, and it does two things and no third: it responds to a request you write in plain language on the flow open in front of you, andit fixes the problems the validator finds. It is a tool working on an existing diagram, not a machine producing a finished flow from one sentence.

The working cycle with the assistant

loop
  1. 1
    You write the request in plain language“Add a delay after the welcome message”, or “explain what this flow does”. The panel shows how many steps are available in your workspace and which channels they cover, so you know the limits of what you can ask for.
  2. 2
    The assistant proposes changes, not proseThe proposal is a set of specific operations on the diagram: add a step, delete a step, create a connection, remove a connection, edit settings. They are shown to you summarised — “add two steps, create two connections” — not as prose for you to interpret.
  3. 3
    Nothing is applied before you press “apply”“Dismiss” leaves the canvas exactly as it was. And after applying, undo stays available in one step, so the risk in experimenting is practically zero.
  4. 4
    “Fix with AI” starts from the diagnosisFrom the problems panel you choose one problem or “fix all”. The assistant receives the diagnosis ready rather than inferring it, which is why this is its most accurate and least costly use.
  5. 5
    Some fixes use no AI at allMechanical problems — a connection to a deleted card, a line leaving an end card — are fixed arithmetically with no model call, and carry a “no AI” mark.
  6. 6
    The result is validated before it reaches the canvasAny change the assistant proposes passes through the validator first. A proposal that would have introduced a new problem is refused and you are told, rather than it landing on your diagram and breaking it.
The panel does not touch the diagram before you approve. And even after “apply”, undo reverses the whole change in one step.
  • It cannot invent a step type. The list of types allowed to it is built from your own workspace, so it never proposes a step for a channel you have not connected.
  • It tells you when it cannot. “This step sends an approved template and there is no template in your workspace” — an explicit reason and a clear action, not a silent failure.
  • It has a monthly allowance. If it runs out, it says so plainly. The mechanical fixes stay available because they use none of it.
  • It does not replace review. It speeds up building and corrects what is broken; the decision “is this the right path for my customer?” stays yours.
The flow assistant
Add a delay after the welcome message
The proposed change
Add one step — DelayCreate one connection
ApplyDismiss
Nothing is applied until you approve it.
The assistant does not edit your diagram directly: it shows what it intends to do operation by operation, and waits for “apply”. “Dismiss” leaves the canvas as it is.

When a flow is the wrong tool

A flow assumes you know the questions in advance. That is true of “how much?”, “where is my order?” and “what are your hours?”, and entirely false when a customer writes a whole paragraph about their situation and expects a reply specific to it. At that point more buttons do not fix the problem; another tool does.

A flow or an AI agent?

decision
Could you write every possible question and its answer on one sheet of paper?
Yes — a countable set of questions with fixed answers

Build a flow

  • Prices, appointments, order status, booking confirmation
  • The same reply word for word every time, reviewable and auditable
  • No AI model usage — the cost is known in advance
No — the customer describes their situation in their own words

Use an AI agent

  • Consultations, complaints, technical questions in countless wordings
  • You give it a goal, a system prompt and knowledge sources instead of fixed text
  • It exits by one of four routes, one of which is a handover to an agent
One question settles the choice: could you write every possible question and its answer on one sheet of paper?

What each one offers

comparison
 The flowThe AI agent
A literal, fixed reply every timeThe agent composes its own wording, so the text changesYesPartly
Handling a wording you did not anticipateNoYes
A visible path, reviewable step by stepYou see the agent’s result and its exit route, not every step inside itYesPartly
A fixed cost with no model usageYesNo
Storing the customer’s answers in variablesYesYes
Handing to an agent when neededYesYes
The choice is not which is cleverer, but which matches the shape of your customer’s question. And most often you will use both in one flow.

What the builder does not do — and what to do instead

Being clear here saves you a week of trying. These are real limits, and each has a known alternative route:

  • The ready integrations inside the builder are Salla and Zid. A shop on either gives you ready triggers — a new order, a change of order status, an abandoned basket — and the order and customer data is available as variables inside messages directly.
  • There is no ready integration with CRMs. If your data lives in another system, the route to it is through the platform’s API, or through our team to arrange the connection — not through a card you drag onto the canvas.
  • A flow does not exceed WhatsApp’s limits. Three buttons, ten list items, and a twenty-four-hour window for free-form messages. The validator applies them to you before sending, rather than WhatsApp discovering them afterwards.
  • A flow does not fix a bad message. If your wording is long or vague, automation only delivers it faster. Read every message aloud before publishing — a sentence that stumbles when read stumbles for the customer.

And if you are bringing these conversations in from an ad, start from the click-to-WhatsApp ads guide — the first reply there is what opens the 24-hour window in the first place, and the flow is what makes it instant.

A checklist before publishing

  • Every buttons card and every condition card: every output has a destination, including “false” and “something else”.
  • The diagram contains at least one “hand to an agent” card, and the unexpected paths reach it.
  • The variable names are valid, and every variable you use in text was defined by an earlier step.
  • You ran the simulator twice: once on the correct path and once on a deliberately wrong one.
  • The problems panel is free of errors, and you read the warnings and made a decision on each.
  • Any free-form send step that might run outside the 24-hour window has a fallback template.
  • Tags are placed on the paths you will need in a later campaign.

Do I need a developer to build a flow?

No. Steps are added from the block list and joined with a line, and every step has an ordinary settings form — the message text, the buttons, the duration. The only thing resembling programming is the name of the variable you store the customer’s answer in: it must start with a Latin letter or an underscore and contain only letters, digits and underscores, or the validator rejects it by name. Everything else is choosing from a list or typing into a field.

How many buttons can I put in one step?

Three quick-reply buttons at most, or ten items if you use the list format instead of buttons. That is a limit from WhatsApp itself rather than the platform, which is why the validator treats it as an error that blocks publishing rather than a warning: a message exceeding it is not accepted by WhatsApp at send time. If you have more options, make the third button “other options”, opening a list step beneath it.

What happens if a customer replies with something I did not expect?

What you connected happens, and nothing else. A buttons step routes each button to its own output, and a condition step has two branches — “true” and “false” — and the validator blocks publishing if either is left unconnected. A reply matching nothing stops at that point and reaches nobody. The practical rule: every “unexpected” path must end in a handover step, not in a void.

Does the assistant build the whole flow for me from one sentence?

No, and that is not what it does. The assistant works on the flow open in front of you: it reads your request and proposes a set of changes to it — adding steps, connecting them, editing their settings, or deleting them — and shows them to you before anything else. Nothing is applied until you press “apply”, “dismiss” leaves the canvas as it is, and undo reverses the whole change in one step. It also cannot use a step type that does not actually exist in your workspace.

Can I try the flow without sending a message to a real number?

Yes — the simulator panel inside the builder. You fill in the trigger’s data (the incoming message text, the sender’s number, the contact’s name) and press “run”, and the conversation walks in front of you step by step: you press the buttons and type the replies, and a side panel shows every variable and its value at that moment. Nothing goes out to WhatsApp, and delay steps are skipped rather than waited out. And the simulator refuses to run a flow containing errors, showing them to you first.

Can the flow message the customer days after their last reply?

Not with a free-form message. Twenty-four hours after the customer’s last message the messaging window closes, and after that only a pre-approved template gets through — at 0.04 SAR for a utility message in the Saudi market, while a reply inside the window is free. This is why the validator puts a warning on any free-form send step that might run outside the window, and the warning clears when you choose a fallback template on that same step.