BlogTutorial

Instagram Comment-to-DM Not Working? Check These in This Order

Nine causes, ordered by how often they are actually the cause, with the counts from a live system behind the ordering. Most of the time nothing is broken — the comment simply never matched.

The PostEngage team6 min read

Something is not sending and the tool is telling you nothing useful. This post is the order to check things in, and the order is not arbitrary — it is sorted by how often each cause is actually the cause on a system that has processed around fifteen thousand of these events.

The numbers below are from this product's own database. We are one tool among many and our distribution will not be exactly yours, but the shape of it holds everywhere, because the causes are Meta's rather than any vendor's.

Start here: it probably matched nothing

Every outcome recorded, all time:

What happenedCountIs it a fault?
Matched no automation at all11,377no
Sent3,204no
Matched, failed the keyword condition561no
Refused: cooldown35no — working as intended
Platform rejected the send28sometimes
Refused: rate budget19no — working as intended
Send failed on our side16yes
Refused: duplicate event9no — working as intended
Refused: burst5no — working as intended
Refused: connection unhealthy1yes — go fix the connection
Refused: a human took over1no — working as intended
Live production, all time. The two rows worth internalising are the first and the third.

For every reply that went out, roughly four events matched nothing. Another 561 matched an automation and then failed its keyword condition.

Genuine faults — the send failing on our side, or a connection that had gone bad — total seventeen across the whole history. Seventeen, against nearly twelve thousand non-matches.

So the overwhelmingly likely answer to "why did nothing send" is that from the system's point of view nothing was supposed to. That is not a comforting answer, but it is the one that saves you an afternoon on the wrong problem.

The nine causes, in order

  1. The comment did not contain your trigger. Your keyword is LINK. They typed link plz, Link 🙏, linkk, send link, or in an Indian account very often link bhejo. Most tools match case-insensitively but not typo-insensitively, and none of them match intent.
  2. The automation is scoped to a different post. Scoping is the right practice — a one-word comment is only unambiguous when the post makes it so — and it is also the most common way an automation quietly covers nothing. Check which posts it is actually attached to.
  3. The event never arrived, because the webhook subscription lapsed. This is the silent one. On our own connections there are 29 webhook subscriptions recorded and 14 unsubscribe events — roughly one in two connections has lost it at some point. Nothing looks wrong: the account name is still on screen, the automation is still switched on, and no events are coming in at all.
  4. The token expired. Long-lived Instagram tokens last around 60 days and renewal can fail quietly. The connection screen keeps showing your name and picture because they were cached when you connected. The tell is silence rather than errors.
  5. A permission was not re-granted. Reading comments and sending messages are separate scopes. Miss the messaging one on the consent screen — easy on a reconnect, where people click through fast — and the tool can see every comment and send nothing.
  6. The public reply killed the DM. Least known, and worth testing for. Comment-to-DM is usually two API calls: a public reply under the comment, and the private message. They fail independently. If the public reply errors and the tool treats that as fatal, the DM never fires. Build a DM-only version with no public reply; if that works, you have found it.
  7. The window had closed. Seven days from the comment, twenty-four hours from a DM or story reply. Past that, no tool on the official API can send — not on a higher plan, not with a different vendor. Check a specific thread here.
  8. A guard refused it on purpose. Cooldown because that person already heard from you recently. Duplicate because Instagram redelivered the same event. Rate budget because a post travelled. These are the system working. A good tool names which one and when.
  9. You are using Meta's own automation, which waits. Instagram's built-in keyword responses in Business Suite are documented as firing about 15 minutes after the message, so a human can answer first. Not broken. Waiting.

Ten minutes to isolate it

Checklist

What a tool owes you when it does not send

This is the part worth taking away even if your problem turns out to be a typo in a keyword.

A refusal and a failure are different things, and a tool that cannot tell you which one happened has left you to guess. Every send that does not go out should be recorded with the reason, in words, visible to you afterwards. Ours names ten checks — kill switch, connection, takeover, window, dedupe, cooldown, quiet hours, rate budget, credits, content safety — and the first one to fail stops the send and gets written down.

That is also why the numbers at the top of this post exist at all. We can tell you that 35 sends were stopped by cooldown and 9 by duplicate delivery because each one was recorded when it happened.

Ask any tool in this category what its refusal rate is. Zero is not a good answer — it means nothing is being checked.

About 2.3% of our sends are refused by a policy check. If yours reports nothing ever being stopped, either your account is unusually quiet or the checks are not running, and only one of those is good news.

If it is still not working

Two things worth knowing before you conclude the tool is broken.

Meta has outages. Check Meta's status page before assuming it is you. A handful of our own failures trace to the platform being unavailable rather than to anything in the automation.

Instagram redelivers. The same comment can arrive twice, which is why a duplicate check exists. If you are seeing two DMs rather than none, that is this, and the fix is a tool that dedupes rather than one that sends faster.

For the rules underneath all of this — what the API permits, the two windows, and what no tool can do at any price — the complete picture has it in one page.

Questions people ask

Why is my Instagram comment-to-DM not sending?

Overwhelmingly because the comment never matched your automation rather than because anything is broken. On our own production data there are about four events that match no automation for every reply that goes out. Check the match before you check the plumbing: your trigger word against what people actually typed, then whether the automation is scoped to that post.

How do I know if my Instagram token expired?

You usually cannot tell by looking, which is the problem. The connection screen keeps showing your account name and picture because those were cached at connect time. The reliable signals are that nothing has sent for a while and that no new events are arriving at all — not that some are failing. Reconnecting through Meta takes under a minute and fixes most of these.

Why did my automation stop working after I reconnected Instagram?

Two reasons. A permission may not have been re-granted on the consent screen — messaging is a separate scope from reading comments, and an account that can read but not send looks connected and does nothing. Or the webhook subscription did not come back with the connection. Both are silent.

Can a public comment reply stop the DM from sending?

Yes, and it is the least-known failure in this category. A comment-to-DM automation is usually two separate API calls — a public reply and a private message — and they fail independently. If the public reply errors and a tool treats that as fatal, the DM never fires. Testing a DM-only version with no public reply is the fastest way to isolate it.

Is there a delay on Instagram comment-to-DM?

Through a third-party tool on the official API, no — a few seconds is normal. Through Instagram’s own keyword automation in Meta Business Suite there is a documented wait of about 15 minutes, deliberately, so that a human can answer first. If your "automation" is Meta’s built-in one, it is not broken, it is waiting.

How many automated replies should be refused?

A small share, and it should not be zero. On our system 68 sends out of nearly 3,000 were stopped by policy checks — about 2.3%. Cooldown and rate budget account for most of them. A tool reporting that it never refuses anything is not being careful; it is not checking.

One email when we publish.

No drip sequence, no “quick question” follow-up. Unsubscribe is one click and we honour it immediately.