This is the setup guide for the ManyChat replacement. The build story lives there.
The Short Version
I was paying ManyChat $40/month for one feature: When someone comments on my Instagram reel, send them a DM with a link. That was it. I was not using a full chatbot flow, complex segmentation, or analytics. I just needed comment-to-DM. So I rebuilt that one workflow myself using:
- Meta's Instagram Graph API
- Instagram comment webhooks
- A small Node script
- Notion as the setup/config screen
- Cloudflare Workers to keep it running
It is not plug-and-play. ManyChat is still easier if you do not want to touch APIs. But if you are technical and only need this one workflow, it is very doable.
What It Does
For each reel, I can set:
- The comment keyword to listen for
- The DM text to send
- The link URL
- The button label
- An optional public reply like "Check your DMs"
Then, when someone comments on that reel, the system sends the public reply and private DM automatically.
The New Workflow
Before, with ManyChat:
- Open ManyChat.
- Find the reel.
- Add the keyword or "any comment" trigger.
- Write the DM.
- Add the link.
- Activate the automation.
Now:
- Fill the DM details in my Notion content calendar.
- Post the reel.
- Run one command in my terminal:
npm run ig-autodm:attach
That command finds my latest reel, attaches the Notion row to it, and the automation runs from there.
The Pieces I Had To Set Up
1. Meta App
I created/configured a Meta developer app that has access to my Instagram account. The app needs permissions for Instagram comments/messages and page metadata. The exact permissions depend on your account/app setup, but the important idea is:
- Read Instagram media/comments
- Receive comment webhooks
- Send private replies
- Manage comments/replies
2. Webhooks
The webhook is what tells my system: "Someone just commented on this reel." Meta sends the comment event to my webhook URL. My code checks whether that reel has an active DM setup in Notion, then decides what to send.
3. Notion Config
Notion became the UI. Each reel has fields like:
ig_media_iddm_trigger_keyworddm_message_textdm_link_urldm_link_titlecomment_reply_textdm_status
This means I do not need to build a dashboard. I already plan content in Notion, so the auto-DM setup lives there too.
4. Local Testing
Before making it permanent, I ran the webhook locally and tested comments against it. This is where most of the annoying setup happened:
- Getting the webhook URL accepted by Meta
- Verifying the app settings
- Making sure the token had the right access
- Testing whether comments actually triggered the webhook
5. Cloudflare Worker
Once the local version worked, I deployed the webhook to Cloudflare Workers so it could run all the time. That means my laptop does not need to stay open for the auto-DM to work.
The Bug I Absolutely Should Mention
The first real test created a loop. Someone commented. My bot replied, "Check your DMs." Meta then sent a webhook for my bot's own reply. My code treated that as a new comment, replied again, and kept going. I got 15+ repeated replies before I killed it. The fix was to ignore:
- Comments from my own Instagram user ID
- Comments from my own username
- Comments where Meta does not provide a reliable sender
- Comments that exactly match my configured public reply text
I also added tests so I do not accidentally recreate that loop later.
What This Replaced
ManyChat was charging me $40/month. This setup costs me $0/month on Cloudflare's free tier. That is $480/year saved for one half-day build.
What I Would Not Recommend
I would not recommend this if:
- You are non-technical
- You need a full visual automation builder
- You need support, analytics, audience segmentation, or complex flows
- You do not want to deal with Meta developer settings
ManyChat is easier. That is the value of ManyChat. But I only needed one workflow, and I was comfortable debugging it.
What I Would Recommend
I would recommend this if:
- You are technical or agent-assisted
- You only need comment-to-DM
- You already use Notion or another database to plan content
- You are comfortable with Meta developer apps and webhooks
- You want to remove a small recurring bill from your creator stack
The Real Takeaway
Even if AI does not make you money immediately, it can save you money. This did not create a new revenue stream overnight. It just removed one annoying monthly bill from my stack. That counts.
Rough Build Checklist
- [ ] Create or configure a Meta developer app.
- [ ] Connect the Instagram account.
- [ ] Make sure the app has the permissions needed for comments and private replies.
- [ ] Add a webhook endpoint for Instagram comments.
- [ ] Create the Notion fields for per-reel DM setup.
- [ ] Write a script that reads the latest reel and attaches the matching Notion row.
- [ ] Write webhook logic that checks the reel/comment against the Notion config.
- [ ] Send a public reply if configured.
- [ ] Send a private reply DM with the link.
- [ ] Add self-comment loop protection.
- [ ] Test locally.
- [ ] Deploy the webhook to a permanent URL.
Share Note
This is a build note, not a polished public tutorial. Anyone trying this should expect some Meta dashboard friction and should test with a private/test reel first.

