Guide · Developers

Instagram DM automation with n8n.Or let an API do the Meta part.

n8n can automate Instagram DMs, but it has no Instagram node: you bring your own Meta app, a public HTTPS webhook that answers Meta's verification, an access token you refresh every 60 days, and the rules (24-hour window, one private reply per comment) in your workflow. Or you let an API like Breakreach's handle Meta, and n8n only receives its webhooks and calls its endpoints.

Can n8n automate Instagram DMs?Yes, with some assembly.

n8n's node list has no Instagram node (its docs page returns a 404). What exists:

  • The Facebook Trigger node, Instagram objectIt has a Messages field (“Notifies you when anyone messages your app's Instagram user”) and a Comments field. n8n's docs warn: “This Object type fails without the option enabled” (Include Values).
  • The Facebook Graph API nodeIt calls graph.facebook.com only, so the newer Instagram API with Instagram Login (graph.instagram.com) goes through the HTTP Request node.
  • A plain Webhook nodeFor Messenger messages (the Page object of the Facebook Trigger has no messages field) or to handle Meta's calls yourself.

What do you have to set up on Meta's side?Before the first DM goes out.

  • A Meta appWith the messaging permission (instagram_business_manage_messages) and, for comment DMs, instagram_business_manage_comments. For an account you own, Standard Access, no App Review. For anyone else's, Advanced Access, which “requires App Review and Business Verification”.
  • A public HTTPS endpoint“Self-signed certificates are not supported.” Meta first sends a GET with hub.verify_token and hub.challenge; your workflow checks the token and answers with the challenge.
  • A Live appMeta's webhook page says “Your app must be Live to receive notifications for app users”, while n8n's credential docs say development mode works for people with a role on the app. Test both ways if you stay in development.
  • Tokens that expireA long-lived token is valid 60 days and can be refreshed once it's at least 24 hours old; one that isn't refreshed in 60 days “will expire and can no longer be refreshed”. n8n doesn't refresh it for you: a scheduled workflow has to.
  • Meta's rules, in your logicReply within 24 hours of the person's last message, one private reply per comment within 7 days, 750 comment DMs an hour per account, no duplicates when the same person comments twice.
Code node · Meta's verification handshake
// After a GET Webhook node. Reply with the result through "Respond to Webhook" (text).const q = $input.first().json.query;if (q["hub.mode"] === "subscribe" && q["hub.verify_token"] === "your-verify-token") {  return [{ json: { challenge: q["hub.challenge"] } }];}throw new Error("Verification failed");
HTTP Request node · a private reply to a comment
POST https://graph.instagram.com/<API_VERSION>/<IG_ID>/messagesAuthorization: Bearer <LONG_LIVED_TOKEN>Content-Type: application/json { "recipient": { "comment_id": "<COMMENT_ID>" },  "message": { "text": "Here's the guide: https://northbeam.coffee/guide" } }

Are there n8n templates for Instagram DMs?Community ones, each with a catch.

  • AI agent for Instagram DMs with ManyChat (#2718)DMs come in through a ManyChat external request: no Meta app, but a ManyChat account.
  • Auto-reply to Instagram DMs with an AI chatbot (#14026)The Graph API directly, with your own Meta app, a long-lived token pasted by hand and a public n8n instance.
  • Auto DMs to post commenters (#15206)Graph API through HTTP Request; needs an Instagram account linked to a Facebook Page and a Meta app.
  • Keyword replies with affiliate links (#15130)Checks conversations every 15 minutes instead of using webhooks, so replies wait.

Templates on n8n.io are submitted by the community, not built by n8n. Avoid the ones that scrape or auto-follow through third-party actors: that's outside Meta's API and Instagram's terms.

n8n with Meta's API, or n8n with an API like Breakreach's?Who handles Meta.

n8n + Meta's APIn8n + BreakreachBreakreach alone
Meta app and App ReviewYours; App Review and Business Verification to serve other accountsNone, Breakreach's approved appNone
Public HTTPS webhookYes, with the verification handshakeOnly to receive Breakreach's events, if you want themNo
Access tokens60 days, refreshed by your own workflowOne Breakreach API keyNone
24-hour window, 1 reply per comment, 750 an hourIn your workflowHandled by BreakreachHandled by Breakreach
Flows: buttons, follow check, handoffBuilt node by nodeBuilt in Breakreach, read and changed from n8nBuilt in the app
Costn8n Community edition free if you host it; n8n cloud from €20 a month billed yearly (2,500 executions)n8n plus Breakreach from $29 a month, or $5 per account on the Developer planFrom $29 a month
n8n prices from n8n.io/pricing on October 8, 2026, shown in euros from France (Pro: €50 a month billed yearly, 10,000 executions). n8n recommends self-hosting “for expert users”. Breakreach prices from its pricing page.

Build the flow in BreakreachThe Meta part, done.

Set the automation up in Breakreach's app (Comment to DM or DM automations), or from n8n through the API below: Breakreach's approved Meta app receives Instagram's webhooks, applies the 24-hour window and the comment rules, and runs the flow. n8n stays free for what it's good at: CRMs, sheets, Slack.

  1. app.breakreach.com/dashboard/northbeam/automations
    The Automations page with the Comment to DM cards and the DM templates

Connect it to n8nA Webhook node in, an HTTP Request node out.

Breakreach sends signed events to any URL, n8n's Webhook node included, and its REST API takes n8n's HTTP Request node with a Bearer key. Reference: DM automations API, Comment to DM API.

  1. 1

    Receive Breakreach's events in a Webhook node

    In Breakreach, Settings, API & MCP, add a webhook with n8n's production URL and pick events such as comment_dm.sent (a new lead) or dm_automation.handoff (someone for your team). Check X-Breakreach-Signature: sha256= and an HMAC-SHA256 of the raw body with the webhook's secret.

    dm_automation.handoff, as n8n receives it
    {  "event": "dm_automation.handoff",  "timestamp": "2026-10-08T09:44:12.508Z",  "automation": { "id": "6704a2c9e1b84f0012d3c5a1", "name": "Pricing questions" },  "run": { "id": "6704a31f0c9e2a0012f1b6d4", "status": "handed_off", "reason": "handoff", "error": null },  "contact": { "id": "7310449128822150", "username": "nightowl.cafe", "name": null },  "account": { "id": "6701a2f4c9e84b0012a3b4c5", "platform": "instagram" }}
  2. 2

    Create or change automations from an HTTP Request node

    POST to /v1/dm-automations with Authorization: Bearer and the JSON body; add an Idempotency-Key header on POSTs so a retried node doesn't create a second one. PATCH with active: false pauses it.

    HTTP Request node
    curl https://api.breakreach.com/v1/dm-automations \  -H "Authorization: Bearer $BREAKREACH_API_KEY" \  -H "Content-Type: application/json" \  -H "Idempotency-Key: {{ $execution.id }}" \  -d '{    "accountId": "6701a2f4c9e84b0012a3b4c5",    "trigger": { "type": "keyword", "keywords": ["webinar"] },    "steps": [{ "type": "message", "text": "Here is your seat {first_name}",                "button": { "title": "Join the webinar", "url": "https://example.com/webinar" } }]  }'
  3. 3

    Read the results back

    GET /v1/dm-automations/:id/runs and GET /v1/comment-dm-rules/:id/events return each person, every step and how it ended, for a weekly report to a sheet.

    runs
    curl https://api.breakreach.com/v1/dm-automations/6704a2c9e1b84f0012d3c5a1/runs?limit=50 \  -H "Authorization: Bearer $BREAKREACH_API_KEY"

What about Zapier or Make?Neither has Instagram DMs built in.

Zapier's Instagram for Business app has two triggers (new media, new tagged media) and publishing actions, and no DM trigger or action. Its Facebook Messenger app covers Page messages only. Make's Instagram for Business app has no message modules; its Facebook Messenger modules need your own developer app, and its docs note “The bot cannot send the message first”. On both, Instagram DMs go through a generic HTTP module and your own Meta app, or a third-party app with an API.

Breakreach

Keep n8n for your stack, not for Meta. Breakreach runs the DMs and sends n8n the events.

Get an API key

DM hasprice

5 steps
started

northbeam.coffee

Instagram · Direct

Hi! What's your wholesale price for 10 kg?

Here's our café price list, free shipping from 5 kg 👇

See the price list

1 hour later

They opened the price list

Want a free tasting kit for your café?

Yes pleaseNot now

Yes please

Handed off to your team, in the Inbox

FAQ

n8n and DMs, answered.

Short answers, sourced above.

No. n8n has a Facebook Trigger node with an Instagram object (messages, comments, mentions) and a Facebook Graph API node for graph.facebook.com. The Instagram API with Instagram Login is called with the HTTP Request node.

For your own account, yes: n8n's Community edition is free to self-host, and Meta's Standard Access needs no App Review for an account you own. You run the server, the HTTPS webhook and the token refresh yourself.

A long-lived Instagram token lasts 60 days. It can be refreshed once it's at least 24 hours old; if it isn't refreshed within 60 days it expires for good.

Yes. Breakreach sends signed webhooks (comment_dm.sent, dm_automation.handoff and more) to n8n's Webhook node, and n8n's HTTP Request node calls Breakreach's REST API with an API key. Breakreach handles the Meta app, tokens and messaging rules.

Instagram
TikTok
LinkedIn
YouTube
X
Facebook
Threads

Put your socials on autopilot.Live in two minutes.

Plans from $29 a month. Cancel anytime.