🔓 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

OpenRouter + Google Sheets: clean enriched leads

Lisa Granqvist Partner Workflow Automation Expert

Your lead list starts out “fine”… then you open the spreadsheet a week later and it’s chaos. Duplicate domains, missing emails, random formats, and no confidence in what’s actually outreach-ready.

This kind of lead enrichment automation hits growth marketers hard. SDRs feel it too, because bounces waste real call time. And if you’re a founder building pipeline between meetings, it’s honestly exhausting to keep cleaning lists by hand.

This workflow turns a single prompt into a clean, deduped Google Sheets lead list with verified emails from Hunter.io. You’ll learn what it does, what you need, and how to make it fit your own outbound process.

How This Automation Works

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

n8n Workflow Template: OpenRouter + Google Sheets: clean enriched leads

Why This Matters: Clean leads are harder than “finding leads”

Finding a list of companies is not the hard part anymore. The hard part is getting a list you can actually use without babysitting it. You pull company names from an AI response, paste them into Sheets, try to add domains, then enrichment tools spit back partial matches and generic inboxes. Next thing you know, you’re doing the same cleanup steps every single time: remove duplicates, standardize domains, validate emails, mark statuses, and figure out what was already contacted. It’s not just time. It’s mental overhead, and it quietly slows down outreach consistency.

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

  • You end up rewriting prompts and re-parsing AI output because the formatting changes from run to run.
  • Duplicates sneak in when the same domain shows up with different naming or subdomains.
  • Email enrichment gets skipped when you’re busy, so your list looks “done” but isn’t usable.
  • Status tracking gets messy, which means you re-check and re-enrich leads you already processed.

What You’ll Build: Prompt-to-outreach lead enrichment in Google Sheets

This automation takes one plain-English prompt (industry, niche, topic) and turns it into a structured lead list in Google Sheets. It starts by using OpenRouter (with a Perplexity-style research model by default) to generate a set of relevant companies and their domains. Then it cleans and validates the AI output, compares it against what’s already in your sheet, and removes duplicates so you don’t keep processing the same companies. Next, it enriches each domain using Hunter.io to find up to a few real email addresses, and it tags each row with a clear status like “Enriched.” If Hunter can’t find emails, the workflow runs a fallback AI step to locate general contact info so you still get something usable. Finally, it writes clean rows back to Google Sheets, in safe batches, so API limits don’t wreck your run.

The workflow can be triggered manually, on a schedule, or through chat (including Telegram). From there, OpenRouter generates the companies, Google Sheets acts as your source of truth for dedupe and tracking, and Hunter.io handles verified email discovery before anything gets logged.

What You’re Building

Expected Results

Say you build a list of 15 companies for outbound, three times a week. Manually, you might spend about 20 minutes generating and cleaning the list, another 30 minutes deduping and formatting, then about 5 minutes per company doing enrichment and copying results back into Sheets. That’s roughly 2 hours per run. With this workflow, you spend about 5 minutes writing the prompt and confirming the Google Sheet mappings, then let it process in batches while you do something else. Most teams get about 90 minutes back per run.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • OpenRouter for AI company research and JSON output
  • Google Sheets to store and dedupe leads
  • Hunter.io API key (get it from your Hunter dashboard)

Skill level: Intermediate. You’ll connect accounts, map a few fields, and adjust prompts if you want better targeting.

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

Step by Step

You trigger lead generation. Run it manually in n8n, on a schedule, or via chat input (there’s also an optional Telegram listener). The only input you really need is the prompt describing the industry or company type you want.

AI generates companies and domains. OpenRouter runs a research chain that returns a structured list (the workflow also sanitizes and validates JSON, because AI output can be messy). If the format isn’t usable, the workflow cleans it before anything hits your sheet.

Leads get deduped against your real list. The workflow reads your existing Google Sheet, extracts domains, merges the new domain list, and removes duplicates so you don’t re-enrich the same company again and again.

Hunter.io enriches in safe batches. New leads are limited to 10 at a time to protect your API limits, then Hunter returns email matches. Results are normalized and each lead is routed through simple “if” logic (enriched vs. fallback) before updating your Google Sheet.

You can easily modify the prompt and the output columns to match your niche and your outreach workflow. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

Set the entry points that start the lead enrichment flow, including manual and chat-based runs.

  1. Add and keep Manual Run Trigger as the primary start node for on-demand runs.
  2. Enable Chat Input Trigger if you want to generate leads via chat input, then keep its connection into AI Lead Generator.
  3. If you want scheduled runs, enable Utility: Scheduled Trigger and connect it to Retrieve New Leads (currently disabled).
  4. If you want Telegram-triggered runs, enable Utility: Telegram Listener (currently disabled) and wire it to your preferred entry node.

Credential Required: Connect your Telegram credentials in Utility: Telegram Listener if you enable it.

Step 2: Connect Google Sheets

Configure all Google Sheets nodes to read, write, and update lead data across your spreadsheets.

  1. Open each Google Sheets node and set the correct spreadsheet and sheet/tab: Retrieve New Leads, Read Existing Lead Sheet, Write New Leads Sheet, Append Leads Sheet, Update Leads Sheet A, and Update Leads Sheet B.
  2. Ensure Retrieve New Leads and Read Existing Lead Sheet are configured to read the columns used by downstream code nodes.
  3. Confirm write/update behavior on Write New Leads Sheet, Append Leads Sheet, Update Leads Sheet A, and Update Leads Sheet B so rows are written to the intended target sheet.

Credential Required: Connect your Google Sheets OAuth2 credentials to all Google Sheets nodes.

Step 3: Set Up AI Lead Generation and Research

Configure the AI chains and language models that generate and enrich lead data.

  1. Open AI Lead Generator and define the prompt or chain logic that generates new leads from chat input.
  2. Open Company Research Chain and define the enrichment prompt for company-level research.
  3. Ensure OpenRouter Chat Engine 2 is connected as the language model for AI Lead Generator and OpenRouter Chat Engine is connected as the language model for Company Research Chain.

Credential Required: Connect your OpenRouter API credentials in OpenRouter Chat Engine and OpenRouter Chat Engine 2. These credentials are added to the parent language model nodes, not the chain nodes.

Step 4: Configure Lead Cleanup and Deduplication

Set the transformation steps that normalize AI output, split items, and deduplicate against existing domains.

  1. In Sanitize AI JSON, ensure the code parses the AI response into valid JSON objects.
  2. In Split Items, verify the logic outputs individual lead items for downstream processing.
  3. Confirm Read Existing Lead Sheet feeds Extract Existing Domains to build a list of existing domains.
  4. Ensure Split Items outputs to both Read Existing Lead Sheet and Merge Domain Lists in parallel.
  5. Verify Merge Domain Lists combines new and existing domain lists, then Remove Duplicate Leads filters duplicates before Validate New Leads.

⚠️ Common Pitfall: If Sanitize AI JSON outputs invalid JSON, downstream code nodes will fail. Test the AI output formatting early.

Step 5: Configure Enrichment and Routing Logic

Set up the Hunter lookup and the conditional routing that updates your sheets based on lookup outcomes.

  1. In Limit to Ten Records, confirm the code restricts batch size before enrichment.
  2. Configure Hunter Email Lookup with the fields required for domain or company search.
  3. Ensure Normalize Hunter Results formats Hunter output for consistent downstream checks.
  4. Configure Branch on Hunter Status to route successful results into Company Research Chain and failures to Append Leads Sheet.
  5. In Filter by Lookup Result, route records to Update Leads Sheet A and Update Leads Sheet B as needed.

Credential Required: Connect your Hunter API credentials in Hunter Email Lookup.

Step 6: Configure Output Destinations

Finalize where processed leads are written and optionally sync to external systems.

  1. In Write New Leads Sheet, confirm validated leads are written to the correct destination tab.
  2. Confirm Append Leads Sheet is the fallback destination for leads that do not meet Hunter criteria.
  3. If you plan to sync to Airtable, enable Utility: Airtable Sync and map fields to your base (currently disabled).

Credential Required: Connect your Airtable credentials in Utility: Airtable Sync if you enable it.

Step 7: Test and Activate Your Workflow

Run a manual test to validate the full flow and then activate it for production use.

  1. Click Execute Workflow on Manual Run Trigger to run a full test.
  2. Verify the path: Manual Run TriggerRetrieve New LeadsLimit to Ten RecordsHunter Email LookupNormalize Hunter ResultsBranch on Hunter StatusCompany Research ChainProcess Company OutputFilter by Lookup ResultUpdate Leads Sheet A/Update Leads Sheet B.
  3. Also test the AI path via Chat Input Trigger to ensure AI Lead GeneratorSanitize AI JSONSplit Items works and that Split Items outputs to both Read Existing Lead Sheet and Merge Domain Lists in parallel.
  4. Confirm successful execution by checking updates in Write New Leads Sheet, Append Leads Sheet, Update Leads Sheet A, and Update Leads Sheet B.
  5. When ready, toggle the workflow to Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • Google Sheets credentials can expire or lose access if the spreadsheet permissions change. If things break, check the n8n credential and the sheet sharing settings first.
  • If you’re using batching (Split in Batches / limiting to 10) and Hunter.io rate limits you, some runs will return empty items. Re-run the failed batch or slow it down by reducing batch size.
  • OpenRouter prompts that don’t demand strict JSON will drift over time. Keep the “return valid JSON only” instruction and tweak it for your columns, or you will be cleaning outputs forever.

Quick Answers

What’s the setup time for this lead enrichment automation?

About 30 minutes if your Sheet and API keys are ready.

Is coding required for this lead enrichment automation?

No. You’ll mainly connect OpenRouter, Google Sheets, and Hunter.io, then confirm the column mappings.

Is n8n free to use for this lead enrichment automation 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 OpenRouter usage and Hunter.io API costs (often a few cents per lookup, depending on your plan).

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 lead enrichment automation workflow for different use cases?

Yes, and you should. You can swap Google Sheets for Airtable by turning on the Airtable Sync node and mapping the same fields, then keep Sheets as an optional export. You can also switch the OpenRouter model in the OpenRouter Chat Engine node (many teams test GPT-4, Claude, or Mixtral for more consistent JSON). Common tweaks include changing the prompt to focus on job titles or regions, adding a lead scoring column after Hunter results, and auto-sending enriched rows via a Send Email node or into your CRM.

Why is my Hunter.io connection failing in this workflow?

Usually it’s an invalid or expired API key, so regenerate it in Hunter and update the credential in n8n. If the key is fine, check plan limits and rate limits, because this workflow runs lookups in batches and Hunter can still throttle you. Also confirm the domain you’re enriching is normalized (no “https://”, no paths), since Hunter expects clean domains.

What volume can this lead enrichment automation workflow process?

Practically, it’s built for steady runs, not giant dumps. The workflow limits enrichment to batches of 10 per run to protect API limits, so think tens of leads per run, multiple runs per day if needed. On n8n Cloud, your execution limit depends on plan; if you self-host, there’s no execution cap and you scale based on server resources. Hunter.io and your OpenRouter model limits will be the real ceiling.

Is this lead enrichment automation better than using Zapier or Make?

Often, yes. This workflow uses branching “if” logic, batching, merges, and cleanup code steps to keep your sheet deduped and your enrichment reliable, and those patterns get expensive or awkward in Zapier. n8n also lets you self-host, which matters when you’re running frequent lead gen cycles. Zapier or Make can still be fine if you only want a simple “new row → enrich → update row” flow with no AI research and no dedupe layer. If you’re unsure, Talk to an automation expert and we’ll point you to the cleanest option.

Once this is running, your lead list stops being a fragile spreadsheet project and becomes a repeatable pipeline input. Set it up, refine your prompt, and let the workflow keep the rows clean.

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