Key Takeaways
- The AI writes one email at a time from a row in your sheet, so every email can name the reason you're writing.
- Code checks every draft before review, and blocks leftover placeholders, missing opt-out lines and banned phrases.
- For the first two weeks, drafts wait in Gmail until a person sends them.
- Before every follow-up, the workflow checks the thread and stops the sequence if it finds a reply or a bounce.
- Use the pre-written templates instead when the same words already work for everyone.
What it is.
Pre-written templates send the same words to everyone. This workflow writes each email fresh from a row in your contact sheet, using the person's name, their company and the reason you're writing to them, which you add as a signal.
An AI step drafts the email under a set list of rules. A code step then checks the draft against thirteen of them, and blocks it if a placeholder is left in, the opt-out line is missing, a banned phrase slipped through or the body runs over the word limit.
Approved drafts send from a person's Gmail inbox in plain text, and follow-ups reply in the same thread. The gate also works out when the next email is due, so a cold sequence runs on days 1, 4, 8 and 14.
Before every follow-up, a second code step stops the sequence if the contact replied, or if a bounce notice turned up in the thread or the inbox. In review mode, a third step notices when someone has sent a draft and dates the next email from that day.
The kit is the parts and the instructions: a prompt, three Code nodes, a contact sheet and a node-by-node guide. You assemble the workflow in your own n8n, and a small test workflow lets you check the code before you connect any accounts.
What you get.
- A drafting prompt that writes one email at a time from your contact fields, with the n8n expression for each field.
- Gate code that checks every draft against thirteen rules, fills in your footer and sets the next send date.
- Stop-check code that ends a sequence on a reply, or on a bounce notice in the thread or the inbox.
- Review-check code that spots a sent draft and dates the next email from the day it went out.
- A test workflow that runs all three Code nodes inside n8n on sample data, with no logins needed.
- A contact sheet and a node-by-node setup guide, from the schedule trigger to the row update.
How to set it up.
Import the test workflow into n8n and run it, to confirm the three Code nodes work in your instance before you connect anything.
Import the contact sheet into Google Sheets, add ten contacts with a specific signal each, and set their status to ready and their first send date.
Build the workflow from the guide: read the sheet, route rows by status, and run the stop check before every follow-up.
Add an AI chat node with the drafting prompt, then an Edit Fields node that puts the sheet row back beside the model's text.
Paste the gate code into a Code node, edit its four settings, and send failing drafts to Slack with their reasons.
Send passing drafts to Gmail as drafts for the first two weeks; the review check picks up each one after someone sends it.
Read every draft from the first ten contacts, adjust the prompt where they miss, then switch trusted sequences to sending directly.
Use cases
Cold outreach from a signal
You add a contact because they posted a job ad or launched a product. The workflow writes a first email built on that signal, with the opt-out line in place, and holds it as a Gmail draft for the rep.
Sales follow-up after a call
You paste two lines of call notes into the signal column. The workflow drafts the recap and follow-ups from those notes, and once the buyer replies, no further follow-up goes out.
Welcome email that names the account
A new signup lands in the sheet with their use case. Each welcome email refers to that use case, and the gate blocks any draft missing the unsubscribe footer.
Nurture email after a download
Someone downloads a guide. The workflow writes each nurture email around the guide's topic, under the 180-word limit, with one ask per email.
Best for
Teams with good data and no time to write
You know why you're writing to each contact, and nobody has time to write fifty emails a week by hand.
Reps who want a first draft, not a robot
Every email still passes through a person for the first weeks, so the rep keeps control of what goes out under their name.
Ops people who already run n8n
The build is about twenty nodes and three pasted scripts. Anyone who has connected Gmail and Google Sheets in n8n can follow the guide.
The drafting prompt
Paste this into the AI step. Fill the square brackets once, and switch each curly-brace field to its n8n expression, such as {{ $json.first_name }}.
The gate code
Paste this into an n8n Code node after the AI step, set to run once for all items, and edit the four settings at the top. Each item comes out with a pass flag and its reasons, plus the body to send and its next send date.
The stop-check code
Paste this into a Code node before each follow-up, set to run once for each item. Give it the thread's messages and the inbox's recent bounce notices, and it returns stop and the reason.
The review-check code
Paste this into a Code node for rows whose status is drafted. It returns sent, the send date and the next send date counted from that day.
Related on the Exchange
These pages cover the pieces this workflow builds on:
- The AI-Powered BDR Engine workflow sources and checks the list, then pushes a written sequence into Instantly.ai.
- The Reddit brand monitoring workflow posts AI-written replies without a review step, the opposite choice to the approval step here.
- The cold-email skill writes and tests cold copy in Claude before you load it into a workflow.
- The AI workflow automation tools guide compares n8n with the other builders that can run this workflow.