Google Sheets + Hunter.io: cleaner email lists fast
You finally get a fresh batch of leads, launch the campaign, and then the bounce notifications start rolling in. It’s not just annoying. It’s a slow leak that chips away at deliverability, wastes budget, and turns “new leads” into a cleanup project.
Email marketers feel this when campaigns underperform for no obvious reason. Agency owners deal with it when clients blame the platform instead of the list. And if you run a small team, email list automation is often the difference between scaling outreach and constantly playing defense.
This workflow watches your Google Sheet, checks new emails with Hunter.io (and a backup validator), then writes clear statuses back into the same row. You’ll see how it works, what you need, and where people usually get tripped up.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Google Sheets + Hunter.io: cleaner email lists fast
flowchart LR
subgraph sg0["Google Sheets Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Google Sheets Trigger", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Email Validation API"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Empty Cells", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Take Email Only", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Take Email and Validation St..", pos: "b", h: 48 }
n5@{ icon: "mdi:database", form: "rounded", label: "Update the Sheets with Valid..", pos: "b", h: 48 }
n3 --> n1
n2 --> n3
n1 --> n4
n0 --> n2
n4 --> n5
end
subgraph sg1["Flow 2"]
direction LR
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/hunter.png' width='40' height='40' /></div><br/>Alternative - Hunter for Ema.."]
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 n0 trigger
class n2 decision
class n5 database
class n1 api
classDef customIcon fill:none,stroke:none
class n1,n6 customIcon
The Challenge: Keeping Email Lists Clean Without Slowing Down
Email validation always sounds simple until you’re staring at a sheet with a few hundred new rows and no time to babysit it. Someone pastes a list from a webinar, a VA adds leads from LinkedIn, a form pushes signups into Sheets, and suddenly your “source of truth” is full of unknowns. Some addresses are mistyped, some are role-based, some are disposable, and a few are just dead. The kicker is that you usually discover the problem after sending, when bounces and blocks are already hurting you.
It adds up fast. Here’s where it breaks down in day-to-day work.
- Manual spot-checking turns into a recurring chore that steals about an hour whenever a new list lands.
- People skip validation “just this once,” and that’s often the send that triggers spam-folder problems.
- Lists get cleaned in one place but used in another, so the Sheet and your outreach tool drift out of sync.
- When validation is inconsistent, teams argue about the data instead of improving messaging and offers.
The Fix: Auto-Verify New Sheet Emails and Write Back Status
This n8n workflow turns your Google Sheet into a self-cleaning intake system. The moment a new row shows up, it checks if an email is present, maps it into the right format, then sends it to an email verification API. Hunter.io handles the primary check, and the workflow can also use a second validator (EmailValidation.io) so you’re not stuck when one service is slow or returns unclear results. Once the response comes back, the workflow translates it into a human-friendly status like “deliverable,” “risky,” or “blocked,” and updates the original spreadsheet row automatically. No exporting. No copy-paste. No “I’ll validate later” backlog.
The workflow starts with a Google Sheets trigger that monitors for new rows every minute. From there it filters out blanks, validates the email via HTTP requests and Hunter’s check, then merges the results into a clean status field. Finally, Google Sheets gets updated in-place, so your list is always current.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say your team adds 60 new leads a day into Google Sheets from forms, scraping, and manual research. Manually validating even 60 emails (copy, paste, check, record result) is usually about 2 minutes each, so roughly 2 hours a day goes to list hygiene. With this workflow, the “work” is adding the row, then waiting for the status to appear (often within a minute or two). You still review edge cases, but the grind disappears.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets to store leads and status fields.
- Hunter.io for primary email verification checks.
- EmailValidation.io API key (get it from your EmailValidation.io dashboard).
Skill level: Beginner. You’ll connect accounts, paste API keys, and map the right Sheet columns.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A new row appears in Google Sheets. The workflow’s Sheets trigger watches for new entries on a short interval (about every minute), so new leads get picked up quickly.
Blank or useless rows get skipped. If the email cell is empty, the workflow filters it out so you don’t burn API calls validating nothing.
The email is prepared, then verified. n8n maps the email into a consistent field, calls a validation endpoint via HTTP Request, and also runs a Hunter email check node so you have a strong primary signal (with a backup option when needed).
Status is written back into the same spreadsheet. The workflow assembles a clear label (deliverable, risky, blocked) and updates the row, which means your Sheet stays the single source of truth.
You can easily modify the status labels to match your outreach rules 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
Set up the workflow to watch for new rows in your spreadsheet using Sheets Row Trigger.
- Add and open Sheets Row Trigger.
- Set Event to
rowAdded. - Set Document to
[YOUR_ID]for the spreadsheet namedEmail Validation. - Set Sheet Name to
Sheet1(gid0). - Keep the polling schedule at
everyMinuteas configured.
Credential Required: Connect your googleSheetsOAuth2Api credentials.
Step 2: Connect Google Sheets
Ensure update access is in place for the spreadsheet using Update Sheet Status.
- Open Update Sheet Status.
- Verify Operation is set to
update. - Set Document to
[YOUR_ID]and Sheet Name toSheet1(gid0). - Confirm the Columns mapping includes Email set to
{{ $json.email }}and Deliverability set to{{ $json.status }}. - Ensure Matching Columns includes
Emailso updates target existing rows.
Credential Required: Connect your googleSheetsOAuth2Api credentials.
Step 3: Set Up Data Filtering and Mapping
Filter out empty rows and normalize the email field before validation using Remove Blank Entries and Map Email Field.
- Open Remove Blank Entries and confirm the condition checks Email with Operator set to
notEmpty. - Make sure the Left Value uses the expression
{{ $json.Email }}. - Open Map Email Field and set the assignment Email to
{{ $json.Email }}.
Email, update the expressions in Remove Blank Entries and Map Email Field to match.Step 4: Configure the Validation API Request
Call the external validation API from Validate Email API Call to verify deliverability.
- Open Validate Email API Call.
- Set URL to
=https://api.emailvalidation.io/v1/info?apikey={{api_key}}&email={{ $json.Email }}. - Keep Send Body and Send Headers enabled.
{{api_key}} with your actual EmailValidation.io API key or add it as a credential/variable to prevent 401 errors.Step 5: Assemble the Status Output
Normalize the response into fields the sheet update expects using Assemble Status Output.
- Open Assemble Status Output.
- Set status to
{{ $json.state }}. - Set email to
{{ $json.email }}.
Step 6: Configure Output to Update the Sheet
Write the validation result back to your spreadsheet using Update Sheet Status.
- Confirm Assemble Status Output is connected to Update Sheet Status.
- Verify Deliverability is mapped to
{{ $json.status }}. - Ensure the Matching Columns setting uses
Emailfor accurate row updates.
Step 7: Test and Activate Your Workflow
Validate the end-to-end flow and enable it for production use.
- Click Execute Workflow and add a new row with an
Emailvalue in your sheet. - Confirm Remove Blank Entries passes only non-empty emails.
- Verify Validate Email API Call returns a response and Assemble Status Output creates
statusandemailfields. - Check the spreadsheet to ensure Update Sheet Status writes the deliverability result to the
Deliverabilitycolumn. - When satisfied, toggle the workflow to Active for continuous processing.
Watch Out For
- Google Sheets OAuth credentials can expire or need specific permissions. If things break, check the n8n credentials screen and the Google account’s access to the exact spreadsheet 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.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Common Questions
About 30 minutes if your API keys and Sheet are ready.
Yes. You’ll connect Google Sheets, paste API keys, and select which column holds the email.
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 Hunter.io and EmailValidation.io API usage fees, which depend on how many emails you verify.
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.
You can swap which validator is “primary” by changing the HTTP Request validation step and keeping the Hunter email check as a fallback (or the other way around). Most teams customize the status labels in the “Assemble Status Output” step, add a separate column for a confidence note, and adjust the filter so internal emails or known domains skip verification.
Usually it’s an expired Google OAuth token or the credential is connected to an account that no longer has access to the spreadsheet. Reconnect the Google Sheets credential in n8n, then confirm the Sheet ID and tab name still match. If it fails only on updates, check that the workflow is writing to a column that actually exists (renamed headers break mappings more often than people expect).
Plenty for most small teams: it checks new rows every minute and processes what shows up. On n8n Cloud Starter you’re working within plan execution limits, while self-hosting has no execution cap (your server and the validator rate limits become the real constraint). If you upload a big list, use batching so you don’t hit Hunter.io or EmailValidation.io throttles. Honestly, validation services are usually the bottleneck, not n8n.
Often, yes, especially if you want filtering, fallbacks, and bulk processing without the automation getting expensive. n8n handles branching logic cleanly, you can self-host for unlimited executions, and calling external APIs (like Hunter.io and EmailValidation.io) is straightforward. Zapier or Make can still be a fine choice for a simple “new row → one API call → update row” setup. The moment you add a backup validator, batching, or more rules, n8n tends to feel calmer to operate. Talk to an automation expert if you want a quick recommendation based on your volume and tools.
A clean sheet makes everything downstream easier: better segmentation, fewer bounces, and fewer awkward “why did this campaign tank?” post-mortems. Set it up once, then let the workflow keep your list honest.
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.