Been meaning to share this for a while since a few people in here have asked about capturing leads straight from Instagram DMs without hiring a dev to build something custom.
Context: I run outreach for a small coaching business, and most of our inbound interest comes through Instagram comments and DMs rather than forms. Manually copying names, usernames, and what they asked for into a spreadsheet was eating way too much time, so I finally sat down and automated it in Make.
Rough flow:
- Trigger – Instagram Business account webhook (via the Instagram module) fires whenever a new DM comes in. If you’re on a Meta Business setup already, this part is pretty painless.
- Filter – I added a filter step so it only continues if the message contains certain keywords (things like “price,” “info,” “interested,” etc.) so I’m not logging every random “hey” as a lead.
- Router – Splits based on whether it’s a first-time DM or a reply in an existing thread, since I wanted different handling for each.
- Data extraction – Pulls the sender’s username, message text, and timestamp.
- Google Sheets module – Adds a new row with all that info, tagged with a status column (“new,” “contacted,” “converted”) so my team can update it manually as we follow up.
- Slack notification – Pings our team channel so someone follows up within the hour instead of the lead going cold.
The trickiest part honestly wasn’t Make itself, it was getting the Instagram/Meta API permissions sorted since Meta is picky about what counts as a “business use case” for DM access. If anyone’s stuck on that step, happy to share what worked for us.
One thing worth mentioning if you’re doing high DM volume: I also tested a tool called InstantDM alongside this for auto-tagging and initial reply handling before things hit the Make scenario, mainly because manually filtering keyword matches was still letting some junk through. It’s not required for the workflow to work, just made the pre-filtering a bit smarter on our end.
Curious if anyone else has built something similar, or found a cleaner way to handle the Meta permissions step. Also open to feedback on the scenario itself if anyone spots something that could be simplified.