Instagram DM flows: how to build a conversation people finish
An Instagram DM flow is a conversation you build once and the software replays one message at a time. Somebody sends a word, the flow answers, waits for their reply or their tap, stores what they said, and moves to the next step. Instead of one DM carrying a link, you get a short exchange that can ask a question, branch on the answer and hand the thread to you when it matters. The build takes an afternoon. Designing one people finish is the part worth thinking about.
A DM flow is a state machine, not a script. Every step either sends something and carries on, or stops and waits for one specific reply. Count the stops before you build anything, because each stop is a place somebody can leave.
What a flow is, and what it is not
A single automated DM is a delivery. Somebody comments a keyword, a message arrives with a link, and that is the end of it. A flow is a conversation with a memory: it knows what this person answered two steps ago, so the third message can depend on the second answer.
That memory is the whole difference, and it is also the cost. A delivery either worked or did not. A flow can be abandoned halfway, which leaves you with half an answer and the person with an unfinished chat. So the useful question at the start is not what the flow could ask. It is how few stops you can get away with.
Three shapes cover most of what people actually build:
- A menu. One message, two or three buttons, each going to a short answer. Nobody types anything. This is the one that almost never gets abandoned, because tapping is not work.
- A form. Two or three questions in a row, then whatever they were promised. This is the giveaway entry and the free guide, and every question you add loses some of them.
- A sorter. One question that decides which of your paths they belong on, then a different set of steps for each. A wholesale buyer and somebody wanting one box get different questions, from one flow.
A flow is also not a way to message people whenever you want. It answers inside the thread they opened, under the same rules as any other automated DM, so Instagram's messaging window applies exactly as it does to a single reply.
Design it backwards from the thing they wanted
Write down the last message first. That is the link, the price, the booking, the code. Then add only the steps that are genuinely needed to send it, and stop.
- Name the payoff in one sentence. If you cannot, the flow has no ending and people will feel that in the second message.
- Ask for the fewest things that ending needs. An email address is one thing. An email, a phone number and a city is three, and the third one is usually curiosity rather than need.
- Turn every question you can into buttons. A tap is instant and cannot be typed wrong. Typing is where people put their phone down.
- Put the hardest ask last. Somebody four steps in has already invested something; the same question first is a stranger asking for your number.
- Give every branch an ending. A path that runs out with nothing sent reads as a broken bot, and it is the most common fault in a first flow.
- Add a way to reach a person. One button that stops the automation and leaves the thread to you is worth more than any clever branch.
The other design decision is durability, and it is easy to miss because both options look the same while you are building. Buttons under a message stay in the thread forever, so somebody can scroll back a week later and tap. Quick replies are chips above the keyboard, and they vanish the moment the person types anything. Use buttons for a menu people might come back to and quick replies for a question you want answered now.
The steps you can actually put in a flow
HookSend has fourteen kinds of step. They sound like a lot until you see that most flows use four of them. What matters is which ones stop and wait, because those are your decision points.
| Step | What it does | Waits? |
|---|---|---|
| Starts the chat | The word or words that trigger the flow. Whole-word by default, and several keywords behave as OR unless you ask for all of them | No |
| Send a message | A DM, with up to three link buttons under it and a photo or video before it | No |
| Offer buttons | A prompt with up to three tappable choices, each going to its own step. Stays in the thread | Yes |
| Offer suggestions | Up to thirteen chips above the keyboard. Same branching, but they disappear once the person types | Yes |
| Show cards | A swipeable row of up to ten pictures with buttons. Waits only if a card button goes to another step | Depends |
| Ask for something | One question, and the answer is stored against the person. Email, phone, a number, a date, a link, free text, or a follow check | Yes |
| Check an answer | Branches on a stored answer or on a tag they carry | No |
| Check the time | Branches on your own opening hours, in your own timezone | No |
| Tag this person | Puts a label on them, or takes one off. Nothing is sent | No |
| Let the AI answer | Answers their question from your uploaded documents | No |
| Let the AI choose the path | Reads what they wrote and picks one of up to eight paths, with a fallback for none of them | Yes |
| Send to a webhook | Posts what the flow knows to a Google Sheet, Zapier or your own site. The chat carries on either way | No |
| Hand over to a person | Stops everything automatic in that thread until you reply yourself | Ends it |
| End the chat | A clean finish | Ends it |
Two of those steps spend AI credits, and nothing else in a flow does. Letting the AI choose the path costs 1 credit each time it decides, and letting the AI answer from your documents costs 2. A flow made only of messages, buttons, questions, tags and conditions costs nothing beyond the DMs it sends.
Instagram's limits, which are stricter than they look
These are not style guidelines. A message with four buttons is not trimmed to three: Meta refuses the whole send, so the person receives nothing at all and the only trace is a line in a log nobody is reading. That is why they are worth knowing before you write the copy.
| Limit | Number | What happens past it |
|---|---|---|
| Buttons under one message | 3 | Meta rejects the whole message. Nothing arrives |
| Quick replies on one message | 13 | Same rejection |
| Characters on a button | 20 | Silently cut on the phone, so the label ends mid-word |
| Text above buttons | 640 | Cut. Adding a button to a long message is what shortens it |
| Plain text, no buttons | 1,000 | Cut |
| Cards in one row | 10 | Rejected whole, like a fourth button |
| Card title, and the line under it | 80 each | Cut |
| Buttons on one card | 3 | Rejected whole |
| Paths one AI step may choose from | 8 | HookSend's own cap. More than eight and the choice gets worse, not better |
There is one more cap that is ours rather than Meta's. A single inbound message walks at most 50 steps that do not wait for anything, which stops a loop of conditions and tags from spinning forever. No ordinary flow comes close to it.
Asking for an email without losing the person
The Ask for something step checks the format of what somebody types, and the check is deliberately loose. An email needs an @ with something either side. A phone number needs enough digits. A strict pattern rejects addresses that genuinely work, and to the person typing that looks like a bot refusing a correct answer forever, which is the worst failure in the whole flow.
After three replies that fail the check, the step gives up and the conversation carries on. Somebody who cannot or will not give you an email is not trapped in a loop being asked again, which is both kinder and better for you: they still reach the rest of the flow.
Email and phone answers become leads you can export. An answer to a free-text question does not, and that is the right split. An address is a way to contact somebody. The answer to "which size?" is an answer to a question.
How a flow sits next to the rest of your automation
This is the part nobody reads until something surprises them. Order matters, and it is fixed.
- Campaigns go first. A comment-to-DM campaign that also listens for incoming DMs takes the message before any flow sees it, so a reel's link keyword still wins over a flow that happens to use the same word.
- Flows come next, on anything no campaign wanted.
- Knowledge bases come last, answering whatever neither took.
Two consequences worth knowing. If a flow trigger overlaps with a campaign keyword, the flow never runs, and nothing looks broken because the campaign is replying perfectly. And if you want a flow to start from a comment rather than a DM, the route is a campaign whose button hands the person on, not a flow listening to comments.
Inside a flow, a conversation already in progress wins over any trigger. Somebody who has been asked for their email and types an address containing the word "price" does not start your price flow on top of the question that asked. The run in progress keeps them. And when a run finishes, the next one starts empty, so a condition can never branch on something the person said last week.
A handover ends all of it. Once a thread has been passed to you, nothing automatic sends in it again until you have replied yourself, which is the behaviour you want the moment a real conversation has started.
What the builder refuses to publish
A broken flow fails quietly. The person gets nothing, and you find out weeks later when you wonder why the giveaway had four entries. So the checks run at publish rather than at send, and they split into two kinds.
Errors stop the publish. A button pointing at a step that no longer exists, a fourth button, a card image that is not a public https link, a webhook address that is not a public https name, a loop with no way out, a step no path from any trigger reaches. Warnings do not stop anything. Copy that Instagram will truncate, a branch that quietly ends, a time check whose two branches both end the run so the check changes nothing.
Which plan runs flows
Flows come with Growth at ₹899$25 a month, which runs 3 live at once, and Agency at ₹1,599$40, which runs 10. The 15 day trial includes 2 and needs no card. Extra live flows are ₹49$3 each for 30 days, but only on a plan that already includes one.
Two details about limits that catch people out. Only live flows count, so a paused draft is free. And a workspace that moves down to a plan without flows can still open and edit what it built: saving needs nothing, only switching one on needs the plan.
The AI steps are charged separately in credits, from the same monthly allowance Comment Guard spends. An AI path is 1 credit per decision, an answer from your documents is 2. Growth includes 2,000 credits a month and Agency 5,000, and the trial carries 500.
Start from a template, then delete half of it
There are seven ready-made flows, each of which passes the validator as it stands: an AI front desk, a giveaway entry, a price list menu, a free guide swap, an open-or-closed hours check, order support, and book a call. Every one of them gets fresh step ids when you use it, so two flows made from one template never collide.
The useful move with a template is subtraction. Open the one closest to your job, change the words, and delete any question you cannot name a use for. A flow that asks three things and uses one is a flow with two extra places to lose somebody.
The short version
Write the last message first. Work backwards, adding only the steps that message needs. Turn questions into taps where you can, put the hardest ask last, give every branch an ending, and leave one button that reaches a human. Then test it from a second account, all the way through, including the answer you expect people to get wrong.
Questions people ask about this
- What is an Instagram DM flow?
- A DM flow is a conversation you build once and the software replays one message at a time. Somebody sends a keyword, the flow replies, waits for their answer or their tap, stores what they said, and moves to the next step. Unlike a single automated DM, a later message can depend on an earlier answer, which is what makes a giveaway entry or a two-path price enquiry possible inside Instagram.
- How is a DM flow different from comment-to-DM automation?
- Comment-to-DM is one delivery: somebody comments a keyword and a message with your link arrives. A flow is an exchange that can ask questions and branch on the answers. They also start differently. A campaign is triggered by a comment on a post, while a flow is triggered by a word sent in a DM, or by tapping a campaign button that hands the person on.
- How many steps should a DM flow have?
- Count the steps that wait for a reply rather than the total. One or two is comfortable, because each one is a point where somebody can stop answering. Three is a form and needs a payoff worth filling in. If you need four answers, ask whether buttons could replace two of them, since a tap costs almost nobody and typing is where people put their phone down.
- Can a DM flow collect an email address?
- Yes. The Ask for something step can request an email, a phone number, a number, a date, a link or free text, and the answer is stored against the person who sent it. Email and phone answers become leads you can export as a spreadsheet. The format check is loose on purpose, and after three replies that fail it the step moves on rather than trapping somebody in a question they cannot answer.
- Why is my DM flow not triggering?
- The usual cause is that a campaign took the message first. Campaigns are evaluated before flows, so a campaign listening for incoming DMs with the same word answers it and the flow never sees it. After that, check the flow is published rather than saved, that the trigger word matches whole-word, and that the thread has not been handed to a person, since nothing automatic sends in a thread after a handover until you reply yourself.
- How many buttons can one message in a flow have?
- Three, and this is one of Instagram's limits rather than a preference. A fourth button does not get trimmed. Meta rejects the whole message, so the person receives nothing. If you need more choices use quick replies, which allow up to thirteen chips above the keyboard, with the trade-off that they disappear once the person types anything.
- Which HookSend plan includes DM flows?
- Flows come with Growth at ₹899$25 a month, which runs 3 live at once, and Agency at ₹1,599$40, which runs 10. The 15 day free trial includes 2 and needs no card. Extra live flows are ₹49$3 each for 30 days on a plan that already includes one. Paused flows do not count against the limit.
- Do DM flows cost AI credits?
- Only the two AI steps do. An AI path that reads a message and picks a branch costs 1 credit each time, and an answer generated from your own uploaded documents costs 2. Messages, buttons, questions, tags, conditions, time checks and webhooks cost no credits at all, so a flow built without AI steps spends nothing beyond the DMs it sends.
- What happens when somebody in a flow wants to talk to a real person?
- Point that branch at a handover step. It ends the automated run and stops everything automatic in that thread until you have replied yourself, so nobody is being answered by a script while they wait for you. It is worth adding to every flow, because the cost of a bot talking over a real conversation is higher than the typing it saved.
- Can I edit a DM flow while it is live?
- Yes, and small changes to wording take effect straight away. The one thing to watch is that a save which leaves errors behind switches a live flow off rather than being refused, so your work is kept but the flow stops answering. It stays paused until the errors are fixed and it is published again.