Meta opened the door for Claude to run your Instagram DMs. Get the exact setup—permissions, the copy-paste system prompt, compliance rules, and testing—so it qualifies leads while you sleep.
This guide is reviewed for clarity, service accuracy, and AI-search readability. The next quarterly content review is tracked internally before unsupported metrics or client proof are added.
Your Instagram DMs are full of the same five questions. "What do you do?" "How much is it?" "Does this work for someone like me?" You answer them by hand, one at a time, and the good leads get buried under the tire-kickers.
Meta just changed that. You can now connect Claude to your Instagram DMs through Meta's official messaging integration. Claude reads each message, replies like a real person, asks the right follow-up, and works out whether someone is a real buyer or just browsing. Hot leads get flagged so you can step in and close. Everyone else gets a helpful answer without taking up your day.
This guide walks you through the whole setup, start to finish. By the end you'll have Claude answering and qualifying DMs on your own account, and a clear test you can run before you point real traffic at it. Plan on an afternoon to get it live.
What you're actually building
Three pieces talk to each other:
- Instagram receives the DM and sends it out through Meta's messaging API.
- A connector (a no-code tool or a small server you run) catches that message and passes it to Claude.
- Claude reads the conversation, writes a reply, and hands it back to the connector, which sends it to the person in your DMs.
You don't need to be a developer. The fastest path uses a no-code connector that already has Meta's integration built in. If you want full control, you can build directly on Meta's Graph API. We'll cover both.
Before you start: the prerequisites checklist
Get these four things in place first. Missing any one of them is the most common reason setup stalls.
- An Instagram Professional account — Business or Creator. A personal account will not work. Switch it in Settings → Account type and tools.
- A linked Facebook Page — Meta's messaging API only works when your Instagram account is connected to a Facebook Page. Link it in your Page settings under Linked accounts.
- A Meta (Facebook) Developer account — free, at developers.facebook.com. This is where the app that holds your Instagram messaging permission lives, whether you build it yourself or a connector creates it for you.
- An Anthropic (Claude) API key — from console.anthropic.com. Create a key and add a small amount of credit. DM replies are short, so cost per conversation is low.
Tick all four before moving on.
Step 1: Get your Instagram account ready
- Open the Instagram app → Settings → switch to a Professional account (Business or Creator) if you haven't already.
- Connect it to your Facebook Page. On the Page, go to Settings → Linked accounts → Instagram and link them.
- Confirm you're an admin of both the Instagram account and the Page. You'll be granting permissions, so you need full access.
Step 2: Get your Claude API key
- Sign in at console.anthropic.com.
- Go to API Keys → Create Key. Name it something like
instagram-dms. - Copy the key somewhere safe — you only see it once.
- Add a little credit under Billing. Use
claude-sonnet-4-6for DMs. It's fast and inexpensive, which matters when it's replying to people in real time.
Step 3: Enable the official Meta integration
This is the part that grants Claude (through your connector) permission to read and send your Instagram messages.
If you're using a no-code connector (the recommended path for most people):
- In the connector, choose Instagram for Business as the channel and Claude (Anthropic) as the AI.
- Click Connect Instagram. This opens Meta's login screen.
- Log in and select your Facebook Page and Instagram account.
- When Meta asks, grant the messaging permissions. The key one is
instagram_business_manage_messages(older setups showinstagram_manage_messagespluspages_manage_metadata). Allow all of them — Claude can't read or send DMs without them. - Authorize the connector's app. Meta hands it a token tied to your account.
If you're building directly on Meta's Graph API:
- At developers.facebook.com, create an app and add the Instagram product.
- Request the
instagram_basic,instagram_manage_messages, andpages_manage_metadatapermissions. - Subscribe your app to the
messageswebhook field so you get a notification every time someone DMs you. - Publish your app. Meta only sends webhooks to published apps. In Development mode it works only with you and people you add as testers.
Either way, the result is the same: your connector or app can now receive and send DMs on your behalf.
Step 4: Point the connector at Claude
Now wire the messages to Claude. In a no-code connector, add an AI / HTTP step that calls the Claude API with your key, your model, and the system prompt below. If you're building it yourself, your webhook handler makes this same call and sends the reply back through Meta's Send API.
Here's the exact API call:
bashcurl https://api.anthropic.com/v1/messages -H "x-api-key: $ANTHROPIC_API_KEY" -H "anthropic-version: 2023-06-01" -H "content-type: application/json" -d '{ "model": "claude-sonnet-4-6", "max_tokens": 400, "system": "<<paste your DM system prompt here>>", "messages": [ { "role": "user", "content": "SETTING" } ] }'
Two rules that keep it sane:
- Pass the whole conversation in
messageseach time, not just the latest line, so Claude remembers what was said. - Keep
max_tokenslow (around 400). DMs should be short. Long paragraphs are the fastest way to look like a bot.
The Claude system prompt (copy and paste)
This is the brain of the whole thing. It opens naturally, then walks every person through the same three questions — goals → current results → biggest challenge — and qualifies them as it goes. Fill in the bracketed parts with your own details.
textYou are the DM assistant for [YOUR BRAND], run by [YOUR NAME]. You reply to people who message [@YOUR_HANDLE] on Instagram. You sound like a real person on the team: warm, direct, and genuinely curious. Never robotic. Never salesy. WHAT WE DO [One or two sentences. Who you help and the result you get them. Example: "We help coaches book more sales calls with done-for-you Instagram funnels."] YOUR JOB Have a natural conversation that uncovers three things, in this order: 1) Goals — what they're trying to achieve. 2) Current results — where they are right now. 3) Biggest challenge — what's actually in the way. Ask ONE question at a time. Wait for the reply. React to what they say before asking the next thing. Keep every message to 1-3 short sentences, like texting. HOW TO OPEN If they commented "SETTING" or asked about the offer, thank them, then ask an easy opening question about their goal. Example: "Hey! Happy to send this over. Quick q so I point you the right way — what are you trying to get done with [your topic] right now?" QUALIFY AS YOU GO A real buyer usually: names a specific goal, is already taking action (running a business or getting some results), names a real challenge, and stays engaged when you mention next steps or timing. A browser usually: stays vague, only wants free stuff, won't share a goal, or goes quiet the moment you suggest a next step. WHEN SOMEONE IS QUALIFIED Once you have their goal, current results, AND biggest challenge, and they sound like a real buyer: - Say in one sentence how we help with that exact challenge. - Offer the next step (a quick call, a demo, or the resource link). - Then add this exact line on its own at the end of your message: [[HOT LEAD — handoff]] A human on the team takes over from there. WHEN SOMEONE IS NOT A FIT (YET) Be kind and useful. Point them to a free resource. Don't push. End with: [[NOT NOW]] HARD RULES - One question per message. - Never invent prices, features, or promises. If you don't know, say a human will confirm. - Never ask for passwords, payment details, or anything sensitive. - If they ask to speak to a person, stop qualifying and write [[HUMAN REQUESTED — handoff]]. - If they're abusive or clearly spam, reply once politely and write [[IGNORE]]. - Match their language and energy.
How Claude decides "real buyer" vs. "just browsing"
The prompt above tells Claude what to look for. Here's the logic it runs in plain terms, so you can tune it. Claude scores each conversation against four signals:
- Specific goal — they can tell you what they actually want, not just "more sales."
- Already in motion — they have a business, an audience, or some current results. They're not starting from zero with no plan.
- A real, costly challenge — something specific is blocking them, and it's worth money to fix.
- Engaged on next steps — when Claude mentions a call, a price range, or timing, they lean in instead of going cold.
Three or four signals = a hot lead. Claude flags it with [[HOT LEAD — handoff]]. One or two = a browser. Claude stays friendly, sends a free resource, and tags it [[NOT NOW]] so you're not chasing people who'll never buy.
You can make Claude stricter or looser by editing the buyer/browser descriptions in the prompt. If too many weak leads get flagged, add a line like "Only flag as a hot lead if they've shared a budget or a real deadline."
Human handoff: when Claude tags you in
The tags in double brackets are the signal for your connector to pull you in. Set up two simple rules:
- When a reply contains
[[HOT LEAD — handoff]]or[[HUMAN REQUESTED — handoff]], the connector pauses automation for that conversation and notifies you — a Slack ping, an email, or a row in a Google Sheet works fine. Strip the tag out before the message is sent so the person never sees it. - When a reply contains
[[NOT NOW]]or[[IGNORE]], let it ride. No notification needed. These are handled.
The point of the handoff: Claude does the repetitive qualifying, and a human shows up exactly when there's a real buyer ready to talk. You spend your time closing, not screening.
Set up the "SETTING" comment-to-DM trigger
Most of your leads start with a comment, not a DM. Meta lets you send someone a DM in response to their comment, which is the clean, compliant way to start the conversation.
- In your connector, create a comment-to-DM automation on the post that promotes your offer.
- Set the keyword to SETTING (or whatever your post tells people to comment).
- When someone comments
SETTING, the connector sends them a DM. Their reply opens the conversation, and Claude takes over from there.
This is also your opt-in. The person started it by commenting, so you're allowed to message them — which keeps you on the right side of Meta's rules.
Stay compliant: Meta's DM rules
Automation is allowed, but Meta has guardrails. Break them and you risk your messaging access. Keep these straight:
- The 24-hour window. Once someone messages you (or comments your keyword), you have a 24-hour standard messaging window to reply freely. Claude replies in seconds, so you're always well inside it. Don't try to send promotional DMs after 24 hours of silence — that's outside the window.
- Opt-in only. You can DM people who message you or comment your keyword. You cannot cold-DM people who never interacted with you. No bulk blasts, no scraping, no buying lists.
- No spam, no deception. Don't send identical bulk messages, don't pretend automation is something it isn't, and don't collect sensitive info (passwords, card numbers) in DMs.
- App Review for scale. A fresh Meta app in Development mode only messages you and your test users. To run it on the public, your app needs App Review approval for the messaging permission. Most no-code connectors have already passed review, which is why they get you live faster.
A good rule of thumb: if a real assistant on your team couldn't send the message, don't automate it.
Go live: test before you point real traffic at it
Don't flip this on to a live audience cold. Run this checklist with a second account or a teammate first.
- Comment SETTING on your post from a test account. Confirm the trigger DM fires.
- Reply to it. Confirm Claude responds within a few seconds and opens with a goal question.
- Walk a full "real buyer" path — give it a goal, current results, and a challenge. Confirm Claude asks them in order and then fires
[[HOT LEAD — handoff]]and notifies you. - Walk a "just browsing" path — stay vague, ask for free stuff. Confirm Claude stays friendly, sends a resource, and tags
[[NOT NOW]]. - Confirm the bracket tags are stripped from what the person actually sees.
- Type "can I talk to a human?" Confirm it hands off cleanly.
- Read the replies out loud. If any sound robotic, tighten the prompt before going live.
When all of that passes, point real traffic at it: publish a post or story with a clear "Comment SETTING" call to action, and let Claude work the inbox.
Troubleshooting the common blockers
"Permissions not granted" / connection keeps failing. Your Instagram account isn't Professional, or it isn't linked to a Facebook Page. Fix both, then reconnect and re-grant instagram_business_manage_messages (and pages_manage_metadata if asked).
"Account not eligible." Personal accounts can't use the messaging API. Switch to Business or Creator, link a Page, and make sure you're an admin of both.
Messages aren't triggering Claude. Three usual causes: your app isn't subscribed to the messages webhook field; your app is still in Development mode (add testers or finish App Review); or you're testing outside the 24-hour window. Also check the keyword matches exactly — extra words or odd capitalization can miss.
Claude isn't replying. Check the API key is correct and has credit, the model id is spelled claude-sonnet-4-6, and your connector logs for the actual error. An expired key or a typo'd model id is the usual culprit.
Replies sound like a bot. Lower max_tokens, and reinforce "one short question per message" in the prompt. Long, formal replies are the giveaway.
FAQ
Do I need to know how to code? No. The no-code connector path uses Meta's official integration and a settings screen — you grant permissions, paste your Claude key and system prompt, and you're live. The Graph API path is there if you want full control, but it's optional.
Will Claude accidentally promise something I can't deliver? Not if you keep the "never invent prices, features, or promises" rule in the system prompt. Claude is told to hand off to a human for anything it isn't sure about, so the real commitments stay with you.
How much does it cost to run?
DM replies are short, so the Claude API cost per conversation is small — usually a fraction of a cent on claude-sonnet-4-6. Your bigger consideration is the connector's monthly plan, if you use one.
Set this up once and your DMs start working for you instead of piling up. At Hypd we run this exact stack on our own account, and it's the difference between waking up to a full inbox and waking up to a list of qualified conversations. Build it this week, test it properly, then let it qualify while you sleep.
