Deliverability

Instagram DM Deliverability: Why Cold DMs Die in Hidden Requests

Reply rate hides a metric nobody measures: whether the DM was ever seen. How Instagram routes cold messages into Requests or Hidden Requests, what decides placement, and how to seed-test it yourself.

Most operators grade Instagram outreach on one number: reply rate. It is the wrong number to start with, because it silently bundles two very different failures.

A DM can fail because the copy was bad. A DM can also fail because nobody ever saw it. Those need opposite fixes, and if you cannot tell them apart you will keep rewriting scripts that were never the problem.

Cold email people solved this years ago. They call it deliverability, they seed-test it, and they treat inbox placement as a separate discipline from copywriting. Instagram outreach has the same problem and almost nobody measures it.

Instagram has three inboxes, not one

When you message someone who does not follow you, the message does not land in their chat list. Instagram routes it into one of two holding areas.

Message Requests. The standard destination for a stranger. The recipient gets no push notification. They see a "Requests" row above their chats with a counter. Most active users check it, but on their own schedule, which is often days.

Hidden Requests. A sub-folder inside Requests for messages Instagram's classifiers flag as spam, bulk, or offensive. No notification, no counter bump on the main inbox, and the message text is visually covered until the recipient taps to reveal it. Meta built this folder as an anti-abuse tool. Cold outbound gets caught in the same net.

The recipient can also add their own filters. Under Settings, Hidden Words lets any user route requests containing offensive terms, Meta's predefined spam list, or a custom keyword list straight into Hidden Requests. Meta expanded the same filter to Story replies and taught it to catch deliberate misspellings, so "fr33" and "f-r-e-e" get the same treatment as the plain word.

That last part matters for outreach: part of your placement is decided by settings on the recipient's phone that you will never see and cannot influence.

3
destinations a cold DM can land in
0
push notifications for a request
1.7B
spam items Meta actioned in Q4 2025
5-15%
reported cold DM reply range

The funnel you are actually running

Here is the shape of the problem, modelled on 1,000 cold DMs from a healthy, warmed account. Treat the middle stages as an illustrative model, not measured platform data. Nobody outside Meta can measure request placement directly. The endpoints, sent and replied, are the parts you can verify yourself.

Cold DM funnel, worked example per 1,000 sent Sent 1000 Delivered 950 Visible Requests 620 Opened 430 Replied 85 Illustrative model. Middle stages are not directly observable from the sender side.

Read the gap between "Delivered" and "Visible Requests". In this model 330 messages were technically delivered and functionally dead. Your reply rate on sent volume is 8.5%. Your reply rate on messages that were actually seen is closer to 20%. Same copy, two completely different diagnoses.

If you optimise the script when the real loss is placement, you burn weeks.

What decides where the message lands

Instagram does not publish the routing logic. What follows is assembled from Meta's own documentation on request filtering plus consistent operator reporting. Treat the weights as directional.

Signal Direction What you actually control
Message similarity across recipients Near-identical text across many sends is the strongest spam tell Spintax, real variable insertion, rewritten openers per segment
Link density in first contact Links in message one draw extra scrutiny and depress replies Ship contact one with zero links and zero calendar asks
Account age and completeness Blank bio, no posts, no followers reads as disposable Warm the account before it sends anything cold
Send velocity and burstiness Even hourly blocks look automated Randomised gaps, human working hours, ramped daily caps
Prior interaction with the recipient A profile visit, like, or comment before the DM is a real relationship signal Engage first, wait a day, then message
Recipient Hidden Words settings Custom and predefined keyword lists route requests to Hidden Nothing. Avoid the obvious spam vocabulary and move on
Historical block and report rate on your account Compounds. This is the one that ends accounts Tighter targeting, softer asks, fewer sends per account

The last row is the one operators underrate. Placement is not evaluated fresh on every message. Your account carries a reputation, and the fastest way to wreck it is volume against a badly targeted list. Blocks and reports from people who were never plausible buyers are pure downside.

The reply-rate spread nobody wants to hear

Published ranges vary by source and none of them are audited, so read these as reported bands rather than facts. The pattern across sources is consistent even where the exact numbers are not.

Reported reply rate bands by outreach type 0% 10% 20% 30% 40% 50% 3-7% Generic cold 10-15% Personalised cold 30-50% Warmed / engaged first Bands as reported by outreach vendors and operators. Not audited. Directional only.

The jump from personalised cold to warmed is not mostly a copywriting jump. It is a placement and trust jump. When you have visited the profile, liked a recent post, and waited a day, you arrive as a known quantity rather than an anonymous burst.

How to seed-test your own placement

You cannot see where your message landed on someone else's phone. You can see it on a phone you own. Cold email operators run seed lists. Do the same.

  1. Build a seed set of 8 to 12 real Instagram accounts you control or that belong to people who will cooperate. They must not follow your sending accounts.
  2. Vary them: fresh accounts, old accounts, accounts with Hidden Words enabled, accounts with it off.
  3. Drop your seeds into every campaign list, spread across the send, not all at the start.
  4. After the send, check each seed manually: main chats, Requests, Hidden Requests.
  5. Record placement per seed per campaign in a sheet. Placement rate is now a number you own.

Run this on every new sending account before it touches real prospects, and again whenever you change your opener. If placement drops after a copy change, you found a keyword problem, not a persuasion problem.

The fixes, ranked by effect per hour spent

Engage before you message. Profile visit, one like on a recent post, wait a day. This is the single highest-leverage change and it costs nothing but sequencing.

Kill links and asks in contact one. No calendar link, no "book a call", no URL. One vendor reports insight-first openers converting several times better than immediate-ask openers. Take the exact multiple with scepticism and the direction seriously.

Make messages genuinely different. Not spintax on the same skeleton. Different first lines driven by something real about the account: a post, a launch, a hire, a city. Template similarity is machine-detectable in a way that human variance is not.

Cap volume per account and ramp it. Fresh accounts should start in the low tens per day. Operators consistently report the same escalation pattern when a wave gets flagged: a roughly week-long messaging restriction on the first strike, a much longer one on the second. Assume it applies to you.

Fix the profile before the script. A stranger decides whether to open your request based on your name, avatar, and one line of bio. If the profile does not read as a real business in five seconds, no opener saves it.

Segment harder. Every block and report is a permanent tax on future placement. Sending to people who will never buy is not neutral, it is negative.

What to put on the dashboard

Stop reporting a single reply rate. Report four numbers per sending account, per week:

  • Placement rate. Share of seeds landing in visible Requests rather than Hidden.
  • Reply rate on sent. The business number.
  • Reply rate on seen. Your copy number, estimated from placement rate.
  • Block and report signals. Restriction events, warning screens, sudden send failures.

When reply rate on sent falls and reply rate on seen holds, you have a deliverability problem and you should stop rewriting copy. When both fall together, the copy or the list is the problem. That single split is the difference between fixing outreach and guessing at it.

Sources

deliverabilityinstagram-dmcold-outreachhidden-requestsmessage-requests
Start free trial →