🔓 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 + SendGrid: leads tracked end to end

Lisa Granqvist Partner Workflow Automation Expert

Your lead list is never really “done.” You scrape a batch, paste it into a sheet, send a few emails, then lose track of who opened, who bounced, and who actually replied.

Sales managers feel it when follow-ups slip. A marketing ops person feels it when reporting turns into detective work. And if you run an agency, Sheets SendGrid leads automation is the difference between “we emailed them” and “we can prove what happened.”

This workflow ties the whole loop together: scrape Google Maps leads, store them in Google Sheets, send tracked outreach in SendGrid, then capture replies from Gmail and route them with AI. You’ll see how it works, what you need, and what results to expect.

How This Automation Works

Here’s the complete workflow you’ll be setting up:

n8n Workflow Template: Google Sheets + SendGrid: leads tracked end to end

Why This Matters: Lead tracking breaks after the send

Most cold outreach “systems” fall apart right after the email goes out. The sheet has a row that says “sent,” but nobody knows if it delivered, bounced, or got opened three times. Replies land in a shared inbox, then get forwarded to someone, then disappear into Slack with no link back to the lead record. A week later, you’re chasing follow-ups off memory and half-complete notes. Honestly, that’s not a process. It’s a scramble that gets worse as volume grows.

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

  • You send emails in batches, but delivery and bounce status never makes it back into Google Sheets.
  • Replies are handled manually, so “Interested” leads sit in an inbox until someone notices.
  • Follow-ups happen late (or not at all) because nobody wants to filter, sort, and check dates every day.
  • Your reporting ends up fuzzy, because opens/clicks live in SendGrid logs while lead data lives somewhere else.

What You’ll Build: A lead lifecycle loop from scrape to reply

This workflow runs your outreach like a connected system instead of six separate tasks. It starts with a simple form submission (keyword, location, lead limit) that triggers a Google Maps scrape through Apify. Each business gets cleaned up, checked for a website, and scanned for a public email address. Qualified leads are added into your Google Sheets CRM, which becomes the single source of truth for outreach. From there, the workflow pulls a rotating email template, personalizes it with lead data, embeds a unique tracking ID, and sends through SendGrid. As SendGrid events come in via webhooks (delivered, opened, clicked, bounced, unsubscribed), the workflow updates the exact lead row with prioritized status and timestamps. Finally, Gmail reply polling catches responses, avoids duplicates, uses OpenAI to classify intent, and routes “Interested” replies to your team while still updating Sheets.

The loop is simple to think about. New leads enter through Google Maps scraping, outreach goes out through SendGrid with tracking baked in, and every signal (events and replies) pushes cleanly back into your CRM so follow-ups happen on time.

What You’re Building

Expected Results

Say you scrape 50 local leads and run outreach twice a week. Manually, it’s easy to burn about 2 hours scraping/exporting, another hour cleaning websites/emails, and at least an hour over the week checking SendGrid stats, logging replies, and setting follow-ups. With this workflow, you submit the form in a minute, let scraping and extraction run in the background (often 20–40 minutes depending on sites), and you spend your time only on real responses. Most teams get about 3 hours back per campaign cycle, plus fewer “we forgot to follow up” moments.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for your CRM and templates.
  • SendGrid to send tracked outreach and receive webhook events.
  • Apify API key (get it from your Apify account settings).
  • Gmail API credentials (create in Google Cloud Console for reply polling).
  • OpenAI API key (get it from the OpenAI dashboard) for reply classification.

Skill level: Intermediate. You won’t code from scratch, but you should be comfortable connecting accounts, mapping fields, and testing webhooks.

Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).

Step by Step

A form submission kicks things off. You enter a business keyword, a location, and how many leads you want. That one input triggers the Apify Google Maps scrape.

Lead data gets cleaned, filtered, and enriched. The workflow removes entries without websites, normalizes URLs, rotates user agents, and fetches each site’s HTML to look for public email addresses. It also uses delays between requests to avoid triggering blocks.

Outreach sends with tracking built in. n8n pulls your template library from Google Sheets, picks a random option, injects lead variables, and sends through SendGrid with a unique embedded ID so future events and replies match the right record.

Status, engagement, and replies flow back to your CRM. SendGrid webhooks update “delivered/opened/clicked/bounced/unsubscribed” fields with priority logic, while Gmail polling captures replies, avoids duplicates, and uses OpenAI to label intent and forward the important ones to your team (Slack/Telegram routing is supported in the workflow).

You can easily modify follow-up timing and routing destinations based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Form Submission Trigger

This workflow starts when a form is submitted and also includes scheduled and webhook-based triggers for ongoing email processing.

  1. Add and open Form Submission Trigger to capture inbound leads from your form.
  2. Optionally enable Manual Execution Start for ad-hoc runs of the lead list intake.
  3. Set up Scheduled Trigger A and Scheduled Trigger B to poll Gmail replies on a schedule, and Scheduled Trigger C to check delivery/no-reply follow-ups.
  4. Enable Incoming Webhook if you plan to push engagement events into this workflow.

Scheduled Trigger A outputs to both Fetch Recent Gmail and Get Reply Message ID in parallel. Scheduled Trigger B outputs to both Fetch Recent Gmail B and Get Route Message ID in parallel.

Step 2: Connect Google Sheets

Multiple Google Sheets nodes store lead lists, templates, and status updates. Connect credentials once and apply to all Sheets nodes.

  1. Open any Google Sheets node (for example, Retrieve Lead List or Append Sheet Row).
  2. Credential Required: Connect your Google Sheets credentials.
  3. Repeat the credential selection for all Google Sheets nodes that manage templates and statuses (22+ nodes, including Load Email Template DB, Update Original DB, Update DB Status 1, Update DB Status 2, Update DB Status 3, and Update DB Status 4).
  4. Verify sheet IDs, ranges, and write operations in nodes like Append Sheet Row and Modify Processed IDs DB.

⚠️ Common Pitfall: Missing Google Sheets credentials will cause all read/write steps to fail silently, especially in branches like Route Email Phases and Filter Items w ID.

Step 3: Set Up Lead Enrichment Processing

This phase pulls leads from Apify, cleans URLs, and enriches data via web page requests.

  1. Configure Execute Actor Task to run your Apify actor and pass lead input data from Form Submission Trigger.
  2. Credential Required: Connect your Apify credentials in Execute Actor Task and Fetch Dataset Items.
  3. Use Select Needed Fields and Parse Website URL to normalize lead records before scraping.
  4. Clean and prep URLs via Strip URL Extras and then set headers in Assign User Agents.
  5. Configure Web Page Request to fetch the lead website content, then format it using Render Markdown.

Tip: Render Markdown and Web Page Request are configured to continue on error—ensure your downstream steps can handle empty content.

Step 4: Configure Outreach Email Dispatch

This step batches leads, selects templates, personalizes content, and sends emails via SendGrid.

  1. Control volume with Cap Records and Batch Iterate Items before personalization.
  2. Normalize variables in Normalize Variables after templates are merged in Combine Streams B.
  3. Load templates from Load Email Template DB and choose one using Choose Random Template.
  4. Send outreach via Dispatch Email, then queue follow-up timing in Delay Step.
  5. Credential Required: Connect your SendGrid credentials in Dispatch Email, Dispatch Email B, and Dispatch Email C.

Dispatch Email outputs to Delay Step, which then flows into Batch Iterate Items B for continuous batching.

Step 5: Set Up Create Email Labels AI Classification

Incoming replies are labeled and routed using the text classifier node connected to OpenAI.

  1. Configure Create Email Labels to classify replies into outcomes like Interested, Not Interested, or Misc.
  2. Attach OpenAI Chat Engine as the language model for Create Email Labels.
  3. Credential Required: Connect your OpenAI credentials in OpenAI Chat Engine (credentials are added to the parent AI node, not Create Email Labels).

Create Email Labels outputs to Apply Label Interested, Forward Emails to Sales, and Process Converted Leads in parallel.

Step 6: Configure Gmail Intake and Routing

Reply processing uses scheduled Gmail pulls, filtering, and routing to match replies with workflows.

  1. Credential Required: Connect your Gmail credentials in Fetch Recent Gmail, Fetch Recent Gmail B, Send Gmail Message, Apply Label Interested, Apply Label Not Interested, and Apply Label Misc.
  2. Filter replies with Filter Reply Emails and Filter Reply Emails B, then merge in Merge Unprocessed Emails and Merge Unprocessed Emails B.
  3. Extract identifiers with Extract Message ID and Extract Route ID before evaluating Only Emails With ID.
  4. Route by template using Route by Template, which sends to Load Original Email, Load Follow-Up Email 1, or Load Follow-Up Email 2.

Filter Items w ID outputs to Modify Email Workflow DB, Route by Template, and Modify Processed IDs DB in parallel.

Step 7: Configure Follow-Up Logic and Engagement Updates

This branch handles engagement categorization, follow-up timing, and database updates for each phase.

  1. Process engagement with Classify Event Types and route logic using Route by Condition.
  2. Combine engagement data via Combine Streams C then score via Categorize Engagements.
  3. Use Check Delivered No Reply and Check Opened Or Clicked to decide follow-up timing in Route 5 or 10 Days.
  4. Load follow-up templates via Load Follow-Up Template DB and Load Second Follow-Up DB, then personalize in Personalize Email A and Personalize Email B.
  5. Send follow-ups through Dispatch Email C and Dispatch Email B, followed by Delay Step D and Delay Step E.

Tip: The wait nodes (Delay Step A, Delay Step B, Delay Step C, Delay Step D, Delay Step E, and Randomized Pause) help pace outreach—adjust durations carefully to stay compliant.

Step 8: Review No-Op Placeholders and Debug Paths

No-op nodes exist to hold future logic or for debugging; verify whether you need to replace them with real actions.

  1. Inspect No-Op Placeholder, No-Op Placeholder A, No-Op Placeholder B, No-Op Placeholder C, and No-Op Placeholder D.
  2. Decide whether these nodes should log, notify, or branch to new actions in your production workflow.

Step 9: Test and Activate Your Workflow

Validate each trigger path, then activate the workflow for production.

  1. Use Manual Execution Start to run a controlled test of Retrieve Lead List and confirm outbound emails are sent.
  2. Trigger Form Submission Trigger with sample data and verify the Apify, enrichment, and sheet-update branches complete.
  3. Check the Gmail branches by running Scheduled Trigger A and Scheduled Trigger B and confirm labels and routing are applied correctly.
  4. Successful execution should result in template selection, SendGrid delivery, and updated statuses in Google Sheets.
  5. When everything checks out, toggle the workflow to Active to run in production.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • SendGrid credentials and webhook signing settings can trip you up. If events aren’t updating Google Sheets, check SendGrid’s Event Webhook page and confirm the n8n webhook URL is correct and enabled.
  • If you’re using Wait nodes or external scraping, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in the AI classification nodes are generic. Add your definitions of “Interested” and “Not Interested” early or you’ll be relabeling replies manually.

Quick Answers

What’s the setup time for this Sheets SendGrid leads automation?

Plan for about 60–90 minutes if you already have your keys and sheets ready.

Is coding required for this lead tracking automation?

No. You will mostly connect accounts and adjust a few field mappings.

Is n8n free to use for this Sheets SendGrid leads 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 OpenAI API costs (often a few dollars a month for typical reply classification) and Apify usage depending on scrape volume.

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 modify this Sheets SendGrid leads workflow for different use cases?

Yes, and you probably should. You can swap the Apify Google Maps scraper for a different Apify actor in the “Execute Actor Task” step, or replace the Google Sheets CRM with Airtable while keeping the SendGrid webhooks intact. Common customizations include changing the follow-up schedule (5/10 days to your cadence), rewriting the template library in the Templates sheet, and routing “Interested” replies to a different place (Slack, Telegram, or a sales inbox).

Why is my SendGrid connection failing in this workflow?

Usually it’s an API key problem or missing permissions on the key. Update the SendGrid credential in n8n, then verify Event Webhook is enabled inside SendGrid and sending the event types you expect (delivered, open, click, bounce). If you changed the webhook URL after testing, SendGrid may still be posting to the old one. Also check rate limiting if you’re sending large batches at once.

What volume can this Sheets SendGrid leads workflow process?

If you self-host, there’s no execution limit (it mostly depends on your server, SendGrid limits, and how aggressive your scraping is). On n8n Cloud, your plan sets monthly executions, so higher-volume outreach usually means upgrading. Practically, most teams run this in daily batches of 20–200 leads to keep deliverability healthy and keep website scraping from getting blocked.

Is this Sheets SendGrid leads automation better than using Zapier or Make?

Often, yes. This workflow mixes scraping, batching, waits, prioritization logic for event statuses, and AI classification, which is where Zapier scenarios get expensive or awkward fast. n8n also gives you self-hosting, so you can run high-frequency webhook updates without counting every step like it’s a precious resource. If you only need “new row in Sheets → send email,” Zapier or Make is fine. Once you care about reply routing and lifecycle tracking, n8n is the more practical tool. If you want a second opinion before you commit, Talk to an automation expert.

Once this is running, your Google Sheet stops being a dumping ground and turns into a live pipeline you can actually operate. The workflow handles the repetitive updates, so you can focus on the conversations that turn into revenue.

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