Flows overview
Beta Starter plan or higher Agent role or higherA flow is a visual, button-driven conversation. You lay out nodes on a canvas — a greeting, some buttons, a question, a branch — and Relay runs that conversation with each contact who triggers it, one node at a time, waiting for their tap or reply where it needs to.
Flows are built for the moments a WhatsApp conversation should feel structured: a welcome menu that routes new versus existing customers, an FAQ picker, a few intake questions before a human takes over. They're available on every plan (Starter and up), and building or editing one needs at least the agent role — viewers can open a flow's Runs page, but can't create, edit or activate one.
When to use a flow
Reach for a flow when:
- You want the customer to make a choice — tap a button, pick from a list — and the next message depends on what they picked.
- You need to collect a few answers (name, email, order number) before routing the conversation onward.
- The conversation should pause and wait for the contact's reply before continuing.
If you just need Relay to react to something automatically — tag a new contact, send one auto-reply, wait a day and follow up, call a webhook — that's a job for Automations instead. See "Which should I use?" below.
Flows vs Automations
Relay has two separate systems for automatic WhatsApp behavior. They look similar from a distance — both start from a trigger — but they solve different problems.
| Flows | Automations | |
|---|---|---|
| Shape | A branching, per-contact conversation laid out as connected nodes | A trigger followed by a straight list of steps |
| Starts on | A keyword, a contact's first-ever inbound message, or manual only | A wider set of events — new message, keyword match, new contact, tag added, and more |
| Waits for a reply? | Yes — Send buttons, Send list and Collect input nodes pause the run until the contact responds | No — a step list runs straight through (a Wait step can pause for a fixed amount of time, but not for a reply) |
| Branches | Yes — each button, list row and If/else node has its own path | Yes — a Condition step has yes/no branches |
| Typical use | Menus, FAQ pickers, multi-step intake before a human takes over | Auto-replies, tagging, assigning conversations, timed follow-ups, webhooks |
| Where you build it | The flow builder — Canvas or List view | The automation step-list editor |
Both systems can be active for the same contact at once, with one caveat: while a contact has an active flow run, the New Message and Keyword Match automation triggers are suppressed for their messages, so the flow doesn't get talked over. First Message from Contact and New Contact Created automations still fire normally. See How flow runs work for the exact rule.
Which should I use?
- Does the next message depend on what the customer picks or types? If yes, build a flow. If you're just reacting to an event without needing their input, build an automation.
- Does the conversation need to pause and wait for a reply more than once? Flows are built around waiting; automations aren't.
- Is it a single auto-reply, a tag, an assignment, or a timed nudge? That's almost always simpler as an automation.
- Not sure? Start with a flow if there's any branching driven by the customer's own choice. Start with an automation if you're describing a rule ("when X happens, do Y").
What's in this section
- Tutorial: welcome menu — build a keyword-triggered menu from scratch.
- Tutorial: lead capture — collect a contact's answers and hand off to sales.
- Flow triggers — every way a flow can start.
- Node reference — every node, with its limits.
- How flow runs work — the per-contact run model.
- Monitoring runs — the Runs page.
- Templates and troubleshooting — the built-in templates, and what to check when something doesn't work.
For the other automatic-behavior system, see Automations overview.