Structure
One job per Flow
One job per Flow
Name the outcome (
Booking, FAQ, Qualify). Put shared routines in child Flows and call them with Go to Flow.Happy path first
Happy path first
Build the main success route, then add failure, timeout, and “I don’t understand” branches.
Always wire an else
Always wire an else
Every Condition and interactive menu needs a fallback. Silence feels like a broken bot.
Stay modular before you hit 250 blocks
Stay modular before you hit 250 blocks
Split early. Large monolith Flows are hard to test and dangerous to publish.
Content and channels
- Prefer Omnichannel messages; specialize only when required.
- Keep Quick Reply labels short.
- Respect media limits per channel.
- Mind Meta messaging windows when using long Delays or drips.
Data
- Create fields before you build; use stable names.
- Collect only what you use.
- Tag for coarse routing; use custom fields for values.
- Document the field contract when a parent Flow calls a child.
AI inside Flows
- Use AI Action for one-shot classify/extract steps.
- Constrain model output so Conditions stay reliable.
- Hand off to a full AI Agent for open-ended chat.
Release discipline
Operations checklist
- Published?
- Trigger attached and ordered correctly?
- Fallback path exists?
- Fields/tags verified?
- Channel-specific media tested on device?
- Unsubscribe path for drips?
Next
Recipes
Copyable patterns that apply these practices.
Limits
Hard caps to design around.