DEV Community

sumitrmardy
sumitrmardy

Posted on

Open-source n8n templates for bulk email verification — Sheets, CSV cleanup, signup webhook, AI agent tool (EN/中文)

I built a set of four n8n templates around one job: checking whether email addresses are worth sending to, before they go into a sequence, a CRM, or an agent's hands.

The templates

  • Google Sheets lead list — reads rows with no verdict, verifies in batches, writes status / score back. Re-runs only pick up new rows, so it's safe on a schedule.
  • Clean a CSV before cold email — upload an Apollo / Instantly / HubSpot export, get back three lists: send_safe, review, drop. Greylisted addresses wait and get retried once instead of being thrown away.
  • Signup webhook — returns allow | review | block, with the policy in a single Code node so you can make it stricter or looser.
  • AI agent tool — an AI Agent with the verifier as its only tool, and a system prompt that tells it what each result means and what to do with it.

A few details that took longer than expected

  • Results are matched back by address, not row order. The verifier groups addresses by domain, so they come back reordered; matching by position silently writes the wrong verdict on the wrong row.
  • unknown and undeliverable are kept apart. "We couldn't find out" (greylisting, timeouts) is not "this mailbox is dead", and merging them deletes real contacts.
  • Gmail / Outlook / Yahoo / iCloud accept any address at SMTP time, so those come back as risky / free_provider_unverifiable rather than a fake "valid". Same for catch-all domains.
  • Every record has the same shape: status is always one of four values and all 11 checks keys are always present. No ?? false scattered through your Code nodes.

Everything uses the core HTTP Request node (no community node) and a Header Auth credential, so nothing secret lives in the JSON. Chinese versions of all four are included.

Also in the repo: an OpenAPI file (imports into Dify, Coze, GPT Actions), MCP config, and llms.txt.

Disclosure: the templates are MIT, but they call an email-verification Actor I built and run on Apify, which is pay-per-verified-address (there's a free tier).

Repo: https://github.com/sumitrmardy/email-verifier-api

Feedback welcome — especially from anyone on a different n8n version where a node imports differently. That's the part I'd most like to hear about.

Top comments (0)