Weekly email list cleanup with Hunter and Google Sheets

Every Monday morning, verify new and stale addresses in your sheet, mark each one deliverable or not, and post a recap to Slack.

Deterministic Code
HunterGoogle SheetsSlackMarketingOperationsEmail AutomationLead EnrichmentData Sync

Build a code workflow that cleans up my marketing email list in Google Sheets every Monday at 7am so we don't torch our sender reputation on the next send. This is a deterministic loop with a known per-row schema: read, verify, write back, summarize. It is not a reasoning workflow.

Trigger: cron, every Monday at 7am in my workspace time zone.

Steps:

1) Use Google Sheets Get Values to read every row from the 'list' tab of the spreadsheet I'll point to. The sheet has columns for email, verification_status, confidence, and last_verified_at.

2) For each row, decide whether to verify. Skip rows whose last_verified_at is within the last 90 days (freshness window). Verify rows where verification_status is empty, or last_verified_at is missing, or last_verified_at is older than 90 days. This skip step is important so we don't burn Hunter credits re-verifying the same addresses every week.

3) For each row that needs verification, call Hunter Verify Email Address with the email. Hunter's verifier may return HTTP 202 (verification in progress); if it does, wait a short delay (a few seconds) and retry the same request before writing anything. Read back the deliverability result (deliverable, risky, or undeliverable) and the confidence score from the response.

4) Use Google Sheets Batch Update Values to write the deliverability result, the confidence score, and a fresh last_verified_at timestamp back into the same row. Batch the writes into one update at the end of the run, not one update per row.

5) Use Slack Send a Message to post a summary to the #marketing channel: total rows checked this run, count by status bucket (deliverable / risky / undeliverable), how many rows were skipped because they were already fresh, and a direct link to the sheet so anyone on the team can audit.

Make these things easy to change at the top of the workflow: the schedule, the spreadsheet ID, the tab name, the column names, the freshness window (90 days), and the Slack channel.

Additional information

What does this prompt do?
  • Every Monday at 7am, reads your marketing list from Google Sheets and checks each address against Hunter.
  • Writes deliverable, risky, or undeliverable back into the same row along with a confidence score and a fresh timestamp.
  • Skips addresses already verified in the last 90 days so you don't burn credits re-checking the same people.
  • Posts a Slack summary to your marketing channel with totals by status and a direct link to the sheet.
What do I need to use this?
  • A Hunter account with API access for email verification.
  • A Google account with edit access to the spreadsheet that holds your list.
  • A Slack workspace and a channel where the weekly recap should land.
  • A sheet with columns for email, verification status, confidence score, and last verified date.
How can I customize it?
  • Change when it runs, like a different day of the week, a different time, or a different time zone.
  • Adjust the freshness window so addresses are re-checked sooner or later than 90 days.
  • Pick a different Slack channel, or send the recap to multiple channels.
  • Add filters so only certain segments of your list get verified, like a single campaign tag.

Frequently asked questions

How many email addresses can it handle?
It walks through your list row by row, so it scales with your sheet size and your Hunter monthly limits. Free Hunter accounts include 50 verifications per month, and paid plans go much higher.
Will it re-verify the same addresses every week?
No. Any address checked inside the last 90 days is skipped, so you only spend credits on brand new entries or stale ones. You can shorten or lengthen that window.
What do deliverable, risky, and undeliverable mean?
Those are Hunter's standard verification buckets. Deliverable is safe to send to, risky should usually be excluded from large sends, and undeliverable will bounce. Suppressing risky and undeliverable addresses is the fastest way to protect your sender reputation.
What happens if Hunter is still working on a verification when we check?
The workflow waits a moment and asks again before writing anything to the sheet, so you always get a final answer instead of a pending placeholder.
Can I use this with Mailchimp, HubSpot, or another list instead of Google Sheets?
This prompt is built for Google Sheets. We have other starter prompts that connect Hunter to CRMs and email tools if your list lives somewhere else.

Stop letting bouncers tank your sender reputation.

Connect Hunter, Google Sheets, and Slack once, and Geni keeps your marketing list clean every Monday morning.