How to Connect Instagram DMs to AI Using Make.com

Been meaning to write this up for a while. I got tired of jumping into Instagram three or four times a day just to answer the same handful of DM questions — pricing, availability, “is this still in stock,” that kind of thing — so I finally sat down and wired an AI layer into the inbox using Make. Sharing the setup here in case anyone else is stuck on the same thing, and I’d genuinely love feedback if you’ve built this differently.

Before you touch Make, get the Meta side sorted

This is the part everyone skips and then gets stuck on later. Instagram DMs don’t just flow into any automation tool — you need:

  • An Instagram Professional (Business or Creator) account
  • That account linked to a Facebook Page
  • A Meta app set up in the Meta Developer console with the Messaging permissions requested
  • Depending on your use case, that permission may need to go through Meta’s app review before it works outside of test mode

If you skip this and go straight to Make, you’ll build a scenario that just sits there with nothing coming in. Ask me how I know.

Setting up the trigger in Make

Once the Meta app is approved and your webhook subscription for messaging is live, here’s the flow I landed on:

  1. Add a Custom Webhook module as your trigger — this is what actually catches the incoming DM payload from Meta, since the message event gets pushed to whatever URL you register in the developer console.
  2. Run the scenario once so Make can learn the structure of the incoming data. You’ll see the sender ID, the message text, and a timestamp in there.
  3. Add a Router if you want to split logic — for example, only responding to messages that don’t already have a human agent tagged, or ignoring anything that isn’t a text message.

Feeding the message into AI

This is the part that actually feels like magic once it’s working. After the trigger, drop in whichever AI module you’re using — OpenAI’s Create a Completion (or Chat Completion) module is the most common, though Claude works the same way if that’s your preference.

A few things that made mine noticeably better:

  • Don’t just pass the raw message. Give the AI a short system prompt describing your business, your tone, and what it should never say (pricing you haven’t confirmed, promises about shipping times, anything legal-adjacent).
  • Map in a little context if you have it — the sender’s name, maybe their past order status from a Google Sheet or CRM — so the reply doesn’t sound like it’s talking to a stranger every time.
  • Cap the response length. Long AI replies feel robotic in a DM thread where everything else is three words and an emoji.

Sending the reply back

This part trips people up because Make’s native Instagram modules are mostly built around comments and posts, not sending messages. What actually works is an HTTP module making a POST request to the Graph API’s messaging endpoint, using the Page access token, with the recipient ID and your AI-generated text in the payload. It looks intimidating the first time, but it’s really just three fields once you’ve done it once.

Worth noting: Meta enforces a messaging window (you can only message someone who’s messaged you first, and there’s a time limit on how long that window stays open), so this setup is built for reactive replies, not cold outreach. That’s by design on Meta’s end, not something you can automate around.

A couple of things I’d flag before you go build this

  • Test with a throwaway account first. An AI that goes slightly off-script in someone’s actual DMs is a bad first impression.
  • Add a fallback — if the AI’s confidence is low or the message contains certain keywords (“refund,” “cancel,” “lawyer”), route it to a human instead of letting the bot handle it.
  • Keep a log. I dump every incoming message and AI response into a Google Sheet, mostly so I can spot-check tone once a week rather than trusting it blindly forever.

If you’re already using something like Social by InstantDM to plan out your Notes, Stories, and post captions, this pairs pretty naturally with that — the content side stays consistent, and now the reactive DM side doesn’t fall entirely on you either. It’s not solving the same problem, but the two ends up covering the full loop: you post, people reply, the AI handles the first response, and you jump in wherever it actually needs a human touch.

Curious if anyone’s handling the human handoff differently, or if you’ve found a cleaner way to send the reply than the HTTP workaround. Happy to share the exact scenario blueprint if people want it.