Instagram DM automation usually stops working for one of four reasons: the automation was never set live, the comment didn't meet its conditions, the person never tapped the opener's button, or the app's webhook subscription silently failed. The last one is the hardest to spot, because everything in the tool looks correctly configured and nothing arrives.
Almost none of these are bugs. Instagram's messaging platform is built around a narrow set of permitted actions, and most of what reads as "the automation is broken" is one of those rules doing exactly what it says. The useful move is to work down the list in order, because the checks get progressively harder and the first two catch most cases.
Start here: is it live, and is it pointed at the right post?
A draft automation matches nothing. Tools keep automations in a live/paused/draft state and only resolve the live ones, so a rule that was built and previewed but never set live will look complete on screen and never fire once. This is the single most common cause and the fastest to rule out.
Then check what the automation is bound to. Most comment automations are attached to one specific post or reel, not to the account, so a comment on any other post is correctly ignored. If you built the automation from a post's own "automate this" action, it is bound to that post; if you meant it to cover everything you publish, that is a different setting and usually a different rule.
"They commented the keyword and got nothing" — usually the comment, not the tool
Four things about the comment itself decide whether it qualifies, and none of them are visible to the person who commented.
- It has to be a top-level comment. Instagram's
commentswebhook marks replies with a parent comment id, and automations generally match top-level comments only. Someone replying inside an existing comment thread — including replying to your pinned comment — often won't trigger anything. - Your own comments don't count. Instagram delivers a webhook for comments on your post including your own, so tools filter out the connected account's own comments. Testing your own automation by commenting the keyword yourself is the most common way to conclude, wrongly, that it's broken. Test from a second account.
- The keyword has to match the way the rule is written. Keyword matching is case-insensitive, so
LINK,linkandLinkall fire. What varies between tools is whether the keyword has to be the whole comment or merely appear inside it — "link please" may or may not match a rule set tolink. - The comment has to arrive after the automation went live. An automation acts on new comments from the moment it starts. It does not go back and answer the 400 comments already sitting on the post.
The link is a second message, and it waits for a tap
If the first DM arrived and the link never did, nothing is broken — that is the design. Instagram does not permit an app to send a promotional link cold, even in reply to someone's own comment, so a comment-to-DM automation is two messages:
- An opener sent as a private reply to the comment, carrying a button.
- The link, delivered only after that button is tapped. The tap registers as a postback, and that interaction is the opt-in the link was waiting for.
So a person who reads the opener and never taps receives no link, and the automation is working correctly. This is worth understanding before you rewrite anything, because the fix is copy, not configuration: the opener's job is to earn the tap. If a large share of people stop at message one, that is the message to change.
Two limits shape that second message. Instagram allows 80 characters for the card's text and 20 for its button label, so copy written without them in mind is cut on the wire rather than at the keyboard.
Why only one automation can answer a given comment
Meta permits exactly one private reply per comment. If two automations both match the same comment, only one can send — the second has nowhere to deliver. Overlapping keywords on the same post are the usual cause, and the symptom is that one automation looks like it "stopped working" while another on the same post is fine.
This is also why a well-built tool treats the public comment reply as at-most-once. Instagram does not deduplicate those, so a tool that retries without a guard produces a visibly botted-looking repeat in your comments.
Why it worked yesterday and not today
Four rules produce an automation that fires for some people and not others, on some days and not others.
- They already got it. Most tools deliver one link per person per automation, so the same follower commenting the keyword a second time is deduplicated on purpose. Turn dedupe off and they'll receive it again.
- The 24-hour messaging window closed. Once someone messages you — including a story reply, or a tap on your opener — Instagram opens a 24-hour window for standard messages. After it closes, a follow-up waits until they come back on their own. There is no drip sequence into a cold thread.
- A follow gate is holding the link. If the gate is on and the person doesn't follow, they get a prompt rather than the link. Gates are capped at a small number of asks and then hold the link rather than sending it, which reads as a failure and is a design decision.
- The account hit Instagram's send limits. Meta applies per-account rate limits — 750 automated private replies an hour is the published ceiling. When a reel takes off, pacing is the difference between answering everyone and getting throttled. The full numbers are in Instagram's DM limits.
The one where nothing looks wrong: a webhook subscription that never confirmed
This is the failure worth knowing about, because every screen in every tool will look correct while it happens.
Instagram delivers events only for accounts that are subscribed at the account level — a separate API call the app makes when you connect, on top of registering its callback URL with Meta. Those are two different things, and the second one is per-account. Without it, Meta sends nothing at all for your account. The tool's endpoint can be perfectly configured, your automation can be live and correctly bound, and no comment will ever arrive, because Instagram was never told to send them.
It fails quietly for a structural reason: a subscription call that doesn't land produces no error anywhere the creator can see. A tool built for this records the outcome rather than only logging it, retries accounts with no confirmed subscription on a schedule, and warns you on the automations screen that nothing can fire yet. inDM does all three. If you're diagnosing another tool, the question to ask support is direct: is my account's webhook subscription confirmed, and when was it last checked?
There is a related failure that is purely the tool's to own. Instagram sends the comment notification in two different payload shapes depending on which login type the app connects with — one nests the event inside a changes array, the other flattens it onto the entry. An app that reads only one shape drops every comment on the other, silently, with no error in any log the creator sees. It is invisible from the outside and it looks exactly like "automation doesn't work."
Is the Instagram connection still good?
Automations stop when the token behind them does. Reconnecting is the fix, and it's worth doing before deeper debugging because an expired token presents as a total silence rather than an error — the same symptom as the subscription problem above. If your tool shows a connection state, check it. If it doesn't, that is itself worth knowing.
What none of this will tell you
Some questions have no answer available, and a tool claiming otherwise is guessing.
- Whether they opened your link. Delivery and clicks are different measurements. inDM's own reporting ends at delivery and says so rather than showing a click number we don't have, so "it sent but did nothing" is a question we can't currently answer for you.
- Whether Instagram throttled you. Meta doesn't notify creators about rate limiting. The tool sees it in the API response, which is why the useful move is to ask for the delivery error rather than infer it.
- Story views and replies, for us specifically. Those need an Instagram Insights permission we deliberately don't hold, so those numbers don't exist on our side. We show what we have rather than a zero that reads as a result.
- Whether a follow triggered anything. It didn't, and it can't. Instagram publishes no follow event to any app — the full explanation is in can you auto-DM new followers.
The one thing you should be able to get is the actual error. Delivery failures are recorded, with the reason, and a tool that can't tell you why a message didn't reach Instagram is asking you to debug it blind.
The short version
Work down in order: is it live, is it bound to the right post, was the comment top-level and not yours, did they tap the button, and is the account's webhook subscription confirmed. Those five catch nearly everything. The rest — the 24-hour window, dedupe, follow gates, rate limits — are rules working as written, and knowing which one you've hit is the difference between rewriting a message and rebuilding a rule that was never broken.
If you're setting one up for the first time rather than repairing one, the comment-to-DM setup guide walks the whole thing, and how Instagram DM automation works covers the chain underneath it.