Build
DM flows reference
Every step type in the flow builder, what it does and how triggers work.
A flow is a graph of steps that starts from a trigger. Draft as long as you like; only the published version runs. Publishing validates the flow and lists anything that needs fixing.
Triggers
| Trigger | Starts when |
|---|---|
| Keyword | An incoming DM contains or equals one of your keywords |
| Incoming message | Any DM arrives (with a per-contact cooldown) |
| New contact | Someone messages you for the first time |
| Story reply or mention | Someone replies to your story or mentions you in theirs |
| Comment follow-up | Someone replies to a comment automation's DM (set on the automation) |
| Event | An event with a given name arrives from the API or an integration |
| Manual | You run it from the dashboard or the API |
Steps
| Step | What it does |
|---|---|
| Send message / media | Sends text, an image, video, audio or file (from a public link) |
| Link buttons | Text with up to 3 buttons that open a link |
| Quick replies / Options menu | Up to 13 tappable replies; each option is a branch |
| Ask a question | Waits for a reply, validates it (text, email, number, date, choice) and saves it |
| Condition | Branches Yes/No on tags, saved details, answers or keywords |
| Wait | Pauses for minutes, hours or days |
| Add / remove tag, Set detail | Updates the contact |
| Assign agent | Assigns the chat to a person or by your assignment rules |
| Call webhook | Sends the contact and variables to your URL and reads the JSON response |
| AI reply | Answers from your knowledge base |
| Hand over to human | Stops automation and notifies your team |
| Create deal / Move deal | Adds the contact to your sales pipeline or moves their open deal |
| Payment link | Creates a Razorpay payment link and sends it in the chat |
| End | Finishes the flow |
Merge fields
Use {{first_name}}, {{name}}, {{username}}, {{trait.city}} for saved details and {{var.answer}} for answers collected earlier in the flow.
Instagram's reply window
Flows can only message someone within 24 hours of their last message. Message steps that come due after that are skipped and logged on the run.Loops must wait
A loop that never waits for the contact would run forever, so publishing rejects it. Add a question or a wait inside the loop.Something missing or unclear? Tell us and we'll improve this page.