Instagram Comment To DM Automation: Comment, DM, Email In One Afternoon
Someone comments a word on your post. They get a DM, tap a button, hand over an email, receive the resource, and the next day they are in your newsletter. Two tools, two workflows, one afternoon. Here is the exact shape I run and the settings that bite.
Most comment-to-DM funnels end in the DM. The person gets a link, maybe a follow, and then Instagram's 24 hour window closes and you never speak to them again. You built a vending machine and called it a list.
The version I run ends in an email. The comment opens a DM. The DM asks for an email before it hands over the resource. The email address lands in my CRM, which sends the resource, waits a day, and drops the person into the same newsletter every keyword feeds. The newsletter is where the relationship actually lives, because email has no 24 hour window.
I built the latest one, keyword GROK, in a single afternoon. Two workflows on the Instagram side, two on the CRM side, five tags, one webhook between them. Every keyword after that is a clone with three things changed.
This guide is the shape, the settings that must be right or the whole thing fires at strangers, and the test I run with a throwaway account before any real person touches it. The workflow mechanics inside GoHighLevel are in How I Build Automations In GoHighLevel. This one is the system end to end.
The three levels
You reply to every comment by hand, paste the link in the DM, and lose them the moment the thread goes quiet.
One keyword automation with a follow gate, a DM that captures the email before the link, a CRM workflow that sends the resource and hands off to the newsletter a day later. Every new keyword is a clone.
Each new guide ships with its keyword already wired. An agent drafts the resource email and the DM copy from the guide, you approve, and a weekly report shows comments, taps, emails captured and newsletter adds for every word.
The mental model
The keyword sends a link in the DM. Done. The list grows in your DM inbox, which is not a list.
The DM captures an email before the link. The CRM owns everything after that: resource, wait, newsletter. Instagram is the front door, never the house.
| Role | Talks to you | Job |
|---|---|---|
| Comment automation | First | Exact word match on the post, follow gate, one DM with a button |
| DM workflow | Second | Button tap, ask for the email with one retry, send the link, tag, post the webhook |
| Resource workflow | Third | Webhook in, contact and tags, resource email, wait one day, hand off tag |
| Newsletter onramp | Shared | One workflow every keyword feeds by tag. Built once. |
One afternoon, in this order
1. The resource exists before anything else
A real page at a real link, or the automation delivers a promise. My keywords deliver guides on this site, each with a copyable skill file. Pick one word for it. One word, obvious, not something people type in normal comments. GROK for the Grok Bot guide. AGENT for the agent guide. Never yes, love, or this.
2. Create the tags first
In the CRM, before you touch a workflow: the keyword tag (kw-grok), a source tag (ig-dm-lead), the hand off tag (health-wealth) and the subscriber tag (newsletter-subscriber). A workflow that references a tag which does not exist shows the step as incomplete and you will chase that badge for an hour. The GoHighLevel guide has the full tag discipline.
3. Build the shared newsletter onramp once
Trigger: tag added, health-wealth. Steps: add tag newsletter-subscriber, send the first issue. That is the whole workflow. Every keyword you ever build ends by adding the health-wealth tag, so this one workflow owns the newsletter forever. Build it before the resource workflow, because the resource workflow's last step points at it.
4. Build the resource workflow
Trigger: inbound webhook. Steps in exact order: create or update contact from the payload, set the opt in source and opt in resource fields, add the keyword tag and the source tag, send the resource email, wait one day, add the health-wealth tag. Publish it and copy the webhook URL. That URL is the only thing the DM tool needs to know about your CRM.
5. Build the DM side
Step one is the comment automation: match the exact word on post comments only, require a follow if you want the follow gate (I use it on lead magnets meant to grow the account), and send one short line with a button. No link in message one. Step two fires on the button tap: ask for the email, allow one retry if it is not a valid address, then send the link and one line on what to do with it, add the tag, and post the webhook with name, email, source, resource and the Instagram handle. If they never give an email, still deliver the link. Nobody gets punished for skipping a step.
6. Test with a throwaway, then read it as a stranger
From a second account: comment the word, follow, tap, type an email you control, receive the link. Then open the CRM: contact exists, both tags present, resource email sent. Wait for the resource email and read it on a phone. Then delete the test contact so it never receives the newsletter. Only after that does the post go live.
Starter prompts
Paste these as written. They are short on purpose, because the long ones drift.
Act as my comment-to-DM-to-email builder. Keyword: [WORD]. Resource: [name] at [link]. Newsletter hand off tag: health-wealth. Produce, in build order: (1) the tags to create first; (2) the shared newsletter onramp workflow as trigger and steps, if it does not already exist; (3) the resource workflow as trigger and steps in this exact order: create or update contact, set opt in source and resource, add keyword tag and source tag, send resource email, wait one day, add hand off tag; (4) the comment automation settings: exact match, comments only, typo tolerance off, follow gate on or off with a one line reason, message one with a button and no link; (5) the DM workflow: button tap, email ask with one retry, link delivery even if no email, tag, and the JSON payload to post to the CRM webhook; (6) the resource email under 150 words with a preheader, short paragraphs, one button and a reply question; (7) the throwaway test and what I should see in the CRM before I delete the test contact. Do not invent any link, number or claim.
Rewrite this resource email so it reads like a person who just sent a friend a link. Preheader under 90 characters. Paragraphs of one to three sentences with a blank line between them. One button. End with a question I want them to reply to. Include one line at the bottom saying why they received it and how to stop. No em dashes.
I am adding keyword [WORD] for resource [name] at [link]. List only what changes from the existing keyword funnel: the word, the button label, the resource text and link in the DM workflow, the keyword tag, the email subject and body, and the new webhook URL. Everything else stays identical, including the hand off tag.
The chat window version, then the real one
Layer 1 is designing the funnel in a chat window: paste the prompt below, get the tag list, the workflow steps, the DM copy and the email. That alone saves the afternoon of thinking. Layer 2 is the settings inside the real tools that decide whether it fires at the right people. These are the ones that must change from the defaults.
Exact match on, typo tolerance off
Fuzzy matching turns similar words into your keyword. I learned this on a short word in August and turned it off for good.
Match in post comments only, never in DMs
Someone typing the word inside an existing conversation must not restart the funnel.
One button label per funnel
The tap echoes the label back as a message and step two matches that exact text. Two funnels sharing a label fire together.
The DM follow up sits inside 20 hours
Instagram only lets the tool send within 24 hours of the person's last message. Any DM nudge goes at 20 hours and exits if they reply. Anything later than that is email's job.
Wait one day before the hand off tag
The resource email lands alone. The newsletter starts the next day. Two emails in one minute reads as a broadcast.
The last step is always the hand off tag
Every keyword workflow ends by adding health-wealth. If you forget it, that keyword grows a list nobody mails.
Give it to your agent, three ways
Same skill, three worlds. Pick the one you actually use. The skill file at the bottom of this page is the instructions in every case.
An agent with connectors (Claude Desktop, Claude Code, Grok Bot)
Neither the DM tool nor the CRM has a first party connector in the chat apps I use, so the agent's job here is design and test, and the human clicks the settings. Give it the skill file and the prompt. If your CRM exposes an inbound webhook, the agent can fire the test payload for you.
- Save the skill at the bottom of this page as a project instruction in Claude, or as a skill file in Claude Code.
- Paste the first prompt with your keyword and resource. It returns the tag list, both workflows step by step, the DM copy, the email and the test.
- Build the pieces by hand in the DM tool and the CRM. Paste the webhook URL back to the agent.
- Ask it to send the test payload with the command below, then confirm the contact in the CRM yourself before deleting it.
curl -s -X POST "$GHL_WEBHOOK_URL" -H 'Content-Type: application/json' \
-d '{"name":"Test Person","email":"you+test@yourdomain.com","source":"instagram-dm","resource":"grok-bot-setup","ig":"@yourtesthandle"}'ChatGPT (a project or a custom GPT)
ChatGPT has no connector to either tool. Use a Project for the design and the CRM's webhook for the test.
- Create a Project, paste the skill file as its instructions.
- Paste the first prompt with your keyword and resource. Build from its output.
- For the test, run the curl from the connectors block in your own terminal, or paste the JSON into the CRM's webhook test tool if it has one.
- Paste the resource email draft back and ask for the rewrite in the second prompt before it goes into the workflow.
Anything with an API (a token and a curl call)
If you want an agent to build the CRM side without a browser, GoHighLevel's workflow endpoints can create the workflow, save the step graph, attach the inbound webhook trigger and publish. The DM tool I use has an API with an OpenAPI spec for comment automations. Keys live in environment variables, and the agent runs in a mode where nothing mutates unless you set a flag.
- Export the CRM key and location id in your shell. Never paste them into a chat.
- Create the tags first through the tags endpoint, then the onramp workflow, then the resource workflow, then attach the trigger and publish.
- Read the webhook URL from the trigger response. Give it to the DM tool's step two.
- Gate the whole script behind an explicit mutate flag so a dry run is the default.
export GHL_API_KEY=... # private integration key, scoped to one location export GHL_LOCATION_ID=... # dry run by default; the script refuses to create anything without this ALLOW_MUTATE=1 node build-keyword.mjs --word grok --resource "Grok Bot setup guide" --link https://aiceolab.com/guides/grok-bot-setup/
Failure modes
Every one of these has happened to me or to someone I set this up for.
| Failure | Fix |
|---|---|
| DMs firing at people who never commented the word | Typo tolerance off, exact match on, comments only |
| Message two never sends | The button label and the step two trigger text are not identical |
| Workflow steps show a warning badge | The tag does not exist yet. Create tags before workflows |
| Two emails land within a minute of each other | The wait step before the hand off tag is missing or set to minutes |
| A keyword grew a list nobody mails | Its last step never added the hand off tag |
| The newsletter was built as DMs and died at 24 hours | DM nudges at 20 hours only. Email owns everything later |
| Test contact received Issue 01 a day later | Delete the test contact after the resource email arrives, not before |
The tools I use for this
| Tool | What it is for here | |
|---|---|---|
| Zernio | The comment-to-DM tool on my account. Keyword match, follow gate, email ask, webhook out. | no link, just use it |
| ManyChat | The same job for most people. The shape in this guide works there too. | Get it |
| GoHighLevel | The CRM that owns everything after the email: resource, wait, newsletter. | Get it |
| Claude | Designs the funnel from the prompt and fires the test payload. | Open |
The free skill
It is the whole funnel as an operating checklist: the deliverable check, the keyword rules, the two step DM with the email ask, the webhook payload, the CRM workflow in exact order, the shared newsletter handoff, the false positive settings, and the throwaway test. Hand it to your agent with a keyword and a resource and it produces every piece you have to build, in build order.
---
name: comment-to-email-afternoon
description: Designs and checks a keyword comment funnel that ends in an email list, not a DM thread. Instagram comment automation with a follow gate, a DM that captures the email before the link, a CRM workflow that sends the resource, waits a day and hands off to one shared newsletter. Produces every piece in build order plus the throwaway test. Trigger on "wire my keyword funnel", "comment to DM to email", "set up a keyword for this guide", "new keyword".
---
# Comment To DM To Email
You are building a funnel where a comment on a post ends with a contact in the CRM who
receives the resource by email and joins the newsletter the next day. Instagram is the
front door. Email owns everything after the address is captured, because Instagram only
allows sends within 24 hours of the person's last message.
You design and check. The human clicks the settings and activates. Never turn on a
customer facing automation yourself. Never invent a link, a number or a claim.
## Inputs to collect
- The keyword. One word, obvious, not a word people type in normal comments.
- The resource: name and a link that already exists. If the link does not exist, stop.
- The newsletter hand off tag (default: health-wealth) and whether the shared onramp
workflow already exists.
- Follow gate: on for lead magnets meant to grow the account, off when the goal is
maximum deliveries.
## Output, in build order
### 1. Tags to create first
kw-[word], ig-dm-lead, the hand off tag, newsletter-subscriber. Tags must exist before
any workflow references them or the step shows as incomplete.
### 2. Shared newsletter onramp (build once)
Trigger: tag added, hand off tag. Steps: add tag newsletter-subscriber, send the first
issue. Every keyword ends by adding the hand off tag, so this workflow owns the newsletter.
### 3. Resource workflow (one per keyword)
Trigger: inbound webhook. Steps in this exact order:
1. Create or update contact from the payload (name, email).
2. Set opt in source and opt in resource fields from the payload.
3. Add tags kw-[word] and ig-dm-lead.
4. Send the resource email.
5. Wait one day.
6. Add the hand off tag.
Publish, then copy the webhook URL. That URL is the only thing the DM tool needs.
### 4. Comment automation (step one)
- Match the exact word on post comments only. Typo tolerance off. No matching inside DMs.
- Follow gate per the input above.
- Message one: one short human line plus a button. No link in message one.
- Public reply to the comment so reach compounds.
- Button label short and unique to this funnel; the tap echoes the label as a message
and step two matches that exact text.
### 5. DM workflow (step two)
Fires on the button tap:
1. Ask for the email in one line. Allow one retry if the address is not valid.
2. Send the link plus one line on what to do with it. Deliver the link even if no email
was given. Nobody is punished for skipping a step.
3. Add the keyword tag inside the DM tool.
4. Post the webhook to the CRM with this payload:
`{"name":"...","email":"...","source":"instagram-dm","resource":"[slug]","ig":"@handle"}`
5. Any DM follow up sits at 20 hours and exits on reply. Nothing later; that is email's job.
### 6. Resource email
Under 150 words. Preheader under 90 characters. Paragraphs of one to three sentences
with a blank line between them. One button to the resource. End with a question they can
reply to. One line at the bottom saying why they received it and how to stop. No em dashes.
### 7. The throwaway test
From a second Instagram account: comment the word, follow if gated, tap, type a real
email the human controls, receive the link. Then in the CRM: contact exists, both tags
present, resource email sent. Read the email on a phone. Delete the test contact after
the resource email arrives and before the wait step ends, so it never receives the
newsletter. Only then does the post go live.
## Cloning a new keyword
Change only: the word, the button label, the resource text and link in the DM workflow,
the keyword tag, the email subject and body, and the webhook URL. The hand off tag and
the onramp never change.
## Weekly report
Comments, DMs sent, button taps, emails captured, resource emails delivered, hand off
tags added. Comments to taps is the message one copy. Taps to emails is the ask. After
the email it is the resource. Fix the biggest drop, not the loudest.
What done looks like at thirty days
- One keyword runs end to end: comment, DM, email captured, resource sent, newsletter tag added a day later
- A second keyword was built by cloning in under an hour
- The throwaway test has been run on every keyword and every test contact was deleted
- Exact match, comments only and typo tolerance off are confirmed on every automation
- A weekly count exists for comments, taps, emails captured and newsletter adds
- You have not pasted a link into a DM by hand in a month
Want the funnel built with you, keyword by keyword?
Inside the AI CEO Lab we build this on your own accounts, then hook it to the newsletter that grows while you post.