What comment-to-DM automation is
Comment-to-DM automation sends a direct message to everyone who comments a chosen keyword under an Instagram post, reel or Live. It runs on Meta's private replies feature: the app hears about the comment through a webhook and answers with one DM addressed to that comment.
This is what happens between the comment and the DM, using the official API:
- You post and tell people what to comment, for example "Comment GUIDE and I'll send it to you".
- Someone comments. Meta sends a webhook notification on the
commentsfield with the comment ID, the commenter's Instagram-scoped ID and username, the text, the media ID and where the media sits: feed, reel, story or ad. Webhook examples - The app checks the text for your keyword. Comments without it are left alone.
- On a match, the app sends a private reply: a
POSTto/<IG_ID>/messageswithrecipientset to the comment ID. Meta answers with the person's Instagram-scoped ID and the message ID. Private replies - If the person writes back, a conversation opens and the app can send more messages, such as a link button or a question about their email, within 24 hours of their reply.
Many setups also post a public reply under the comment, like "Sent, check your DMs". That is a separate call to the comment's /replies endpoint from Meta's comment moderation API, and it shows other readers that commenting works.
What you need before it works
You need a public Instagram professional account, Business or Creator, connected to an app through Meta's Instagram API with the comment and messaging permissions. With the Instagram Login setup, no Facebook Page is needed.
| Requirement | What Meta asks for | Source |
|---|---|---|
| Account type | An Instagram professional account, which can represent a business or a creator. Personal accounts are not served. | Overview |
| Visibility | The account that owns the media must be public. Private accounts do not receive comment or mention notifications. | Webhooks setup |
| Login | Business Login for Instagram on graph.instagram.com. No Facebook Page required. | Instagram Login |
| Permissions | instagram_business_basic, instagram_business_manage_comments and instagram_business_manage_messages | Private replies |
| Webhook fields | comments, live_comments, messages and messaging_postbacks | Fields |
| App status | The app must be Live. Serving accounts the developer doesn't own needs Advanced Access, which requires App Review and Business Verification. | Overview |
The login gives the app an access token instead of your password. Under Business Login for Instagram the long-lived token lasts 60 days and can be refreshed once it is at least 24 hours old, so a tool you connect keeps working without you logging in again. Business Login
What Meta's API allows
Meta allows one private reply per comment within 7 days, a normal conversation for 24 hours after each message the person sends, and a separate 7-day window for answers written by a human agent.
| Situation | What you may send | Time limit |
|---|---|---|
| Comment on a post, reel, story or ad | One private reply | Within 7 days of the comment. Meta |
| Comment during a Live | One private reply | Only while the broadcast is running. Meta |
| The person replies to your private reply | Follow-up messages | Within 24 hours of their reply. Meta |
| The person sends a DM or replies to a story | Text, links, images, audio, video, PDFs and templates | 24 hours for most actions. Meta |
| First message after a Click-to-Direct ad | The same message types | Up to 7 days. Meta |
| A human agent needs more time | Answers written by a person, sent with the human_agent tag | 7 days, with the Human Agent feature. Meta |
Size limits for messages
- Text must be UTF-8 and at most 1,000 bytes. Send Messages
- A button template carries up to 640 characters of text and up to three buttons that open a web page or send a postback. Button Template
- Quick replies are limited to 13 buttons, each cut off after 20 characters. Quick Replies
- An account can set up to 4 ice breakers, the questions shown when someone opens a new chat. Ice Breakers
What Meta's API does not allow
You cannot DM people who never interacted with you, send a second message to a commenter who has not answered, reply after the time limits, or use the human agent tag for automated messages.
- Cold DMs. Conversations only begin when an Instagram user messages the account. A comment allows one private reply, nothing more. Send Messages
- A second message without an answer. Only one message can go to the commenter, and follow-ups need a response first. Private replies
- Old comments. Comments older than 7 days can no longer get a private reply, and Live comments can't once the Live has ended.
- Automated messages after 24 hours. The human agent tag exists for human support when the standard window isn't enough, for example over a weekend. It is not a way to extend automation. Overview
- Personal or private accounts. The API serves professional accounts, and private accounts get no comment notifications. Webhooks setup
- Group chats and other people's posts. An account can only talk to one person per conversation, and media shared in a message must belong to the account. Send Messages
Tools that ask for your Instagram password or drive the app like a person are outside Meta's API altogether, so none of the rules above protect you there.
Comments, Lives, stories and DMs
Comments and Live comments get a private reply. Story replies, story mentions and DMs arrive as messages, so they open the 24-hour window and the answer can be a full message with buttons.
| Trigger | How Meta reports it | What you can send |
|---|---|---|
| Post or reel comment | comments webhook | One private reply within 7 days |
| Live comment | live_comments webhook | One private reply during the broadcast |
| Story reply | messages webhook with reply_to.story | Messages within 24 hours |
| Story mention | messages webhook with a story_mention attachment | Messages within 24 hours |
| DM keyword | messages webhook | Messages within 24 hours |
| Ice breaker tap | messaging_postbacks webhook | Messages within 24 hours |
The difference matters for what you can send. A comment gets a single private reply, so the link has to be in that one message, or the message has to get the person to answer. A story reply or DM means the person wrote first, so you can send a button that opens your link, then a second message with a question. Webhook examples
Why some DMs land in message requests
Meta's documentation says a private reply appears in the person's inbox if they follow the account, and in their requests folder if they do not. Instagram decides this, not the tool, so it happens with every comment-to-DM product. Private replies
You can't change where the message lands, but you can make sure people look for it:
- Say it in the caption: "Comment GUIDE, then check your DMs or message requests".
- Post a public reply under each comment that says the DM is on its way.
- Start the DM with why you're writing, for example "Here's the guide you asked for under my reel", so it reads as expected rather than random. Meta adds a link to the commented post to the private reply as well.
- If you only want followers to get the link, use a follow gate: the first message asks them to tap a button, the app checks the follow and asks others to follow first.
The same split exists in your own inbox. New conversations from people who don't follow you show up under Requests, and they move to General once the app replies. Messages in Requests that sit inactive for 30 days are no longer returned by the API. Send Messages
Safe pacing and rate limits
Stay well under Meta's 750 private replies per hour per account, space messages out, and queue the overflow. A private reply may wait up to 7 days, so a busy hour doesn't mean dropped comments.
| API | Limit | Applies to |
|---|---|---|
| Private replies | 750 calls per hour | Comments on posts and reels |
| Private replies | 100 calls per second | Comments on Instagram Live |
| Send API | 100 calls per second | Text, links, reactions and stickers |
| Send API | 10 calls per second | Audio or video |
| Conversations API | 2 calls per second | Reading conversations |
| Other endpoints | 4,800 × impressions per 24 hours | Calls outside messaging, per app and account |
Source: Meta's rate limiting section. A call over the limit fails with a rate limit error, and the request has to be tried again later.
How to pace without losing anyone
- Set an hourly ceiling below 750 so retries and bursts never push the account to the edge.
- Space messages a few seconds apart instead of firing them in one burst when a reel takes off.
- Keep comments that wait in a queue, in order, and only drop them when they would pass the 7-day limit.
- Back off when Meta answers with a rate limit error, and wait longer each time it repeats.
- Send at most one DM per comment, and remember that the same webhook can arrive twice. Meta says endpoints should handle duplicate deliveries. Webhooks
Pacing keeps you inside Meta's limits. It doesn't guarantee how Instagram treats an account, and no tool can promise that.
What to put in the DM
Say why you're writing in the first line, deliver what you promised with one link, and ask for one thing at most. Keep the text under Meta's 1,000-byte limit.
Hey mia.keller! Here's the 7-day plan you asked for under my reel: yoursite.com/planWant the next one too? Reply with your email and I'll send it over.
- Context first. Name what they asked for and where. People reading it in their requests folder decide in one line whether to open it.
- The link in the first message. Meta documents private replies as text messages, so put the link in the text. Buttons from the button template fit once the person has messaged you.
- Or ask them to reply first. A short question, or a quick reply button, gets an answer that opens the 24-hour window. Then the link can come as a button and extras can follow.
- One ask. If you want an email or phone number for lead capture, ask for that and nothing else.
- Mind the bytes. The 1,000-byte limit counts bytes, not characters, and an emoji takes up to 4 bytes in UTF-8.
- Say it's automated where the law asks. Meta's messaging guide says automated chats must disclose that when applicable law requires it, at the start of a conversation, and names California and German users in particular. Send Messages
- Respect STOP. Honor an opt-out right away and send nothing automated afterwards.
Need a starting point? The free DM template generator writes three versions, a keyword and public replies for your next post.
Common mistakes
Most comment-to-DM setups that disappoint have a vague keyword, a caption that never mentions the DM, or a plan that needs messages the API does not allow.
- A keyword that is an everyday word. YES, LOVE or WANT fire on comments that were never requests. Test yours with the comment keyword checker.
- Not telling people where the DM goes. Without a hint, non-followers often never open their requests.
- Planning a sequence after a comment. A comment allows one message. Every step after that needs the person to answer.
- Automated follow-ups days later. Outside the 24-hour window, only a person may answer with the human agent tag.
- Switching on an old post. Comments older than 7 days can't get a private reply, however many there are.
- A long DM with several links. The 1,000-byte limit is closer than it looks, and three links dilute the one people asked for.
- The same public reply under every comment. A thread of identical replies looks copy-pasted to readers. Rotate a few versions.
- Going live without a test. Comment from a second account first and read the DM the way a follower would.
Set it up with Elevion
Connect your account through Instagram's own login, pick what starts the conversation, set a keyword, write the DM and the public reply, then go live. Elevion applies the rules in this guide for you.
- Start the free trial. It runs 7 days, needs no card, and your account has to be a Business or Creator account.
- Connect Instagram through Instagram's login. No Facebook Page, and nobody sees your password.
- Pick what starts it: comments on chosen posts or on every post, comments on your Live, replies to your stories, story mentions, or a keyword someone DMs you.
- Set one or more keywords, or answer every comment. Capital letters don't matter.
- Write the DM with your link, using {username} for their name. Choose "Send it right away" or "Ask them to reply first", and add up to three public replies that rotate.
- Add extras if you want them: Only for followers, a DM delay, set hours, your own hourly and daily caps, and email or phone capture on the Business plan.
- Test it with your own second account, then go live.
What Elevion enforces
- One DM per comment, and one per person per campaign.
- Comments older than 7 days are skipped, and older comments are only answered if you switch that on.
- Follow-ups only after the person replies, inside the 24-hour window. Elevion does not use the human agent tag.
- Sending paced well under the 750-per-hour limit, a few seconds apart, with waiting comments kept in line.
- A message of STOP or unsubscribe stops all automated messages to that person.
Creator costs €29.99 a month, or €25.49 a month billed yearly. Business costs €249.99 a month, or €199.99 a month billed yearly. The price is flat, with no fees per contact. See the plans for what each includes.
Sources
- Meta for Developers: Send a Private Reply to a Commenter
- Meta for Developers: Instagram API with Instagram Login: Send Messages
- Meta for Developers: Instagram Platform overview
- Meta for Developers: Instagram Platform overview: rate limiting
- Meta for Developers: Instagram API with Instagram Login
- Meta for Developers: Business Login for Instagram
- Meta for Developers: Instagram Webhooks
- Meta for Developers: Webhooks setup
- Meta for Developers: Webhook fields and permissions
- Meta for Developers: Webhook notification examples
- Meta for Developers: Comment Moderation
- Meta for Developers: Button Template
- Meta for Developers: Quick Replies
- Meta for Developers: Ice Breakers
- Meta for Developers: App Review for the Instagram Platform
Checked against Meta's documentation on 2026-10-20. Meta changes its rules from time to time, so its pages are the final word.