🔓 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

Google Sheets to Outlook, follow up leads once

Lisa Granqvist Partner Workflow Automation Expert

Leads land in a Google Sheet… and then they just sit there. Or worse, someone follows up twice because nobody knows what was already sent.

This Sheets Outlook follow-up automation hits marketing ops and sales teams first, but solo consultants and small agencies feel it too. You get consistent outreach, and every lead gets emailed once. Not zero times. Not three.

Below you’ll see exactly how the workflow runs in n8n, what it automates, and the real-world results you can expect when follow-ups stop relying on memory.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets to Outlook, follow up leads once

The Problem: Lead follow-ups slip, or get duplicated

Google Sheets is where leads go to “wait until later.” Someone exports a list, someone else sends a few emails, and then the tab becomes a guessing game: did we contact this person, or did we just mean to? It’s not only the time. It’s the mental load of re-checking rows, scanning notes, and trying to remember what happened last week. One missed follow-up costs you a conversation. One duplicate follow-up can cost you trust, especially if you’re doing outbound in a tight niche.

None of this feels catastrophic in the moment. Then it repeats daily, and it gets expensive.

  • Checking the sheet, filtering “new,” and copying emails into Outlook eats about 20 minutes a day.
  • People forget to mark rows as contacted, so the same lead gets hit again later.
  • When two teammates share the list, you end up with overlap and awkward double sends.
  • Follow-up quality drops because you spend your energy on admin, not writing a better message.

The Solution: Daily Google Sheets → Outlook outreach with dedupe

This n8n workflow sends a templated outreach email to new leads from a Google Sheet on a daily schedule, then marks each lead as contacted so they won’t be emailed twice. It starts at a set time (for example, 9:00 AM), pulls rows from your leads sheet, and keeps only the ones where the Contacted field is empty. For every remaining row, it sends a Microsoft Outlook email using the address in the Email column. After sending, the workflow writes back to the sheet (or a second “CRM-lite” sheet) and sets Contacted = Yes, matching on Email. That one write-back is what makes the system reliable.

The workflow begins with a daily schedule, then reads your Google Sheet. It filters out anyone already contacted, sends the Outlook message, and updates the row so tomorrow’s run skips them automatically.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you add 15 new leads to a sheet each week. Manually, you’ll usually spend about 3 minutes per lead to filter the list, copy the email, paste a template into Outlook, send it, then return to the sheet to mark “Contacted.” That’s roughly 45 minutes a week, and it’s easy to miss a row. With this workflow, you add the lead to Sheets (maybe 1 minute), and the next scheduled run sends the email and updates Contacted = Yes automatically. The work becomes a quick review, not a repetitive task.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for your lead list and status field.
  • Microsoft Outlook (Graph) to send the outreach email.
  • OAuth credentials (create in n8n for Sheets and Outlook)

Skill level: Beginner. You’ll connect accounts, pick the right sheet/tab, and edit a basic email template.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A daily schedule kicks it off. You choose the time (like 09:00), and n8n runs the workflow automatically. No one has to remember to “do follow-ups.”

Your Google Sheet is treated like a queue. The workflow pulls rows from your leads tab and looks for a simple condition: the Contacted cell is empty, which means it’s fair game.

Outlook sends the message to each lead. The “To” field is mapped from the sheet’s Email column, and you can personalize the subject or body with other columns (FirstName, Company, Source). Keep it simple at first, honestly.

The sheet gets updated so it won’t re-send. After each send, the workflow writes back Contacted = Yes (matching on Email), which becomes your dedupe lock for the next run.

You can easily modify the schedule time to match your send window 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 automatically each day using the schedule trigger.

  1. Add the Scheduled Automation Trigger node as your trigger.
  2. Set the schedule rule to run at Trigger At Hour 9 in the rule.interval configuration.
  3. Confirm the trigger connects to Retrieve Sheet Rows as the next node.

Step 2: Connect Google Sheets

Pull lead data from Google Sheets and prepare the sheet connection for status updates.

  1. Open Retrieve Sheet Rows and select the spreadsheet Document ID [YOUR_ID] and Sheet Sheet1 (value gid=0).
  2. Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve Sheet Rows.
  3. Open Update Lead Status and select the spreadsheet Document ID [YOUR_ID] and Sheet leads (value gid=0).
  4. Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Lead Status.

If your sheet names differ, update the sheetName values to match your exact tabs before testing.

Step 3: Set Up Lead Filtering Logic

Filter out leads who have already been contacted so outreach only targets new contacts.

  1. Open Filter Uncontacted Leads and keep the condition where leftValue is ={{ $json.Contacted }}.
  2. Ensure the operator is set to empty to pass only leads with no contact status.
  3. Confirm the flow connects from Retrieve Sheet Rows to Filter Uncontacted Leads.

⚠️ Common Pitfall: If your sheet uses a different column name (e.g., “Contacted?”), update the filter expression to match the exact field name.

Step 4: Configure Output Actions (Parallel)

Send outreach emails and update lead status in parallel for each uncontacted lead.

  1. In Dispatch Outlook Email, set To Recipients to ={{ $json.Email }}.
  2. Set Subject to Build AI Agents & Automations with n8n and Body Content to the provided email template.
  3. Credential Required: Connect your microsoftOutlookOAuth2Api credentials in Dispatch Outlook Email.
  4. In Update Lead Status, set Operation to appendOrUpdate.
  5. Map Email to ={{ $json.Email }} and set Contacted to Yes.
  6. Confirm that Filter Uncontacted Leads outputs to both Update Lead Status and Dispatch Outlook Email in parallel.

Step 5: Test and Activate Your Workflow

Validate the workflow with a manual test, then turn it on for scheduled outreach.

  1. Click Execute Workflow to run a manual test from Scheduled Automation Trigger.
  2. Verify that Retrieve Sheet Rows returns lead data and Filter Uncontacted Leads passes only rows with an empty Contacted field.
  3. Confirm Dispatch Outlook Email sends emails and Update Lead Status updates the Contacted column to Yes.
  4. Turn on the workflow using the Active toggle to enable the daily scheduled run.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets credentials can expire or lose access if the spreadsheet owner changes permissions. If things break, check n8n’s Credentials and the sheet’s sharing settings first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Microsoft Outlook (Graph) sending can fail because of missing scopes like Mail.Send or tenant admin consent. Reconnect the Outlook credential and confirm the permission grant in Azure if you’re self-hosting.

Frequently Asked Questions

How long does it take to set up this Sheets Outlook follow-up automation?

About 30 minutes if your Google and Microsoft accounts are ready.

Do I need coding skills to automate Sheets Outlook follow-up?

No. You’ll mostly connect credentials and map a few fields like Email and Contacted.

Is n8n free to use for this Sheets Outlook follow-up 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 Microsoft 365 access (Outlook/Graph) if your account isn’t already licensed.

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.

Can I customize this Sheets Outlook follow-up workflow for multiple email templates?

Yes, but keep it organized. Most people add a “Template” or “LeadType” column in Google Sheets, then use a Switch/If in n8n to choose a different subject/body before the Outlook send. You can also merge in fields like FirstName and Company so it reads like a real email. If you want to get fancy, that’s where an AI step (like an OpenAI Chat Model node) can draft variations, but it’s optional.

Why is my Microsoft Outlook connection failing in this workflow?

Usually it’s expired OAuth or missing Microsoft Graph permissions like Mail.Send. Reconnect the Outlook credential in n8n, then confirm your Azure app (if you self-host) has the right scopes and that admin consent was granted when required. Also check that the sending mailbox is allowed to send mail and isn’t being blocked by org policies. If you’re sending a lot at once, rate limiting can show up as intermittent failures.

How many leads can this Sheets Outlook follow-up automation handle?

On n8n Cloud, it depends on your plan’s monthly executions; self-hosting has no hard execution cap, but your server and email provider limits still apply. In practice, this workflow handles a typical small-business sheet comfortably, and most teams run it daily without issues.

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

Often, yes. n8n makes the “send, then update the row” logic easy to audit and extend, and self-hosting is a big deal if you don’t want per-task pricing. Zapier or Make can be quicker for a tiny two-step setup, but dedupe and branching can get messy as soon as you add rules. Try the workflow as-is, then decide. Talk to an automation expert if you want a recommendation for your exact volume and stack.

Once this is running, follow-ups stop being a daily chore and start being a default behavior in your funnel. Set it up once, and let the sheet stay clean.

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