Every automation step, explained in plain English
The full palette, grouped by what it's for, with the setup each step silently depends on.
An automation step — a "block" — is one instruction on the flow canvas: something that starts a flow, decides whether it continues, does something, or controls timing. There are around forty-five of them. This is the whole palette, grouped by job, with the traps in each group.
Read it as a reference rather than front to back. The part most worth your time is the setup notes: several steps look like they are working when they are not, because something has to exist elsewhere in your account first.
Triggers — how a flow starts
Every automation has exactly one trigger and it is always the first step.
| Step | Fires when | Conversation window |
|---|---|---|
| Customer Message Received | A customer messages you on WhatsApp, Instagram or Messenger | Open — free text allowed |
| Agent Sends Message | Someone on your team sends a message in a chat | n/a |
| Shopify Store Event | One of seven store events arrives | Usually shut — template needed |
| External Event Received | Your own software posts an event to us | Usually shut — template needed |
That third column is the single most important thing on this page. A flow started by a customer can say anything, free. A flow started by an order or by your own system is landing on a chat the customer may never have written to, so it needs an approved template and it is charged. This is the 24-hour window in practice.
Conditions — deciding whether to continue
Some conditions stop the flow if they fail. Others split it in two. The difference is drawn on the canvas: a stopper has one exit, a brancher has two.
Conditions that stop
- If First Message — only continue if this is the customer's first ever message. Essential on any welcome flow.
- If Customer Message Contains — keyword matching, one keyword per line, either "contains" or "exact". Covered properly in keyword triggers that actually match.
- If Customer Sent — checks the message type: text, image, document. Not its words. Confusing these two is a common bug: use Contains for words, Sent for attachments.
- Check Customer Tags — include or exclude by tag, or "has no tags at all".
- Came From a Facebook Ad — passes only for someone who arrived by tapping a Click-to-WhatsApp ad. It fires on the ad click itself and never on their later messages, so never put an If First Message before it.
- If Customer Info — stops if a piece of saved information is missing.
- Pause Before Repeating — a cooldown, in minutes, so a flow cannot nag.
Conditions that branch
- Business Hours Check — open / closed, from a weekly schedule plus holidays. Handles overnight hours correctly.
- Time of Day Check — before / after a single daily cutoff. Use this for a dispatch deadline; use Business Hours for a weekly schedule.
- Has the Customer Replied? — yes / no, on whether they have sent anything since the flow started. Put a Wait before it to define the window.
- If Customer Info (Yes/No) — branches on whether you already know something, rather than stopping.
- If Message From Number — branches on who sent it, against a list of numbers you supply.
Asking and sending
- Send WhatsApp Message — either free text or an approved template. Free text only works inside an open window.
- Ask Customer a Question — the workhorse. Reply types are buttons (max three), list (a scrollable menu), free text, or date. Each option becomes its own branch. It can save the answer straight onto a contact field, and it can be sent as a template so it reaches a cold chat — which is how order-confirmation flows work.
- Send WhatsApp Image — an image by URL or from your media library.
- Wait for Button Reply — waits for a tap on a message you already sent.
- Forward Template to Number — sends an approved template to other numbers, not the customer. This is how you alert your own warehouse or a partner. It always uses a template so it lands even with no open session.
The buttons limit is three. WhatsApp allows a maximum of three interactive buttons. Anything more needs the list reply type. Merchants routinely build five-button menus in the canvas and discover the problem in production.
Remembering things
Three steps write data, and they are not interchangeable.
| Step | Writes to | Needs setup first? |
|---|---|---|
| Update Customer Attribute | A named contact field, visible on the contact | Yes — the field must exist |
| Remember Info | Internal memory for the flow | No |
| Update Customer Tags | Tags on the contact | Yes — you pick existing tags |
The trap is Update Customer Attribute. The field must already be defined under Settings → Contact Attributes → Add Field. If it is not, the step does not error — it silently does nothing, and the variable you read later comes back empty. If a flow is mysteriously sending "Hi ," this is almost always why. See saving customer answers to contact fields.
Tags are the same story in a different shape: the step points at tags that already exist in your account, so a flow copied from elsewhere will not carry someone else's tags with it.
Reaching outside WhatsApp
- Google Sheets — append a row, update a row, or find a row and save its cells onto the contact. Branches success / failure. You pick the sheet by signing in with Google inside the step; no sheet is ever pre-filled.
- Call External API — GET to look something up, POST to send something. Branches success / failure. This one needs a developer to supply the endpoint; everything downstream of it does not.
- Update Shopify Order Tags and Update Shopify Order Status — write back to the order, including cancelling it. Cancelling needs the write permission, so a store connected before that scope existed must reconnect.
- Send Facebook Conversion — reports a lead or purchase back to Meta so ad delivery optimises on it. Does nothing for a customer who did not come from an ad, so it is safe to leave in a shared flow.
Always wire the failure branch of a lookup. It fires when there is no matching row or the sheet is unreachable, and a flow that ignores it leaves the customer in silence.
Google Sheets is worth understanding properly, because it is the cheapest way to give a flow access to data you already keep — order lists, stock counts, waitlists, returns logs. It has its own guide: using a Google Sheet as your automation's database. The same connection also works the other way round, letting you send WhatsApp messages straight from a spreadsheet.
The External Event trigger has a guide too, since it is the one step that needs a developer for a moment: starting a flow from your own system.
AI steps
- Answer from Knowledge Base — searches your own crawled website and approved question-and-answer pairs, and sends a grounded answer. It branches answered / unanswered. It never answers from outside that material, which is the point.
- AI Check — asks a model to decide or extract something, and makes the result available to later steps. It can look at an image the customer sent. Follow it with a branch step to act on the result.
Both leave their configuration blank on purpose — the knowledge base collection is something only you can choose. More in AI answers from your own website.
Handing over and housekeeping
- Assign Chat — give the conversation to a team or a person.
- Update Conversation Status — open, pending or resolved.
- Add Internal Note — a note your team sees and the customer never does. Underrated: a note carrying the customer's answers saves your colleague re-asking.
- Cancel Pending Question — stops the bot waiting on an answer, so the customer's next message reaches a human. Pair it with the Agent Sends Message trigger.
- Wait Before Next Step — a delay in minutes.
- End Automation — stops this path. No exits.
The five steps that need something set up first
If a flow looks right and does nothing, check this list before anything else.
- Update Customer Attribute — the contact field must exist under Settings → Contact Attributes.
- Update Customer Tags and Check Customer Tags — the tags must already exist in your account.
- Send WhatsApp Message in template mode — the template must be approved by Meta. Approval times vary from minutes to more than a day, and Meta caps templates at 250 per account for an unverified business portfolio, 6,000 once verified.
- Answer from Knowledge Base — the knowledge base must be built and crawled.
- Google Sheets — you must sign in with Google inside the step and pick the sheet.
How the pieces fit together
A flow is a chain, and every branch is a fork in that chain that either rejoins or ends. Two rules keep flows readable: every branch should end at a message, a handover or an End Automation; and paths that do the same thing afterwards should merge back into one shared step rather than duplicating it.
One structural limit worth knowing: a flow is a one-way chain. It cannot loop back on itself to re-ask a question. If you want a customer to be able to start over, that is a fresh trigger rather than a loop.
For what happens after the flow sends — delivery, charges and the tier ceiling on how many people you can start conversations with in a day — see Meta's pricing documentation and our summary in messaging limits and tier caps.
Frequently asked questions
What is the difference between Update Customer Attribute and Remember Info?
Update Customer Attribute writes to a named contact field that shows on the contact and must already exist under Settings → Contact Attributes. Remember Info stores something internally for the flow and needs no setup.
Why does my Update Customer Attribute step do nothing?
Because the contact field is not defined. The step silently no-ops if the field does not exist under Settings → Contact Attributes, which is why variables read back empty later.
How many buttons can I put on a question?
Three. Use the list reply type for more options — it shows a scrollable menu instead.
What is the difference between If Customer Sent and If Customer Message Contains?
If Customer Sent checks the message type — text, image, document. If Customer Message Contains checks the words. Use Contains for keywords.