Skip to content
DMpop

Zapier, Make and n8n Instagram comment to DM

Zapier, Make, n8n.Comment to DMin one API call.

Zapier and Make don't offer an Instagram comment-to-DM action out of the box: their Instagram for Business apps have no private-reply or DM step. n8n can do it, but only with your own Meta developer app, App Review, webhooks, dedupe and rate limiting. Or keep your workflow tool and let it create a DMpop campaign with one HTTP request.

Updated

Create a campaign
curl -X POST https://app.dmpop.com/api/v1/campaigns \  -H "Authorization: Bearer $DMPOP_KEY" \  -H "Content-Type: application/json" \  -d '{    "name": "Reel: 5 hooks that work",    "nextReel": true,    "keywords": ["HOOKS", "HOOK"],    "message": "Hey {username}, here are the 5 hooks.",    "link": "https://example.com/hooks",    "buttonLabel": "Get the hooks",    "publicReplies": ["Sent! Check your DMs"]  }'

Instagram comment trigger in Zapier and Make

What they offer.Checked this month.

We read each tool's own Instagram app page in November 2026. Here is exactly what's there.

Zapier: Instagram for Business

Zapier's Instagram for Business app page lists two triggers, New Media Posted in my Account and New Tagged Media, and two actions, Publish Photo(s) and Publish Video. No comment trigger, no DM action, no private reply.

Make: Instagram for Business

Make's Instagram for Business app has more: Watch media, List post comments, Create a comment and Create a reply, among others. Create a reply answers in the comment thread. There's no module that sends a private reply or a DM.

n8n

n8n has community workflows for Instagram comment-to-DM. They call Meta's Graph API directly with the HTTP Request node, using your own Meta app and token. It works. It's also the full DIY list below.

Some third-party apps inside Make and Zapier add Instagram messaging. We didn't test them, so they're not in the table.

DIY n8n Instagram comment to DM

Doing it yourself.The whole list.

Meta's rules are the same for everyone. Here is what a home-built comment-to-DM needs, with Meta's own pages.

  1. Your own Meta developer app with the Instagram API and the comment and messaging permissions (instagram_business_manage_comments, instagram_business_manage_messages).
  2. Advanced Access and a Live app. Meta's webhook docs say comment notifications need Advanced Access and an app that is Live. Advanced Access needs Business Verification and App Review.
  3. A public webhook endpoint (an n8n Webhook node works) that passes Meta's verification and receives comment events.
  4. Matching and dedupe. Keyword matching, skipping your own comments, and remembering which comments got a DM. Meta allows one private reply per comment, within 7 days.
  5. A queue under 750 an hour per account, Meta's private reply limit, with retries and a log of what was skipped.
  6. Polling for missed comments, because webhooks don't arrive for every comment, and token refreshes so the connection doesn't quietly expire.

DIY vs DMpop's REST API

Build it,or call it.

Keep n8n, Make or Zapier for the workflow. The question is who handles Instagram.

FeatureDMpop REST APIDIY with n8nMakeZapier
Comment-to-DM out of the boxYes. It's what DMpop doesNo. You build it from nodes and Meta's APINo private-reply module in its Instagram for Business appNo comment trigger or DM action in its Instagram for Business app
Your own Meta developer appNot needed. You connect Instagram through Meta's loginYesYes, to call Meta's API over HTTPYes, to call Meta's API with Webhooks by Zapier
Meta App ReviewNot needed by youNeeded for comment webhooks: Advanced Access means App Review plus Business VerificationSame as n8nSame as n8n
Setup timeA few minutesMostly waiting on Meta's reviewSame as n8nSame as n8n
Rate limit and queueBuilt in: 750 an hour per account, retries every 30 minutes, up to 3 timesYou build itYou build itYou build it
One reply per comment (dedupe)Built in, across campaignsYou build itYou build itYou build it
Comments webhooks missRe-checks recent comments on active campaignsYou build pollingYou build pollingYou build polling
Follow gateBuilt in, checked with InstagramYou build itYou build itYou build it
LogsEvery DM: Sent, Pending, Skipped or Failed, with the reasonExecution history. DM-level reasons are up to youScenario history. DM-level reasons are up to youZap history. DM-level reasons are up to you
CostFree plan: 1,000 DMs a month. API on every planFree to self-host, or n8n's cloud plansYour Make planYour Zapier plan

Zapier and Make details from their public Instagram for Business app pages, checked November 2026. Meta requirements from Meta's developer docs, checked the same month. Zapier, Make and n8n are trademarks of their owners; DMpop is not affiliated with them or with Meta.

Make.com and n8n Instagram DM automation, the easy way

Your calendarswitches it on.

The pattern: when a reel is scheduled in your content calendar, create a DMpop campaign with nextReel set to true. DMpop attaches it to your next reel within about five minutes of it going live.

n8n HTTP Request node

n8n · HTTP Request
Method:             POSTURL:                https://app.dmpop.com/api/v1/campaignsAuthentication:     Generic Credential TypeGeneric Auth Type:  Header Auth  Name:             Authorization  Value:            Bearer dmp_your_key_hereSend Body:          onBody Content Type:  JSONSpecify Body:       Using JSONJSON (as an expression):{  "name": "Reel: {{ $json.title }}",  "nextReel": true,  "keywords": ["{{ $json.keyword }}"],  "message": "Hey {username}, here it is.",  "link": "{{ $json.link }}",  "buttonLabel": "Open it"}

Put it after whatever watches your calendar: Notion, Airtable, Google Sheets. Set the JSON field to an expression so the {{ }} parts fill in. {username} stays as it is; DMpop swaps in the person's handle.

Node.js · fetch

Create a next-reel campaign
// Run when a reel in your content calendar is marked "Scheduled".const res = await fetch("https://app.dmpop.com/api/v1/campaigns", {  method: "POST",  headers: {    Authorization: `Bearer ${process.env.DMPOP_API_KEY}`,    "Content-Type": "application/json",  },  body: JSON.stringify({    name: `Reel: ${entry.title}`,    nextReel: true,    keywords: [entry.keyword],    message: "Hey {username}, here it is.",    link: entry.link,    buttonLabel: "Open it",    requireFollow: entry.followGate,  }),});const { data, error } = await res.json();if (!res.ok) throw new Error(error.message);console.log("Campaign ready:", data.id, data.trigger); // "next_reel"

In Zapier, the same request is a Webhooks by Zapier POST step. In Make, it's the HTTP module making a request. Same URL, header and JSON.

The fields that matter

  • name and message are required. {username} becomes the person's handle; {link} places the tracked link inside the text.
  • Pick one target: nextReel: true, postId (from GET /posts) or anyPost: true.
  • keywords (up to 10), or anyWord: true to reply to every comment. Whole-word matching is on unless you send wholeWord: false.
  • Optional: link, buttonLabel, publicReplies, openingMessage, requireFollow, followUpMessage with followUpDelayMinutes, and alsoOnDms to answer the keyword in DMs and Story replies too.
  • Unknown fields are rejected with a 400, so a typo fails loudly instead of being ignored. Each key can make 60 requests a minute.

If your pipeline publishes the reel itself and knows its ID, send postId instead of nextReel. Full field list in the developer docs.

Read campaign stats from your workflow

Pull the numbersback out.

GET /campaigns returns every campaign with sent, skipped, failed, clicks and click rate. Feed it into a weekly report, a sheet or a Slack message.

List campaigns with stats
curl https://app.dmpop.com/api/v1/campaigns \  -H "Authorization: Bearer $DMPOP_KEY" \  | jq '.data[] | {name, active, trigger, stats}'
Pause one
curl -X PATCH https://app.dmpop.com/api/v1/campaigns/CAMPAIGN_ID \  -H "Authorization: Bearer $DMPOP_KEY" \  -H "Content-Type: application/json" \  -d '{"active": false}'
One campaign, just created
{  "name": "Reel: 5 hooks that work",  "active": true,  "trigger": "next_reel",  "stats": { "sent": 0, "skipped": 0, "failed": 0, "clicks": 0, "ctr": 0 }}

ctr is clicks as a percentage of DMs sent. Send {"active": true} to resume a paused campaign.

For AI-agent workflows

Skip the workflow.Just ask.

If the thing creating campaigns is an AI assistant rather than a fixed workflow, use DMpop's MCP server at https://app.dmpop.com/mcp. ChatGPT and Claude connect with a sign-in and no key. Claude Code, Codex and Cursor use the same API key as the REST API. The assistant gets seven tools: list accounts, list recent posts, list, get, create, update and delete campaigns. It can't DM anyone itself.

Setup for each assistant is on the Instagram MCP page. Before you plan a big launch, read the Instagram DM limits, and if some people don't get the DM, the not-sending checklist.

Questions

Good to know.

Can Zapier send an Instagram DM when someone comments?

Not with its own Instagram for Business app, as of November 2026. Its app page lists two triggers (New Media Posted in my Account, New Tagged Media) and two actions (Publish Photo(s), Publish Video). There's no comment trigger and no DM action. You can still use Zapier to create a DMpop campaign with Webhooks by Zapier.

Does Make have an Instagram private reply module?

Not in its Instagram for Business app, as of November 2026. It has comment modules such as List post comments, Create a comment and Create a reply, but no module that sends a private reply or a DM. Make's HTTP module can call Meta's API if you have your own Meta app, or call DMpop's API.

Can n8n do Instagram comment to DM?

Yes, if you build it. Community workflows call Meta's Graph API with the HTTP Request node. You need your own Meta developer app, Advanced Access for comment webhooks, and your own keyword matching, dedupe, rate limiting and logs. Or use n8n's HTTP Request node to create DMpop campaigns and let DMpop handle the Instagram side.

Do I need Meta App Review to use DMpop's API?

No. You connect your Instagram account to DMpop through Meta's own login, and DMpop handles the Meta side. You only need a DMpop API key from Settings → API keys and MCP.

Can the DMpop API DM anyone I choose?

No. The API lists your accounts and posts and creates, changes or deletes campaigns. DMs only go to people who comment your keyword, DM it to you or reply to your Story with it.

What are the DMpop API's limits?

60 requests a minute per API key. The API is on every plan, including Free. DMs themselves follow Instagram's limits, such as 750 private replies an hour per account.

Can an AI agent run this instead of a workflow?

Yes. DMpop's MCP server gives ChatGPT, Claude, Claude Code, Codex or Cursor the same campaign actions as the API. Ask in plain words and it creates the campaign.

Free to start

One request.Let the DM pop.

Get an API key on any plan, Free included. The Free plan sends 1,000 DMs a month, and paid plans start at ₹99.