Spent two weekends trying to wire up Meta’s Send API for a simple comment to DM flow. App review walls, OAuth token refresh cycles, webhook verification loops, all just to auto reply to people who commented “interested” on my posts.
Then I found InstantDM. Built on Meta’s official API, but none of the setup pain. I rebuilt the whole thing in Make.com in about 90 minutes. Here’s exactly how it works.
The workflow at a glance
Instagram Comment → Make.com Webhook → Router → Keyword Filter → HTTP Module (InstantDM API) → Optional Google Sheets log
Simple on paper. Let me walk through each part.
Step 1: Connect Instagram to InstantDM
Sign up at InstantDM, go to Settings, Instagram Accounts, and Connect, and log in with Facebook. Your Instagram needs to be a professional account linked to a Facebook Page. InstantDM handles all OAuth and permission scopes on its end, so no Meta app review is required from you.
Once connected, grab two things from the dashboard: your API key (Settings, API Keys) and your account ID (shown under your connected Instagram account). You’ll need both in every Make.com HTTP call.
Step 2: Build the Make.com scenario
Start with a webhooks custom webhook module. Copy the generated URL and paste it into InstantDM under Webhooks, Add Webhook, and then select the comment. created event. Every new comment on your posts now hits Make.com in real time.
Next, add a flow control router. This lets you run two branches simultaneously. One branch sends the DM, and the other logs data to Google Sheets. You can add more branches later without rebuilding anything.
On Route A, click the filter icon on the connection line before your HTTP module. Set the condition to:
comment_text contains “interested” (case-insensitive).
Add more keywords with OR, such as ‘info’, ‘price’, ‘details’, and ‘how much’, so you catch every intent signal.
Then add an HTTP Make a Request module with this configuration:
Method: POST
URL: https://api.instantdm.io/v1/messages/send
Headers:
Content-Type: application/json
X-API-Key: YOUR_API_KEY
Body:
{
"account_id": "YOUR_ACCOUNT_ID",
"recipient_id": "{{commenter_id}}",
"message": {
"type": "text",
"text": "Hey {{commenter_username}}! Thanks for your comment. Here's the info you asked for: [your link]. Let me know if you have questions!"
}
}
On Route B, add Google Sheets and Add a Row. Map timestamp, username, comment text, post ID, and status. This runs whether or not the keyword filter passes, so you have a complete log of every comment.
Advanced: Multi step sequence with a follow up delay
Want to send a follow up 30 minutes later if they don’t reply?
After the first HTTP module, add a Flow Control, Sleep module set to 1800 seconds. Make.com pauses the scenario there, and no extra operations are consumed during the wait.
After the sleep, call:
GET /conversations/{commenter_id}/messages
Check whether any messages exist after your first DM’s timestamp.
Add a filter:
messages.length = 0
Only if they haven’t replied does the scenario continue to a second HTTP module with your follow up message.
Keep everything within the 24 hour window. After that, Meta blocks outbound DMs regardless of what you send through the API.
Why InstantDM over raw Meta API
When I was trying to do this directly through Meta’s Send API, here’s what I was dealing with:
You need to submit a full business app for review before you can send DMs to anyone outside your test users. That process alone can take weeks. Then every 60 days your long lived access token expires and you have to refresh it manually or build a refresh loop yourself. On top of that, you’re managing your own webhook verification handshake, setting up your own Meta Developer App, and navigating documentation that wasn’t really written for the comment to DM use case.
InstantDM removes all of that. No app review on your end. No token management. Webhooks configured in two clicks. The free tier is enough to test the full flow, and it’s running on Meta’s official API underneath so you’re not violating any platform rules.
The only trade off worth knowing is that you’re routing through a third party service rather than calling Meta directly. For comment automation and lead capture at most scales, that’s a completely reasonable trade.
