Skip to main content
A flow is built from 21 node types, grouped in the palette by what they are for. Every node stores the key of the node it continues to, which is what the arrows on the canvas draw. Text in a node is interpolated before it is sent, so {{ vars.name }} and {{ contact.name }} work anywhere a message does. {{ contact.name }}, {{ contact.phone }}, {{ contact.email }} and {{ contact.company }} are available on every run that has a contact, and {{ vars.<key> }} reads anything the flow has captured or set.

Message types

A Products node in single mode with more than one product sends only the first, and the validator warns. A multi-product message needs body text; WhatsApp rejects the send without it.

Ask and capture

These are the nodes that stop and wait for the customer. A variable key must start with a letter or underscore and use letters, numbers and underscores only — it is read back as {{ vars.<key> }}. Ask for a file’s Accept narrows what counts as an answer: a run waiting for a document should not be satisfied by a sticker. Anything else the customer sends goes through the flow’s unmatched-reply handling. The media URL an Ask for a file stores is served by us, not Meta’s short-lived one, so a value captured today is still fetchable tomorrow.

Actions and data

A failed Tag contact, Segment contact or Set attribute does not abandon the customer mid-conversation — the failure is recorded on the run and the flow carries on. An API request with fail on error switched on does end the run.
The URL of an API request goes through the same protection as an AI agent’s custom actions: private, loopback and internal addresses are refused, and redirects are re-checked at every hop.

Flow control

A Wait of 24 hours or more closes WhatsApp’s messaging window. After it, only a Template node will send unless the customer has written again in the meantime. The validator warns rather than blocking, because a template after a long wait is perfectly valid.
Connect flow does not nest, and that is deliberate: a contact can only be in one flow at a time, so ending first is also what makes an accidental loop between two flows terminate instead of growing. Leaving Hand to AI agent without a specific agent is the right default — routing order is a setting the workspace already made, and pinning one agent in a flow would quietly outrank it.

What a node needs before you can activate

Every non-terminal node must point somewhere real, every message node needs its text, and every capture node needs a prompt and a variable key. The editor’s validation bar lists what is missing and jumps to the node. See The flow editor.