🔓 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 sent and logged

Lisa Granqvist Partner Workflow Automation Expert

Following up sounds simple until you’re staring at a messy Google Sheet, yesterday’s sent emails, and that nagging feeling you forgot someone important.

This Gmail follow-up automation hits sales reps and marketing managers hardest. But founders running their own outreach and agency teams managing multiple campaigns feel the same drag. You’ll send staged follow-ups automatically and keep your tracker updated without babysitting it.

This workflow pulls contacts from Google Sheets, sends the right email at the right stage in Gmail, then watches for replies and logs them back to the sheet. You’ll see where time disappears, what the automation changes, and what you need to run it.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: Gmail + Google Sheets: follow-ups sent and logged

The Challenge: Follow-ups fall through the cracks

Most outreach trackers start out “organized” and turn into a junk drawer. Someone updates the stage but forgets the last_email_date. Another person sends a follow-up from their inbox, but the sheet still says “Pending.” Then replies land in Gmail and never make it back to the tracker, so you keep nudging people who already answered (which feels… not great). The worst part is the mental overhead. You spend more energy remembering what to do than doing the work that actually moves deals.

It adds up fast. Here’s where it breaks down in day-to-day outreach.

  • You waste about 10 minutes per contact just checking history, choosing the right template, and updating the sheet after sending.
  • Follow-up stages drift because everyone interprets “Follow-Up 1” differently, which means inconsistent messaging and timing.
  • Replies stay trapped in inbox threads, so reporting turns into guesswork and “I think they responded?” conversations.
  • Manual sending makes it hard to scale past a small list without mistakes, duplicated messages, or missed days.

The Fix: A staged follow-up engine powered by Sheets

This workflow turns Google Sheets into your lightweight outreach system and Gmail into the delivery engine. Every morning (set to 9 AM by default), n8n reads your “EmailCampaign” sheet, grabs each contact, and checks their current stage and status. Based on that, it sends the right message through Gmail (initial or follow-up) and immediately updates the sheet so the tracker reflects what actually happened. Separately, it monitors your inbox for replies using IMAP, then writes the response back into the sheet and updates the status to “Replied.” No more hunting through threads. No more “did we send the second follow-up?” debates.

The workflow starts on a schedule, then loops through contacts in batches so it can handle a list without choking. After it routes each person to the correct follow-up level, Gmail sends the email and Google Sheets is updated right away. Finally, reply detection keeps the tracker honest, even when you’re busy doing other work.

What Changes: Before vs. After

Real-World Impact

Say you have 40 contacts in your Google Sheet and you send staged outreach that includes an initial email plus one follow-up. Manually, you’ll spend maybe 10 minutes per contact to check history, send, and log status, which is about 6 hours across a week. With this workflow, you spend about 15 minutes updating the sheet and sanity-checking templates, then the scheduled run does the sending and logging automatically. Replies also get captured without extra work, so your tracker stays accurate while you move on.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for your contact list and tracking.
  • Gmail to send follow-ups and read replies.
  • Gmail OAuth2 + Google Sheets credentials (create in Google Cloud, then connect in n8n).

Skill level: Beginner. You’ll mostly connect accounts, map a few fields, and edit message text for each follow-up stage.

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

The Workflow Flow

A daily schedule kicks things off. The workflow starts at 9 AM by default using a Schedule Trigger, so outreach runs even if you forget.

Google Sheets provides the “source of truth.” n8n reads the EmailCampaign sheet (name, email, stage, last_email_date, status, response) and pulls the records into a loop.

Logic decides who gets what. An If check and a routing step (by follow-up level) pick the correct Gmail message for that contact, using the stage you set in the sheet.

Emails go out, and the sheet updates immediately. After sending, the workflow writes back the new status and last email date. In a separate path, an IMAP email trigger scans for replies and logs the response text to the same row.

You can easily modify the follow-up stages to match your campaign, or change the schedule to run hourly during a launch. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Schedule Trigger

Set the daily trigger that kicks off the outreach cycle.

  1. Add and open Daily Schedule Start.
  2. Set the schedule Rule to use cronExpression (configure the desired daily time in the UI).
  3. Connect Daily Schedule Start to Retrieve Contact Records to begin the workflow.

Step 2: Connect Google Sheets

Pull contacts and update follow-up status in your spreadsheet.

  1. Open Retrieve Contact Records and select your Document and Sheet (e.g., Sheet3 in PageRankChecker). Credential Required: Connect your googleApi credentials.
  2. Open Modify Sheet Follow-Up Status and confirm Operation is update with Authentication set to serviceAccount. Credential Required: Connect your googleApi credentials.
  3. Ensure the column mappings in Modify Sheet Follow-Up Status use these expressions: ={{ $('Route by Follow-Up Level').item.json.Reply }}, ={{ $('Route by Follow-Up Level').item.json['Follow-up'] + 1}}, ={{ $('Route by Follow-Up Level').item.json['User Name'] }}, ={{ $('Route by Follow-Up Level').item.json['Inquiry ID'] }}, ={{ $('Route by Follow-Up Level').item.json['User Email'] }}, ={{ new Date($now).toISOString().split('T')[0] }}, ={{ new Date(Date.now() + 3 * 24 * 60 * 60 * 1000).toISOString().split('T')[0] }}.
  4. Connect Modify Sheet Follow-Up Status back to Cycle Through Contacts to keep processing remaining records.

Step 3: Set Up Contact Batching and Follow-Up Logic

Batch contacts and route only those who have not replied.

  1. Open Cycle Through Contacts to control record batching (keep defaults unless you need a specific batch size).
  2. Configure Evaluate Follow-Up Status with condition: Left Value ={{ $json.Reply }} equals no.
  3. Set Evaluate Follow-Up Status to output data even when the condition fails (already configured), then connect it to Route by Follow-Up Level.
  4. In Route by Follow-Up Level, verify rules for Follow-up values: ={{ $json['Follow-up'] }} equals 6 and equals 7.

⚠️ Common Pitfall: If your sheet uses different column names (e.g., “Follow-up” or “Reply”), update the expressions in Evaluate Follow-Up Status and Route by Follow-Up Level to match exactly.

Step 4: Configure Follow-Up Email Dispatch

Send the appropriate follow-up email based on the contact’s follow-up level.

  1. Open Dispatch Follow-Up Email A and set Send To to ={{ $json['User Email'] }}, Subject to Testing-6, and Message to Testing-6. Credential Required: Connect your googleApi credentials.
  2. Open Dispatch Follow-Up Email B and set Send To to ={{ $json['User Email'] }}, Subject to Testing-7, and Message to Testing-7. Credential Required: Connect your googleApi credentials.
  3. Confirm Route by Follow-Up Level connects to both Dispatch Follow-Up Email A (Follow-up = 6) and Dispatch Follow-Up Email B (Follow-up = 7).
  4. Ensure both email nodes connect to Modify Sheet Follow-Up Status to record the new status.

Step 5: Process Reply Scanning and Sheet Updates

Scan for replies and update the spreadsheet to stop future follow-ups.

  1. Open Scan Email Replies and confirm Custom Email Config is ["UNSEEN", ["SUBJECT", "Testing"]]. Credential Required: Connect your imap credentials.
  2. Open Update Sheet with Reply and set Operation to update with Authentication set to serviceAccount. Credential Required: Connect your googleApi credentials.
  3. Verify column mappings in Update Sheet with Reply: reply to =yes and user email to ={{ $json.from }}, matching on user email.

Step 6: Review Utility Nodes for Optional Enhancements

These helper nodes are placeholders for additional message or HRMS updates.

  1. Open Utility: Followup Msg 6 and Utility: Followup Msg 7 if you want to add variables or template content.
  2. Review Utility: HRMS Inquiry Update for future data enrichment or external updates.

Step 7: Test and Activate Your Workflow

Run a controlled test to verify emails, routing, and sheet updates before going live.

  1. Click Execute Workflow to run a manual test with sample data from Retrieve Contact Records.
  2. Confirm a contact with Reply = no routes through Route by Follow-Up Level, triggers the correct email node, and updates Modify Sheet Follow-Up Status.
  3. Trigger Scan Email Replies manually and verify Update Sheet with Reply writes =yes to the reply column for the matching user email.
  4. Turn on the workflow using the Active toggle to enable daily scheduled runs.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • Gmail credentials can expire or need specific permissions. If things break, check the Gmail connection inside n8n’s Credentials screen first, then confirm IMAP is enabled in your Gmail settings.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Common Questions

How quickly can I implement this Gmail follow-up automation?

About an hour if your Google and Gmail accounts are ready.

Can non-technical teams implement this follow-up automation?

Yes. No coding is required, but you do need to be comfortable mapping sheet columns to email fields and testing with a small list first.

Is n8n free to use for this Gmail follow-up automation 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 usage limits (typically not an extra cost for small lists).

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-up automation solution to my specific challenges?

Start by changing the stage rules in the “Evaluate Follow-Up Status” and “Route by Follow-Up Level” logic so it matches your exact sequence (for example: Initial, Follow-Up 1, Follow-Up 2, Breakup). Then edit the message text in the Set nodes (the “Followup Msg” utilities) so the copy sounds like you. Common customizations include skipping weekends, stopping follow-ups when status is “Replied,” and adding a “Do Not Contact” value in the sheet that the workflow respects.

Why is my Gmail connection failing in this workflow?

Usually it’s expired OAuth access or IMAP being disabled in Gmail. Reconnect the Gmail credential in n8n, confirm IMAP is turned on, and double-check the Google account permissions you approved. If it fails only on larger runs, you may also be hitting rate limits, so slow the batch size and avoid blasting too many emails at once.

What’s the capacity of this Gmail follow-up automation solution?

If you self-host n8n, there’s no execution cap from n8n itself; it mainly depends on your server and Gmail sending limits.

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

Often, yes, because follow-up sequencing needs branching logic, looping through rows, and updating the tracker after each send, and n8n handles that without turning into a pile of separate Zaps or scenarios. It also gives you the self-hosting option, which is useful when you run outreach daily and don’t want to think about task limits. Zapier or Make can still be fine for very small, simple flows, like “new row equals send one email.” This one is closer to a mini system, not a single trigger-action pair. Talk to an automation expert if you want a quick recommendation for your exact volume and tools.

Once this is running, your follow-ups go out on time and your sheet stays truthful. Honestly, that’s the kind of “set it and forget it” win that makes outreach sustainable.

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