🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Gmail + Google Sheets: follow ups that stop on reply

Lisa Granqvist Partner Workflow Automation Expert

You meant to follow up. Then the week got busy, the spreadsheet got messy, and a “quick nudge” turned into a lost deal.

Gmail follow ups hit sales reps first, honestly, but agency owners and marketing teams running outbound feel the same grind. You want consistent touches without sounding robotic, and you definitely don’t want to keep pinging someone who already replied.

This n8n workflow runs reply-aware follow-up sequences from Google Sheets through Gmail, pauses on weekends, and stops the moment a thread gets a real response. You’ll see what it fixes, how it works, and what you need to launch it.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: Gmail + Google Sheets: follow ups that stop on reply

The Challenge: Follow-ups that either get forgotten or get awkward

Manual follow-up sounds simple until you do it at scale. You send the first email, add a note in a sheet, set a reminder, and then life happens. Some leads reply and you miss it for a day. Others don’t reply and quietly slip off your radar. And the worst version is when someone replies… and your “Just checking in” follow-up still fires anyway because your tracker didn’t know the thread changed.

It adds up fast. Here’s where it breaks down in real teams.

  • You spend about 5–10 minutes per lead just updating status fields, dates, and “next follow-up” notes.
  • Replies get buried inside Gmail threads, so you keep chasing people who already answered.
  • Sequences drift because each rep “does it their own way,” which means your messaging and timing aren’t consistent.
  • Weekend sends happen by accident, and Monday starts with apologizing for bad timing.

The Fix: A reply-aware Gmail sequence driven by Google Sheets

This workflow turns a simple Google Sheet into a follow-up engine that behaves like a thoughtful human. You keep a list of recipients (plus optional fields like name and company) in Sheets. n8n reads that list on a schedule, selects the right email template for each lead based on where they are in the sequence, and sends the message through Gmail. After that, it does the part people usually mess up: it checks the Gmail thread that belongs to that campaign and decides if another follow-up is needed. If there’s a reply, it stops. If it’s not time yet, it waits. If it’s due and still quiet, it sends the next step.

The workflow starts on an hourly schedule, but only runs on weekdays. It pulls recipients from Google Sheets, looks up any prior tagged threads in Gmail, then uses that thread status to decide “send now,” “wait,” or “do nothing.”

What Changes: Before vs. After

Real-World Impact

Say you’re running a 3-email sequence (day 0, day 3, day 7) to 40 leads per week. Manually, you might spend about 5 minutes per lead across the week checking threads, updating your sheet, and sending the next message, which is roughly 3 hours of pure admin. With this workflow, you spend about 20 minutes setting up the sheet and templates, then maybe 5 minutes a day reviewing replies. The follow-ups keep going in the background, and they stop the moment a lead answers.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets to store recipients and fields.
  • Gmail to send and detect replies in threads.
  • Google account access (connect via n8n credentials setup)

Skill level: Intermediate. You’ll connect Google credentials, edit a few template fields, and confirm the sheet columns match what the workflow expects.

Need help implementing this? Talk to an automation expert (free 15-minute consultation).

The Workflow Flow

Hourly weekday trigger. n8n checks every hour, then applies a weekday gate so the automation doesn’t run on weekends.

Recipient + sequence lookup. It loads your recipient list from Google Sheets and reads your “email sequence map” (the timing and templates for day 0, day 3, day 7, and so on).

Thread awareness and due-date logic. For each recipient, the workflow searches Gmail for prior campaign threads, loads thread details, and evaluates whether anyone replied. If no reply exists, it checks if the next follow-up is due yet.

Send, then record. When it’s time, it builds an HTML email with your placeholders (name, company, etc.), sends through Gmail, and records the contact action back into Google Sheets so future runs know what happened.

You can easily modify the email sequence timing to match your sales cycle based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Schedule Trigger

Set the workflow to run on a weekday schedule and allow manual execution via subflow for testing.

  1. Open Hourly Schedule Trigger and set Interval to hours with triggerAtMinute set to 12.
  2. In Weekday Gate, confirm the condition uses {{$now.isWeekend()}} and the operator is set to false to block weekends.
  3. Keep Subflow Trigger Start connected to Select Message Template for manual subflow runs.

Step 2: Connect Google Sheets

Configure the spreadsheet source for recipients and the update step for first contact logging.

  1. Open Fetch Recipient Sheet and set Document ID to {{$('Configuration Values').item.json.sheet_url}} and Sheet Name to the same value.
  2. Credential Required: Connect your googleSheetsOAuth2Api credentials in Fetch Recipient Sheet.
  3. Open Record First Contact and confirm Operation is update with Row Number set to {{$('Unemailed Check').item.json.row_number}} and first_emailed set to {{$now.format('yyyy-MM-dd')}}.
  4. Credential Required: Connect your googleSheetsOAuth2Api credentials in Record First Contact.

⚠️ Common Pitfall: The Google Sheet must include a row_number column and all placeholder columns referenced in templates (e.g., name, company), or Bundle Placeholder Data will throw an error.

Step 3: Set Up Campaign Configuration and Templates

Define campaign settings and message sequences that drive all downstream processing.

  1. In Configuration Values, set sheet_url to your spreadsheet URL, subject to My amazing campaign (or your subject), sender_name to Automation Sender, email_column_name to email, and mail_id to a unique campaign ID like [YOUR_ID].
  2. In Email Sequence Map, review the JSON and keep the jsonOutput block containing the emails array with each message and send_on_day.
  3. Note that Email Sequence Map outputs to both Retrieve Prior Threads and Fetch Recipient Sheet in parallel.
  4. If you want a manual template preview, enable Select Message Template (currently disabled) and confirm message_template uses {{$('Email Sequence Map').first().json.emails[0].message}}.

Step 4: Configure Thread Retrieval and Follow-up Logic

Set up the Gmail search, thread decoding, and follow-up timing checks for replies and ongoing sequences.

  1. Open Retrieve Prior Threads and keep the search filter =subject:{{ $json.subject }} after:{{ $now.minus({'days': $json.emails.last().send_on_day+1}).toSQL().substr(0, 10) }} with Resource set to thread.
  2. Credential Required: Connect your gmailOAuth2 credentials in Retrieve Prior Threads and Load Thread Details.
  3. Ensure Load Thread Details has Operation set to get and Thread ID to {{$json.id}}.
  4. Keep Decode Thread Content and Evaluate Thread Status as-is; they parse HTML, compute next_message_due, and detect previous campaign emails.
  5. In Follow-up Due Check, keep the boolean condition {{$json.next_message_due}} set to true for follow-up eligibility.

⚠️ Common Pitfall: If past emails were not sent through this workflow, Evaluate Thread Status may mark the thread as invalid and stop follow-ups.

Step 5: Set Up Placeholder Processing and HTML Assembly

Prepare template data, inject placeholders, and build the final HTML message content.

  1. In Assemble First Email, confirm to_email uses {{$('Fetch Recipient Sheet').item.json[$('Configuration Values').item.json.email_column_name]}} and message_template uses {{$('Email Sequence Map').first().json.emails[0].message}}.
  2. In Bundle Placeholder Data, keep the code that validates sheet columns and builds item.json.placeholders.
  3. In Populate Template Fields, keep the JavaScript placeholder replacement logic to generate item.json.message.
  4. In Build HTML Message, set message to =<span data-cam='{{ $json.mail_id }}' data-seq='{{ $json.mail_seq }}' data-ph='{{ JSON.stringify($json.placeholders) }}'></span>{{ $json.message }}.

Step 6: Configure Reply Handling, Sub-Workflows, and Email Sending

Route the workflow between reply and fresh email paths, and ensure sub-workflows are linked for data enrichment or logging.

  1. In Assemble Reply Data, verify reply_message_id uses {{$json.messages.last().id}} and message_template uses {{$('Email Sequence Map').first().json.emails[$json.next_sequence_number].message}}.
  2. Keep Extract Placeholder Data connected to Run Sub-Workflow (Configure Required) for additional processing of reply placeholders.
  3. Open Run Sub-Workflow (Configure Required) and set Workflow ID to the child workflow you want to execute.
  4. Open Run Sub-Workflow (Configure Required) 2, set Mode to each, and set Workflow ID to the child workflow that prepares logging data.
  5. Reply Required? routes to Send Reply Email if {{$json.reply_message_id}} exists; otherwise it sends a new email via Send Fresh Email.
  6. Credential Required: Connect your gmailOAuth2 credentials in Send Fresh Email and Send Reply Email.

⚠️ Common Pitfall: Both Run Sub-Workflow (Configure Required) nodes have empty Workflow ID values; the workflow will fail unless you set these.

Step 7: Test and Activate Your Workflow

Verify that emails generate correctly, logging works, and scheduling runs as expected.

  1. Use Subflow Trigger Start to execute a test run and follow the data into Populate Template Fields and Build HTML Message.
  2. Confirm Send Fresh Email or Send Reply Email receives a populated message and correct subject.
  3. Verify Record First Contact updates first_emailed with today’s date in your Google Sheet.
  4. Once tests succeed, activate the workflow and let Hourly Schedule Trigger run it automatically on weekdays.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • Google (Gmail/Sheets) credentials can expire or need specific permissions. If things break, check the n8n Credentials screen and re-auth the Google connection first.
  • If you’re using Wait logic or relying on scheduled runs, processing times vary. If downstream Gmail nodes fail because a thread wasn’t found yet, increase the delay or tighten the thread search query.
  • Default templates are usually too generic. Add your brand voice and your real “why you’re emailing” early, or you will keep rewriting messages every time you review sent emails.

Common Questions

How quickly can I implement this Gmail follow ups automation?

About an hour if your Google accounts are ready.

Can non-technical teams implement this follow up process?

Yes, but you’ll want one person to own setup. Most of the work is connecting Google credentials and matching your sheet columns to the workflow fields.

Is n8n free to use for this Gmail follow ups workflow?

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 Google Workspace costs if you’re using a paid Gmail/Google account.

Where can I host n8n to run this automation?

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.

How do I adapt this Gmail follow ups solution to my specific challenges?

You can change the sequence timing and messages in the “Email Sequence Map” and “Select Message Template” parts of the workflow. If you want different personalization fields, update the Google Sheet columns and adjust the placeholder extraction so {name} or {company} matches your data. Many teams also customize the weekday rules (for example, block holidays) and tweak the “Retrieve Prior Threads” logic so tags and searches match their Gmail labels.

Why is my Gmail connection failing in this workflow?

Usually it’s an expired Google auth session, so reconnect Gmail in n8n and try again.

What’s the capacity of this Gmail follow ups solution?

On n8n Cloud, capacity depends on your plan’s monthly executions, and this workflow can use several executions per run because it checks threads and recipients on a schedule. If you self-host, there’s no platform execution cap, but Gmail will still enforce API and sending limits on your account. Practically, it’s great for small teams running dozens to a few hundred leads at a time, and you can scale further by segmenting campaigns into separate sheets and workflow copies. If you push huge batches, add pacing and tighter Gmail searches to avoid rate-limit errors.

Is this Gmail follow ups automation better than using Zapier or Make?

Often, yes, because reply-aware follow-ups require more logic than a simple trigger-and-send. n8n handles branching, filters, and thread checks without you stitching together a bunch of separate Zaps or scenarios. It also gives you a self-host option, which matters when you run frequent schedule checks. Zapier or Make can still be fine for very small sequences, but they get clunky once you need “stop on reply” behavior and campaign tagging. Talk to an automation expert if you want a quick recommendation for your exact setup.

Once this is running, follow-ups happen the way you always intended: on time, on weekdays, and only until someone replies. Set it up once, then focus on the conversations that actually matter.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal