Lead Nurture Automation Workflow: Check-Ins With a Reason, Not a Drip
Most nurture is a drip: the same seven emails to everyone who ever enquired. The workflow watches for a reason to write — a new listing that matches what a lead wanted, a rate change that moves their budget, the anniversary of a purchase, a life event they mentioned — drafts a short message that names the reason, sends it in the agent's voice, logs it, and stops the sequence the moment the person replies. Cold leads get two or three well-timed touches a quarter instead of a weekly newsletter, and the agent only hears about the ones who answered.
- Built and run for you$197/month
- Custom build$2,000–3,500 one-time
- TriggerSignal events (listing feed, rate feed, CRM dates, calendar)
- Reference stackClaude + n8n
Per agent or small team, up to 2,000 nurtured contacts and four signal types. Custom signals from your own data, SMS as a channel, or a team with shared leads are a custom build.
Written by Max Zeshut
Founder at Agentmelt · Last updated Sep 14, 2026
Follow-up dies after the first week. The CRM has 400 leads tagged 'nurture' that nobody has written to in months, a monthly newsletter with a 2% open rate, and past clients who list their next home with whoever called last.
Every lead and past client is touched when there is a reason, never when there is not. Replies land in the agent's inbox with the context; the rest runs itself. Past clients hear from you before they need you.
How the workflow runs
Trigger, then 8 steps.
Trigger — Signal events (listing feed, rate feed, CRM dates, calendar). A new listing in the CRM or MLS feed, a rate change from your lender's feed, an anniversary or birthday in the CRM, or a lead going quiet for N days each start a run for the leads they affect.
- 01Detect the reasonIntake & triggersSchedule TriggerHourly: new listings, rate changes and CRM dates are compared against every lead's stated wants (area, beds, budget, timeline) and their history.
- 02Match leads to the signalMatching, validation & reconciliationCodeA listing matches a lead when area, price band and beds fit; a rate move matches leads whose budget was near the edge; an anniversary matches one person. No match, no message.
- 03Check the guardrailsClassification & triageCodeSkip anyone contacted in the last 14 days, anyone who unsubscribed, anyone with an open conversation, and anyone whose CRM stage is 'active' — the agent is already talking to them.
- 04Draft the messageDrafting & generationAI AgentTwo to four sentences in the agent's voice that name the reason, reference what the lead said last time, and ask one question. Fair-housing wordlist applied.
- 05Approve or auto-sendApprovals & human-in-the-loopSlackFor the first month every draft goes to the agent for a tap; afterwards, message types the agent has approved ten times run without review.
- 06Send and logWrite-back & actionsGmailSent from the agent's own address, threaded where a thread exists; the CRM gets a note and the 'last touched' date.
- 07Stop on replyNotifications & escalationGmail TriggerA reply ends the sequence for that person and forwards the thread to the agent with the lead's history in three lines.
- 08ReportEvaluation & learning loopsGoogle SheetsMonthly: touches sent by reason, replies, showings and listings that came from a nurture touch, so the agent sees what a reason is worth.
Each capability page explains the pattern and lists every automation that uses it.
The template is built on n8n. The same steps run on Make, Zapier or plain code; the tool is chosen to fit your accounts, and you own the result.
- 01 Detect the reason —
Schedule Trigger - 02 Match leads to the signal —
Code - 03 Check the guardrails —
Code - 04 Draft the message —
AI Agent - 05 Approve or auto-send —
Slack - 06 Send and log —
Gmail - 07 Stop on reply —
Gmail Trigger - 08 Report —
Google Sheets
Data it touches
- CRM leads with wants and history (Follow Up Boss, kvCORE, HubSpot)
- Listing feed (CRM or MLS)
- Rate feed or manual rate table
- Agent voice samples
- Calendar for showings
Guardrails
- No message without a reason the lead would recognise; the model cannot invent one.
- Frequency cap: at most one touch per lead per 14 days, at most three per quarter.
- Anyone in an active conversation or an active CRM stage is excluded automatically.
- Unsubscribe and STOP are honoured on the first word; suppression is written to the CRM.
- Fair-housing language check on every draft; flagged drafts cannot be sent.
Standard or custom
When this becomes a custom build.
The subscription covers the standard version — $197/month, setup and maintenance included. Three things move it to a custom build ($2,000–3,500 one-time), delivered into your accounts to keep. If one of them is you, say so on the audit and the plan prices both.
Signals from your own data — a portal you run, a lender's API, a home-value model — beyond the four standard types.
SMS as a channel, with the consent records and quiet hours that requires.
A team or brokerage where leads are shared and touches must be coordinated across agents.
Running the standard version first is the usual path: the exceptions it logs in the first month are the scope of the custom build, with your own numbers. How custom builds work.
Why a reason beats a schedule
A drip is written for nobody in particular, so it reads that way. A message that says 'the two-bed on Maple you liked just sold for asking — there is a similar one on Elm' is a service, not marketing, and it gets answered. The workflow's job is to find that reason from data the agent already has, and to stay silent when there is none. Fewer messages, more replies, and no unsubscribes from people who were only ever cold because nobody had anything to tell them.
Past clients are the best leads you are not working
Referrals and repeat business come from people who bought from you three years ago, and the touch that reminds them you exist costs nothing. Anniversaries, a rate move that makes a refinance or a move plausible, a comparable sale on their street — each is a reason to write that reads as thoughtfulness. The workflow treats past clients as a segment with its own signals and its own frequency cap.
The first month runs with approvals for a reason
The drafts are good from the first day, but the agent's confidence is not, and it should not be. Every message goes to the agent for a tap during the first month; message types that have been approved ten times without edits switch to auto-send. The result is a system whose voice the agent has actually vetted, and a habit of glancing at the summary rather than writing from scratch.
Tools in the stack
What it connects to.
| Tool | Role in this workflow |
|---|---|
| n8n | Signal detection, matching, sending and logging |
| Claude | Message drafting in the agent's voice |
| Follow Up Boss / kvCORE / HubSpot | Leads, wants, history, notes |
| Gmail / Outlook | Sending from the agent's address; reply detection |
| Slack | Approvals in the first month |
Building it in Zapier instead? The step-by-step recipe.
Zapier has no importable file, so this is the build guide: the same process as the n8n template and the Make blueprint, one Zap step per line. Expect 10–14 steps; the AI steps use the Anthropic (Claude) app, rules go in Code by Zapier, and every AI step is followed by a Filter that stops the Zap when Claude flags the item for a person.
Before you start
– Keep the values from "Config (edit me)" somewhere the steps can read them — a Storage by Zapier key each, or a Formatter → Utilities step at the top of the Zap: your name, your email, company, time zone, quiet hours (21–8), approver (channel or email), test mode.
– Connect the apps once: Anthropic (an API key), plus Follow Up Boss / kvCORE / HubSpot, Gmail / Outlook, Slack.
– Turn the Zap on with test mode on; read the first runs in Zap History before switching it off.
Steps
- Trigger — Schedule by Zapier (trigger). A new listing in the CRM or MLS feed, a rate change from your lender's feed, an anniversary or birthday in the CRM, or a lead going quiet for N days each start a run for the leads they affect.
- Code by Zapier (JavaScript) — Match leads to the signal. A listing matches a lead when area, price band and beds fit; a rate move matches leads whose budget was near the edge; an anniversary matches one person. Start from
return { ...inputData };and add the rule. - Code by Zapier (JavaScript) — Check the guardrails. Skip anyone contacted in the last 14 days, anyone who unsubscribed, anyone with an open conversation, and anyone whose CRM stage is 'active' — the agent is already talking to them. Start from
return { ...inputData };and add the rule. - Anthropic (Claude) — Send Message. Model
claude-sonnet-5, max tokens 2000, temperature 0.2. Paste the system prompt below; the user message is the fields from the previous step.You are the "Draft the message" step of the Lead Nurture Automation Workflow workflow run by Agentmelt. Task: Two to four sentences in the agent's voice that name the reason, reference what the lead said last time, and ask one question. Fair-housing wordlist applied. Rules: - No message without a reason the lead would recognise; the model cannot invent one. - Frequency cap: at most one touch per lead per 14 days, at most three per quarter. - Anyone in an active conversation or an active CRM stage is excluded automatically. - Unsubscribe and STOP are honoured on the first word; suppression is written to the CRM. - Fair-housing language check on every draft; flagged drafts cannot be sent. - Answer only from the data provided in the input. If something is missing, say so in the output instead of guessing. - If this step produces a message or a document, put the full text in `draft` (and a `subject` if it is an email); put a one-line summary in `summary`. - Set `needs_human` true whenever you are unsure, the input is unusual, or a rule above applies; a person will look at it. - Return valid JSON matching the output schema; no prose outside the JSON. Reply with a single JSON object and nothing else: the fields the task needs, plus "needs_human" (true when unsure), "confidence" (0–1) and "summary" (one line).
- Code by Zapier (JavaScript) — parse Claude's JSON. Input
text= Claude's reply; codereturn JSON.parse(inputData.text);so the fields become mappable in later steps. - Filter by Zapier. Only continue if
needs_human(from the previous step) *does not exactly match*true. Everything Claude is unsure about stops here — check Zap History for those, or add a Paths step whose second path posts the item to your approver. - Slack — Send Channel Message (approval). Send the summary to your approver with what would be written. Zapier has no wait-for-reply step: with approval mode on, stop the Zap here and re-run the write-back by hand (or from a second Zap triggered by a Slack reaction on the message). With approval mode off, the next step runs immediately.
- Filter by Zapier. Only continue if the stored
approval_modeisfalse. - Gmail — Send Email — Send and log. Sent from the agent's own address, threaded where a thread exists; the CRM gets a note and the 'last touched' date.
- Gmail — New Email Matching Search (trigger) — Stop on reply. A reply ends the sequence for that person and forwards the thread to the agent with the lead's history in three lines.
- Google Sheets — Create Spreadsheet Row — Report. Monthly: touches sent by reason, replies, showings and listings that came from a nurture touch, so the agent sees what a reason is worth.
Guardrails to keep
– No message without a reason the lead would recognise; the model cannot invent one.
– Frequency cap: at most one touch per lead per 14 days, at most three per quarter.
– Anyone in an active conversation or an active CRM stage is excluded automatically.
– Unsubscribe and STOP are honoured on the first word; suppression is written to the CRM.
– Fair-housing language check on every draft; flagged drafts cannot be sent.
Full blueprint: https://agentmelt.com/workflows/lead-nurture-automation/ · n8n template and Make blueprint: https://github.com/zeshutmax/agentmelt-blueprints
Want this running without building it?
Automation workflow
$197/month
We set up, host and maintain this workflow on n8n and connect it to your tools. Setup included, cancel monthly, you keep the JSON.
Custom build
$2,000–3,500 one-time
Your systems, your rules, your edge cases. A one-off build on Claude and n8n, delivered with documentation and a walkthrough.
Per agent or small team, up to 2,000 nurtured contacts and four signal types. Custom signals from your own data, SMS as a channel, or a team with shared leads are a custom build.
Also sold one-time, installed in your own accounts, as part of the real-estate agents package — kit $49 · install $249 · package $490.
FAQ
Frequently asked questions.
Is this different from the CRM's own drip campaigns?
Yes. A drip sends on a schedule regardless of the person; this sends only when there is a reason that person would recognise, and stops on reply. It runs inside the CRM through its API, so nothing moves out.
How many messages does a lead get?
Typically two or three a quarter, capped at one per 14 days. Leads with many matching signals do not get more messages — the cap wins.
Can it text?
Email is standard. SMS is a custom addition because of consent records and quiet-hour rules; it is a good addition once the email version has run for a month.
Sources
What this blueprint is built on.
Vendor documentation the steps rely on, and the rules the guardrails are written against.
- Follow Up Boss — API documentation docs.followupboss.com/
- FTC — CAN-SPAM Act compliance guide www.ftc.gov/business-guidance/resources/can-spam-act-compliance-guide-business
- FCC — Telemarketing and robocalls (TCPA) www.fcc.gov/general/telemarketing-and-robocalls