Google Sheets + Hunter.io: cleaner outreach lists
Bounced emails are expensive in a way you don’t see on the invoice. They quietly drag down deliverability, waste reps’ time, and turn “good lists” into a guessing game. Hunter Sheets verification fixes the boring part that keeps breaking.
Marketing Ops feels this when a campaign underperforms for “no clear reason.” A small business owner feels it when a send gets throttled. And SDRs just feel it in their inbox, all day.
This workflow pulls leads from Google Sheets, verifies each email with Hunter.io, then writes back a clear status, score, and notes so you always know what’s safe to send.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Sheets + Hunter.io: cleaner outreach lists
flowchart LR
subgraph sg0["⏯️ Daily Schedule Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "⏯️ Daily Schedule Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "📥 Retrieve Emails Sheet", pos: "b", h: 48 }
n2["<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/code.svg' width='40' height='40' /></div><br/>🧹 Prepare Email Records"]
n3["<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 Verification API"]
n4["<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/code.svg' width='40' height='40' /></div><br/>🧠 Shape Verification Output"]
n5@{ icon: "mdi:database", form: "rounded", label: "📤 Update Results Sheet", pos: "b", h: 48 }
n0 --> n1
n4 --> n5
n2 --> n3
n1 --> n2
n3 --> n4
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 n1,n5 database
class n3 api
class n2,n4 code
classDef customIcon fill:none,stroke:none
class n2,n3,n4 customIcon
The Problem: Dirty outreach lists wreck deliverability
Most outreach lists don’t fail because your copy is bad. They fail because the data is stale. Someone changed jobs, a domain stopped accepting mail, or the address was scraped wrong in the first place. Then the list lives in a Google Sheet for weeks while people keep adding rows, copying columns, and exporting “final_v7” CSVs. You end up sending to addresses you would never email if you knew the risk. And once deliverability drops, it’s hard to climb back.
It adds up fast. The friction compounds.
- Manual verification turns into an annoying pre-send ritual that can eat about 2 hours before every campaign.
- Bad emails create bounce spikes, which means inbox placement gets worse even for your valid leads.
- Teams keep debating list quality because there’s no shared “source of truth” for validity and confidence.
- You waste money enriching or uploading leads that should have been filtered out earlier.
The Solution: Verify emails daily and write results back to Sheets
This n8n workflow runs on a daily schedule (and you can also run it manually). It reads lead rows from a Google Sheet named Sheet1 with fields like Email, FirstName, LastName, and Company. Before it spends a single API call, it cleans the input by filtering blanks and obvious formatting issues. Then it sends each email to Hunter.io’s email verifier endpoint and receives the verification status plus the practical details you care about: confidence score (0–100), SMTP check, and whether the address is disposable. Finally, it shapes that response into something a human can scan and writes the results into an output Google Sheet, either updating or appending rows.
The workflow starts with a scheduled trigger, pulls emails from Sheets, and prepares each record for verification. Hunter.io does the verification, and n8n converts the response into readable notes. The output goes straight back into Google Sheets so your list stays current without anyone babysitting it.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you add 200 new leads to Google Sheets each week. Manually verifying them (even at a quick 30 seconds each between copy/paste, checks, and updating the sheet) is roughly 100 minutes, plus the usual distractions and mistakes. With this workflow, you drop the leads into Sheet1 and let the daily run handle it. Your “time cost” becomes a quick scan of the results sheet for risky or invalid rows, maybe 10 minutes total.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for your lead source and results output
- Hunter.io to verify email validity and scores
- Hunter.io API key (Dashboard → API in Hunter.io)
Skill level: Beginner. You’ll connect Google Sheets, paste an API key, and confirm the sheet columns match.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Daily run (or manual run) kicks things off. n8n starts on a schedule trigger once per day, which means your list gets refreshed even if nobody remembers to do it.
Leads are pulled from Google Sheets. The workflow reads rows from “Sheet1” and grabs the columns you care about (Email, FirstName, LastName, Company) so the verifier has clean input.
Records are cleaned and checked before spending API calls. A small code step filters out blank emails and obvious formatting problems. Frankly, this is where a lot of “hidden waste” disappears.
Hunter.io verifies and n8n writes back the truth. The workflow calls Hunter’s /email-verifier API via HTTP Request, shapes the response into readable status/score/notes, then updates a results sheet in Google Sheets.
You can easily modify the output columns to match your team’s process, like adding a “Do Not Contact” flag or a “Last Verified” date 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 up the workflow to run automatically on a daily schedule using the existing trigger node.
- Add or open ⏯️ Daily Schedule Trigger.
- In Rule, keep the existing interval configuration (default daily schedule), or adjust to your desired cadence.
- Connect ⏯️ Daily Schedule Trigger to 📥 Retrieve Emails Sheet.
Step 2: Connect Google Sheets
Retrieve your input list of emails and prepare the output destination spreadsheet.
- Open 📥 Retrieve Emails Sheet and select the input spreadsheet.
- Set Document to
{{YOUR_INPUT_SHEET_ID}}and Sheet togid=0(Sheet1). - Credential Required: Connect your googleSheetsOAuth2Api credentials in 📥 Retrieve Emails Sheet.
- Open 📤 Update Results Sheet and set Document to
{{YOUR_OUTPUT_SHEET_ID}}and Sheet togid=0(Sheet1). - Credential Required: Connect your googleSheetsOAuth2Api credentials in 📤 Update Results Sheet.
Email, FirstName, LastName, and Company so 🧹 Prepare Email Records can read them correctly.Step 3: Set Up Email Preparation & Verification
Normalize the email records and send them to the verification API.
- Open 🧹 Prepare Email Records and confirm the JavaScript Code is in place to map
Email,FirstName,LastName, andCompany. - Open 🕵️♂️ Email Verification API and set URL to
https://api.hunter.io/v2/email-verifier. - Enable Send Query and set the query parameter email to
={{ $json.email }}. - Set the query parameter api_key to your Hunter API key (replace
[CONFIGURE_YOUR_API_KEY]).
Step 4: Shape Results and Update the Output Sheet
Transform the API response and write verification results back to Google Sheets.
- Open 🧠 Shape Verification Output and verify it references both 🧹 Prepare Email Records and 🕵️♂️ Email Verification API in the code.
- Confirm 📤 Update Results Sheet uses Operation
appendOrUpdatewith Matching Columns set toemail. - Ensure column mappings are set to expressions like
={{ $json.email }},={{ $json.status }}, and={{ $json.statusSummary }}. - Connect 🧠 Shape Verification Output to 📤 Update Results Sheet.
Step 5: Test and Activate Your Workflow
Run a manual test to validate the flow, then enable the schedule for production.
- Click Execute Workflow and inspect data flowing from 📥 Retrieve Emails Sheet to 🧹 Prepare Email Records.
- Check 🕵️♂️ Email Verification API for successful responses and 🧠 Shape Verification Output for correctly structured fields.
- Verify that 📤 Update Results Sheet appends or updates rows in your output sheet with
status,score, andstatusSummary. - Toggle the workflow to Active so ⏯️ Daily Schedule Trigger runs it daily in production.
Common Gotchas
- Google Sheets access can fail if the connected Google account loses permission to the file. If things break, check the Google Sheets credential in n8n and confirm the sheet is still shared correctly.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Hunter.io API keys can be rotated or hit plan limits. If verifications start returning errors, check Hunter’s Dashboard usage and then re-paste the key in the HTTP Request credential.
Frequently Asked Questions
About 30 minutes once your sheet and API key are ready.
No. You’ll connect accounts and paste your Hunter.io API key. The included code steps are already set up.
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 API usage based on your plan.
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.
Yes, you can change the schedule trigger to weekly in n8n. You can also edit the “Shape Verification Output” code step to write different notes, add a “Last Verified” date, or flag “risky” emails for manual review. Another common tweak is skipping verification when a row already has a recent score, so you don’t re-check the same lead over and over.
Usually it’s an invalid or rotated API key in the HTTP Request credential. Check Hunter’s Dashboard to confirm the key is active and you still have usage available. Also verify you’re sending a real email value (not a blank cell or malformed address), because the workflow intentionally filters those out and that can look like “missing data” if your sheet columns shifted.
It can handle as many as your n8n executions and Hunter.io plan allow.
Often, yes, because n8n handles batching and custom shaping without forcing you into paid “task” pricing for every single row. It’s also easier to keep your logic in one place: filter bad rows, call Hunter, then write clean output back to Sheets. Zapier or Make can be fine for tiny lists, but they get pricey when you verify hundreds or thousands of emails regularly. With n8n you can self-host, which helps a lot at higher volume. If you’re unsure, Talk to an automation expert and we’ll map it to your send volume.
Clean lists are a compounding advantage. Set this up once, let it run daily, and stop treating bounces like an unavoidable tax on outreach.
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.