Google Sheets + Gmail, leads get follow ups sent
New leads hit your Google Sheet, and then… nothing. Or worse, a “I’ll reply later” note that turns into a cold lead by tomorrow.
This Sheets Gmail followups automation hits coaches hardest because speed matters, but consultants and small agency owners feel it too. You get timely, personalized follow-ups without living in your inbox.
Below you’ll see how the workflow decides who’s warm vs. cold, writes the right email with AI, sends it via Gmail, and logs everything back into a Contacts sheet for clean tracking.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Sheets + Gmail, leads get follow ups sent
flowchart LR
subgraph sg0["Google Sheets Flow"]
direction LR
n0@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Commitment ≥ 8?", pos: "b", h: 48 }
n1@{ icon: "mdi:play-circle", form: "rounded", label: "Google Sheets Trigger", pos: "b", h: 48 }
n2@{ icon: "mdi:message-outline", form: "rounded", label: "Send colder email", pos: "b", h: 48 }
n3@{ icon: "mdi:message-outline", form: "rounded", label: "Send warmer email", pos: "b", h: 48 }
n4@{ icon: "mdi:robot", form: "rounded", label: "crafting warmer email", pos: "b", h: 48 }
n5@{ icon: "mdi:database", form: "rounded", label: "Append row in sheet", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "crafting colder email", pos: "b", h: 48 }
n0 --> n4
n0 --> n6
n2 --> n5
n3 --> n5
n1 --> n0
n6 --> n2
n4 --> n3
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n1 trigger
class n4,n6 ai
class n0 decision
class n5 database
The Problem: Leads Go Cold While You “Catch Up”
Following up sounds simple until it’s your fifth lead of the day and you’re still rewriting the same email from scratch. You try to personalize it, but you are rushing, so the message ends up vague. Or you overthink it, which means the reply goes out hours later (sometimes the next day). Meanwhile, your lead is still motivated right after they submit their info. That window is when people book calls. Miss it, and you’re basically doing lead nurturing on hard mode.
The friction compounds. Here’s where it breaks down in real life:
- You respond late because your inbox is full and drafting takes too long.
- The “personalized” email still looks templated, so warm leads don’t feel understood.
- Cold or uncertain leads get the wrong tone, and the message feels pushy.
- Tracking is scattered, so you can’t tell who was contacted or what was sent.
The Solution: AI-Written Follow-Ups Sent Automatically from Sheets
This workflow starts the moment a new lead is added to your Google Sheet. It reads the lead details (name, industry, title, goals, and a 1–10 commitment score), then makes a simple decision: is this person “warm” or still unsure? If they’re warm (commitment score 8 or higher), the workflow asks OpenAI to write an aspirational, confident onboarding email that invites a 30-minute discovery call. If the score is lower, it generates a gentler follow-up that reinforces the value, asks a reflective question, and offers a no-pressure Q&A session. Then Gmail sends the email automatically, and n8n appends the interaction to a separate Contacts sheet so you always have a record.
The workflow begins with a Google Sheets row listener. Next, an “if commitment ≥ 8” check routes the lead to the right OpenAI prompt and the matching Gmail send action. Finally, everything gets logged to your Contacts sheet, which keeps follow-up history out of your head and in a system.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you get 8 new leads a week from a spreadsheet-based intake process. Manually, you might spend about 10 minutes per lead reading their goals, drafting a decent email, and logging what you sent, which is roughly 80 minutes weekly. With this workflow, the “work” is adding the row (or letting your form tool add it) and skimming the sent email in Gmail, maybe 1 minute per lead. That’s about an hour back each week, plus faster follow-ups that land while motivation is still high.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for the lead intake spreadsheet.
- Gmail to send the personalized follow-up emails.
- OpenAI API key (get it from the OpenAI dashboard under API keys).
Skill level: Beginner. You’ll connect accounts, confirm column names, and paste your brand details into the AI prompts.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A new lead row is added in Google Sheets. The workflow listens to your chosen spreadsheet and sheet name, then pulls the row values immediately.
The commitment score is validated and categorized. n8n checks the “1-10 how commited are you to your goals” field and routes the lead based on whether it’s 8 or higher.
OpenAI writes the right email. Warm leads get a confident onboarding-style message that ties back to their goals and points to a discovery call. Lower-commitment leads get a supportive nudge with a question and a softer invitation.
Gmail sends, then Sheets logs. The email is sent from your Gmail account, and the workflow appends a clean record (name, email, phone, industry, title, goals, commitment) to a separate Contacts sheet for tracking.
You can easily modify the commitment threshold to change who counts as warm based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Google Sheets Trigger
This workflow starts when a new row is added to your intake sheet, so set up the listener first.
- Add or open Sheets Row Listener and set Event to
rowAdded. - Set Document to
[YOUR_ID]and Sheet toSheet1(gid0). - Keep the polling schedule at Every Minute to match
everyMinute. - Credential Required: Connect your
googleSheetsTriggerOAuth2Apicredentials in Sheets Row Listener.
[YOUR_ID] with your actual Google Sheet ID, or the trigger will never fire.Step 2: Connect Google Sheets for CRM Logging
The CRM append step stores captured leads after the email is sent.
- Open Append CRM Record and set Operation to
append. - Set Document to
[YOUR_ID]and Sheet toSheet1(gid0). - Confirm the column mappings use the existing expressions, such as
={{ $('Validate Commitment Score').item.json['First name '] }} {{ $('Validate Commitment Score').item.json['Last name '] }}for name and={{ $('Validate Commitment Score').item.json['1-10 how commited are you to your goals'] }}/10for commitment. - Credential Required: Connect your
googleSheetsOAuth2Apicredentials in Append CRM Record.
Step 3: Set Up the Conditional Routing and AI Email Generation
This step routes high-commitment leads to a warm outreach message and lower scores to a gentle follow-up, then generates AI copy accordingly.
- Configure Validate Commitment Score to check whether 1-10 how commited are you to your goals is greater than or equal to
8using={{ $json['1-10 how commited are you to your goals'] }}. - Open Compose Warm Outreach and confirm Model is
gpt-4.1, Temperature is0.7, and JSON Output is enabled. - Open Compose Gentle Follow-Up and confirm the same Model, Temperature, and JSON Output settings.
- Credential Required: Connect your
openAiApicredentials in both Compose Warm Outreach and Compose Gentle Follow-Up.
{{ $json['First name '] }} and {{ $json.Industry }}; keep these intact to personalize the emails.Step 4: Configure Gmail Outputs and CRM Logging
Each AI output sends an email and then logs the lead to your CRM sheet.
- In Dispatch Warm Email, set To to
={{ $('Validate Commitment Score').item.json.Email }}, Subject to={{ $json.message.content.subject }}, and Message to={{ $json.message.content.message }}. - In Dispatch Cool Email, set To to
={{ $('Sheets Row Listener').item.json.Email }}, Subject to={{ $json.message.content.subject }}, and Message to={{ $json.message.content.message }}. - Ensure Append Attribution is disabled in both Gmail nodes to match
false. - Credential Required: Connect your
gmailOAuth2credentials in both Dispatch Warm Email and Dispatch Cool Email. - Verify that both Gmail nodes feed into Append CRM Record so every sent email is logged.
Step 5: Test and Activate Your Workflow
Run a manual test to validate both email branches and confirm CRM logging.
- In your source Google Sheet, add two test rows: one with a commitment score of
8or higher and one below8. - Click Execute Workflow and confirm Dispatch Warm Email runs for the high score while Dispatch Cool Email runs for the low score.
- Verify a new row appears in the CRM sheet from Append CRM Record with correctly mapped columns.
- When successful, toggle the workflow to Active so Sheets Row Listener monitors new form submissions automatically.
$json.message.content.subject and $json.message.content.message exist in the output.Common Gotchas
- Google Sheets column headers must match exactly, especially “1-10 how commited are you to your goals”. If the route logic misfires, check the trigger sheet’s header row first.
- Gmail sending can fail if your Google credential loses permission or you switch the “from” identity. Reconnect the Google account in n8n Credentials and re-select it inside both Gmail nodes.
- OpenAI outputs can feel generic if you don’t update the prompt with your company name, founder name, offers, and booking link. Honestly, this is the difference between “nice automation” and emails you’d actually send.
Frequently Asked Questions
About 30 minutes if your Sheets and Gmail credentials are ready.
No. You’ll connect accounts and edit a few fields and prompts. The logic is already built.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs (usually a few cents per lead, depending on prompt length).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and it’s a quick change. Update the condition in the “Validate Commitment Score” If node from “commitment ≥ 8” to whatever fits your business (7 is common). You can also tweak the two OpenAI prompt nodes (“Compose Warm Outreach” and “Compose Gentle Follow-Up”) so each path matches your brand voice, offer, and booking link.
Usually it’s an expired Google credential or the workflow is pointing at the wrong spreadsheet or sheet tab. Reconnect Google in n8n Credentials, then re-select that credential inside the Google Sheets Trigger and the “Append CRM Record” node. Also confirm your column headers match exactly, because a renamed header can look like “missing data” and break the routing.
Plenty for most small teams. On n8n Cloud, your limit is based on executions per month (Starter is often enough for a few hundred leads). If you self-host, there’s no built-in execution cap, so volume mostly depends on your server and email sending limits in Gmail.
Sometimes. If you want branching logic (warm vs. cold), AI prompt control, and the option to self-host, n8n tends to be a better fit and doesn’t punish you for complexity. Zapier or Make can still work, but you may hit paywalls once you add multi-step paths and logging. Another difference is debugging: n8n makes it easy to replay runs and see the exact input/output at each point. If you’re unsure, Talk to an automation expert and we’ll help you pick the simplest setup that won’t paint you into a corner.
Fast, personal follow-up is one of those unsexy advantages that quietly wins deals. Set this up once, and your leads stop waiting on your schedule.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.