Why comment-to-DM messages never arrive (and how to measure what actually gets delivered)

September 8, 2026 · 9 min read

A comment-triggered DM that never shows up failed at one of four points: it landed in the commenter's message requests folder because they do not follow you, their filters moved it to a hidden spam folder nobody checks, Instagram throttled it, or your tool counted an accepted API call as a delivery. Every comment-to-DM tool lives with all four, including ours. In a June 2026 thread on r/Manychat, a creator reported that fewer than half of their comment-triggered DMs were reaching commenters, and most of the answers were folk remedies. One community reply named the real mechanics: the tool can show sent while Instagram never delivers. This article walks through those mechanics, verified against Meta's own developer and help pages, and ends with the only measurement that tells you the truth.

Disclosure

We build BetterSocials, a comment-to-DM tool, so we sell the thing this article troubleshoots. Read it knowing that. Nothing below fixes delivery for us and not for anyone else: Instagram decides what arrives for every tool on the official API, BetterSocials included. Every platform rule cited here comes from Meta's developer docs and Instagram's help center, checked July 2026.

What actually happens when a keyword DM goes out

The pipeline has three stages, and your tool only sees the first two. Someone comments your keyword. The tool calls Meta's Private Replies API, the mechanism Meta built for exactly this. Meta accepts the call and returns success. That success response is what every tool on the market logs as sent. Stage three belongs entirely to Instagram: deciding where, and whether, the message surfaces for the recipient.

The rules for stage two are published and specific (developers.facebook.com, Instagram Platform private replies docs, checked July 2026): a business account gets exactly one private reply per comment, it must be sent within 7 days of the comment on a post or reel, and for a live broadcast only while the stream is running. After that single message, the tool cannot send anything else unless the person replies, and each of their replies opens a 24 hour window. Stage three is where the documentation goes quiet. The docs say where the message can land. They do not report back which of those places it actually landed.

Reason 1: it landed in message requests

This is the big one, and Meta says it plainly in the private replies documentation itself:

This reply appears in the person's Inbox, if the person follows the Instagram professional account, or to the Request folder, if they do not.

Meta developer docs, Instagram Platform, checked July 2026

On the consumer side, Instagram's help center confirms the other half: a message request has to be accepted before it appears in the person's chats list. A request is not a message waiting to be read. It is a message waiting behind an approval step that many people never open. Meta's messaging docs add a detail that shows how dead that folder can be: requests with no activity for 30 days stop being returned in API calls at all.

Now connect that to what a viral post is. A post goes viral precisely because it reaches far beyond your followers, so the share of commenters who do not follow you climbs exactly when your comment volume spikes. More keyword comments, a higher percentage routed to requests, and a creator staring at a dashboard that says 400 sent while their link clicks barely move. That is not the tool failing. That is the routing rule doing what it is documented to do, at the worst possible moment.

Reason 2: their filters moved it to hidden requests

The requests folder has a basement. Instagram's Hidden Words feature filters message requests that contain words, phrases, numbers, or emojis on the recipient's hidden list, plus what Instagram classifies as scams or offensive content, into a separate spam folder (help.instagram.com, checked July 2026). Two lines from those help pages matter for anyone sending automated DMs. First: "You won't receive notifications for spam." Second: when a message is hidden, "the person who sent it won't know."

So a filtered DM produces no notification for them and no signal for you. Instagram's help page says the message request filter is off by default, but it is a recipient-side setting you cannot see, and plenty of people switch it on after one wave of crypto spam. Meta does not publish what its automated filtering catches beyond the user's own hidden list, so the honest statement is this: a first message from an account someone does not follow, containing a link, is the exact shape these filters exist to catch, and neither you nor your tool will ever be told it happened.

Reason 3: Instagram throttled it

Meta publishes API rate limits: private replies to comments on posts and reels are capped at 750 calls per hour per Instagram professional account (developers.facebook.com, Graph API rate limiting docs, checked July 2026). The throttle creators actually feel sits below the published one. Automation platforms pace sends at roughly 200 automated DMs per hour per account, and comment triggers are capped at one automated DM per user per 24 hours. Meta also deprecated message tags in April 2026, the mechanism tools used to message people outside the 24 hour window. The direction is not subtle: Meta has spent 2026 squeezing blast-style automation on purpose.

Run the math on a good day. A reel takes off and collects 3,000 keyword comments. At a pace of roughly 200 DMs an hour, that is 15 hours of queue if nothing else is sending. Any comment still waiting when its 7 day private reply window closes is gone for good, and the per-user cap means a person who comments on two posts in one day gets one DM, not two. Tools handle this queue differently, and how a tool behaves at the limit matters more than any feature. We wrote about what safe automation actually means in is Instagram DM automation safe.

Reason 4: sent means accepted, not delivered

This is the gap the r/Manychat community reply put its finger on. The sent counter in your automation dashboard counts successful API calls. It is not a lie. It is just an answer to a different question than the one you are asking. Meta accepted the message: true. The commenter saw it in their inbox: unknown, and not knowable, because Instagram does not report the destination folder back to the sender. Nothing in the documented API response says primary inbox, requests, or hidden.

This is why the June 2026 thread had no satisfying answer. The creator asked why fewer than half of their DMs were being received, and the honest reply is that no setting in any tool controls the answer. ManyChat is not uniquely broken here, and neither is any other vendor. Every tool built on the official API, BetterSocials included, has the same blind spot. Platforms do not publish their delivery rules, so any dashboard that claims to show you a delivered number is showing you an accepted number wearing a nicer label.

How to measure what actually gets delivered

Stop treating the sent counter as an outcome. The ground truth available to you is the link click, because a click proves the whole chain worked: the DM arrived somewhere the person looked, they opened it, and they acted. Tag every link in your keyword DMs with UTM parameters, something like utm_source=instagram, a format or traffic-type medium, and a utm_campaign per keyword, and your own analytics becomes the delivery report Instagram will not give you. BetterSocials does this tagging for you at send time: turn on Link tracking in Settings and every keyword link carries the platform, format, and keyword automatically. If your tool leaves tagging to you, build the links by hand and paste them per flow.

  • Track clicks per DM sent as a ratio, per post. The absolute number matters less than the movement.
  • Expect the ratio to drop on viral posts. That drop is the requests folder and the throttle at work, not your offer suddenly getting worse.
  • Compare a followers-heavy post against a cold-reach post with the same keyword and the same link. The spread between those two ratios is your delivery problem, isolated from your copy.

Clicks are a lower bound on delivery, since some people receive the DM and never click. That is the right direction to be wrong in. A number that understates reality keeps you honest. A sent counter that overstates it cost the r/Manychat creator half their leads before they noticed. Once you trust the click number, the revenue side of the loop is the same discipline, which we cover in turning Instagram comments into customers.

How to improve the odds, honestly

You cannot control Instagram's routing. You can control four things on your side of the pipeline, and each one is consistent with how the system is documented to work.

  • Pair every DM with a public reply to the comment. A short public reply, something like "just sent it, check your message requests if we are not already connected," fixes the discovery half of the problem. The DM still lands in requests, but now the commenter knows to go look. This is the single highest-value habit, and it is the reason we treat the public auto-reply as half of the automation, not a nice extra.
  • Pace your sends. The published and observed caps exist whether your tool respects them or not. A tool that queues and spreads sends keeps you inside the limits; a tool that fires everything at once finds the throttle for you.
  • Never send the same person the same message twice. Deduplication is basic hygiene, and repeated identical messages from one account are the pattern every spam system on earth is built to catch.
  • Keep the DM short, specific to the post, and human. Meta does not publish its filtering heuristics, so nobody can promise this helps delivery. What it verifiably helps is the step after delivery: a message that reads like a person gets accepted out of the requests folder, and a message that reads like a blast gets deleted there.

One thing does not belong on this list: switching to a tool that promises guaranteed delivery. No such tool can exist on the official API, because Instagram does not expose delivery. A vendor making that promise is describing a number they cannot see.

Where BetterSocials fits

BetterSocials is built around the honest version of this problem rather than a promise to make it disappear. Every keyword automation pairs the DM with a public handoff reply on Instagram and Facebook, drafted in your voice, so the commenter who does not follow you knows a message is waiting in requests. The link in the DM is your link, so you tag it; on our own keywords, every link carries UTMs and clicks are the only number we treat as real. And the sending engine is built to respect platform limits, with rate-limit aware pacing, deduplication so nobody gets the same DM twice, and circuit breakers that stop a runaway automation. None of that makes a DM immune to the requests folder. It does not make ours arrive where another tool's would not. It is just the set of levers a tool honestly controls, pulled properly.

The four reasons at the top of this article do not go away when you switch tools, and any comparison you read should be judged on what a tool does about them: the handoff reply, the pacing, the measurement. That is the lens we used to rank the field in the best comment-to-DM automation tools. For most solo creators BetterSocials is the pick there too, but the reasoning matters more than the verdict. Measure clicks, pair every DM with a public reply, stay inside the caps, and the half of your DMs that were silently disappearing becomes a number you can actually see and shrink.

Frequently asked questions

Why does my comment-to-DM tool say sent when the person never got the DM?+

Sent means Meta accepted the API call, not that the message reached an inbox. Per Meta developer docs (checked July 2026), a private reply lands in the main inbox only if the person follows you; otherwise it goes to their message requests folder, and filtered requests go to a hidden spam folder with no notification. Instagram never reports the destination back, so the counter cannot know.

Where do automated DMs go if the person does not follow my account?+

Into their message requests folder. The Meta private replies documentation states the message appears in the inbox for followers and the request folder for non-followers, and Instagram requires the person to accept a request before it shows in their chats list. Requests with no activity for 30 days stop being returned in API calls entirely.

How many automated DMs can I send per hour on Instagram?+

The published Meta API cap is 750 private-reply calls per hour per Instagram professional account for posts and reels (checked July 2026). In practice automation platforms pace closer to 200 automated DMs per hour per account, comment triggers are capped at one automated DM per user per 24 hours, and each comment allows exactly one private reply within 7 days.

How do I measure the real delivery rate of my comment-to-DM automation?+

Put a UTM-tagged link in every keyword DM and track clicks per DM sent, per post. Clicks prove the full chain: delivered, opened, acted on. The ratio will run lower on viral posts because more commenters are non-followers whose DMs route to message requests. Clicks understate true delivery slightly, which is safer than a sent counter that overstates it.

Is ManyChat broken if my DMs are not being delivered?+

Usually not. A June 2026 thread on r/Manychat reported fewer than 50 percent of comment-triggered DMs being received, and the cause was Instagram routing, not the tool: non-followers get the DM in message requests, filters can hide it entirely, and throttles queue it. Every tool on the official API faces the same rules, BetterSocials included. Check the one-reply-per-comment and 7-day window rules before blaming the tool.

Can any tool guarantee Instagram DM delivery?+

No. Instagram does not publish its routing and filtering rules and does not tell senders which folder a message landed in, so no vendor on the official API can verify delivery, let alone guarantee it. What a tool can honestly do: pair each of its DMs with a public handoff reply so commenters check their requests, pace sends inside the published Meta caps, and let you measure clicks instead of sends.

Try it on your own inbox

Connect up to 3 accounts and watch the AI draft replies in your voice. Free for 7 days. The first 100 people keep $19 a month, forever.