🔓 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

LinkedIn to Google Sheets, leads enriched with Hunter.io

Lisa Granqvist Partner Workflow Automation Expert

You finally have a list of LinkedIn profiles worth contacting. Then the time sink starts: open tabs, copy names, guess emails, double-check titles, paste it all somewhere, and still end up with “generic” outreach.

This hits growth marketers who need pipeline fast. Sales reps feel it in their calendars. And if you run an agency or consultancy, you know the LinkedIn lead enrichment grind never really ends. This LinkedIn lead enrichment automation turns profile links into a clean Google Sheet with verified work emails and a ready-to-send message.

Below you’ll see how the workflow runs, what results to expect, and what you need to make it work without babysitting it.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: LinkedIn to Google Sheets, leads enriched with Hunter.io

The Problem: LinkedIn Leads Take Forever to Enrich

Turning LinkedIn profiles into real outreach-ready leads sounds simple until you do it at scale. One profile needs a name, a role, the company, and something human to mention. Then comes the email guesswork (and the bounce risk). By the time you’ve enriched 30 leads, you’ve spent a chunk of your day just assembling basics, not actually starting conversations. Worse, you’re switching contexts constantly, which makes mistakes more likely and personalization harder.

The friction compounds. Here’s where it usually breaks down.

  • You end up doing “research” that’s mostly copy-paste across 5–10 browser tabs.
  • Email guessing leads to bounces, spam flags, or a list you can’t confidently send.
  • Personalization gets rushed, so your message reads like it was sent to everyone.
  • Even if you build a list, it’s messy, inconsistent, and hard to hand off to a teammate.

The Solution: LinkedIn Profiles to Verified Emails + AI Outreach in Sheets

This n8n workflow takes a list of LinkedIn profile URLs and turns them into a structured lead table in Google Sheets, with verified work emails (via Hunter.io) and a personalized outreach message (via OpenAI). It starts by expanding your input list, then carefully pulls profile details through an HTTP request. The workflow extracts the useful fields you actually need for outreach, not random noise. Next, it uses the person + company info to look up a verified email and normalizes the result so your sheet stays consistent. If an email is found, an AI agent generates a conversational message that references the lead’s role and company. Finally, the workflow appends everything as a new row in Google Sheets, so your list becomes usable immediately.

The workflow begins with your lead links and outreach settings. Then it throttles requests (so you don’t trigger limits), enriches each lead with Hunter.io, and only generates AI copy when a verified email exists. The end result is a clean sheet you can sort, filter, assign, and send from.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you enrich 40 LinkedIn profiles each week. Manually, it’s maybe 8 minutes per lead to capture details, find an email, and write a halfway-decent opener, which is roughly 5 hours. With this workflow, you drop the URLs in once, then let it run: a few minutes to set your outreach settings, and about 45–60 minutes of background processing (including throttling). You get a Google Sheet with verified emails and draft messages, ready for review and sending.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for the final enriched lead table.
  • Hunter.io to find verified work emails.
  • OpenAI API key (get it from your OpenAI dashboard).

Skill level: Intermediate. You’ll connect accounts, paste API keys, and adjust a prompt, but you don’t need to write code.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

You start with a list of LinkedIn profile URLs. The workflow reads your links, plus a few outreach settings you define upfront (like the value proposition you want the AI to use).

It pulls profile details with controlled pacing. A throttle pause (wait) is built in, then an HTTP request fetches LinkedIn details, and a parsing step extracts fields like name, title, company, and location.

Hunter.io email enrichment runs next. Using the extracted lead data, the workflow requests a verified work email, then normalizes the response so your sheet doesn’t end up with inconsistent columns or odd formats.

AI writes the first message only when it should. An “email present?” check decides what happens: if there’s a verified email, OpenAI generates a personalized outreach message; if not, the workflow skips that lead rather than polluting your sheet.

You can easily modify the outreach prompt to match your brand voice, or change the sheet columns to fit your CRM import format, based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Trigger (Manual or Schedule)

This workflow does not include a trigger node, so add your preferred trigger to start the process (manual test, schedule, or webhook).

  1. Add a trigger node of your choice (e.g., Manual Trigger or Cron) to start the workflow.
  2. Connect your trigger to Define Outreach Settings to begin the lead enrichment flow.

Step 2: Connect Lead Input & Expansion

Define your outreach targeting and split LinkedIn URLs into individual items for processing.

  1. In Define Outreach Settings, set Mode to raw and paste the JSON into JSON Output: { "target_industry": "SaaS", "target_role": "Head of Sales", "company_name": "YourCompany", "value_proposition": "We help sales teams book 30% more meetings using AI-powered personalization", "linkedin_urls": [ "https://www.linkedin.com/in/sample-profile-1", "https://www.linkedin.com/in/sample-profile-2" ] }
  2. In Expand Profile Links, set Field To Split Out to linkedin_urls.
  3. In Throttle Pause, set Unit to seconds and Amount to 2 to rate-limit requests.

Tip: Keep the linkedin_urls list short while testing to avoid rate limits during initial validation.

Step 3: Enrich Profiles with LinkedIn & Email Lookup

This section scrapes profile data, extracts key fields, and finds work emails.

  1. In Fetch LinkedIn Details, set URL to ={{ $json.linkedin_urls }} and keep the User-Agent header as provided.
  2. Credential Required: Connect your httpHeaderAuth credentials in Fetch LinkedIn Details (authentication uses genericCredentialType).
  3. Review Extract Profile Info code to ensure the HTML parsing matches your LinkedIn response format (it extracts full_name, title, company, location, and linkedin_url).
  4. In Locate Work Email, set URL to =https://api.hunter.io/v2/email-finder and ensure query parameters map correctly: domain = {{ $json.company.toLowerCase().replace(/[^a-z0-9]/g, '') }}.com, first_name = {{ $json.first_name }}, last_name = {{ $json.last_name }}.
  5. Credential Required: Connect your queryAuth credentials in Locate Work Email (authentication uses genericCredentialType).
  6. Leave Normalize Email Output as-is; it merges email data with the profile output from Extract Profile Info.

⚠️ Common Pitfall: If your LinkedIn scraping returns empty HTML, Extract Profile Info will output placeholders and email discovery may fail. Validate the response in Fetch LinkedIn Details first.

Step 4: Set Up AI Personalization

Generate personalized outreach copy only when a valid email is present.

  1. In Validate Email Presence, keep the condition String → isNotEmpty with Left Value set to ={{ $json.email }}.
  2. In Create AI Outreach Copy, set Model to gpt-4-turbo-preview and keep JSON Output enabled.
  3. Credential Required: Connect your OpenAI credentials in Create AI Outreach Copy.
  4. Ensure the prompt in Create AI Outreach Copy references the settings via expressions like {{ $('Define Outreach Settings').item.json.company_name }} and {{ $('Define Outreach Settings').item.json.value_proposition }}.
  5. In Combine AI Message, keep the merge logic that sets ai_message and processing_timestamp.

Tip: If you customize the prompt, keep the JSON output format to ensure Combine AI Message can parse message reliably.

Step 5: Configure the Output Destination

Save enriched leads and AI-generated outreach into Google Sheets.

  1. In Append to Sheets, set Operation to append.
  2. Set Document ID to your spreadsheet ID (replace [YOUR_ID]).
  3. Set Sheet Name to gid=0 (Sheet1) or choose your target sheet.
  4. Map columns to expressions as provided, such as ={{ $json.email }}, ={{ $json.ai_message }}, and ={{ $now.toFormat('yyyy-MM-dd HH:mm:ss') }}.
  5. Credential Required: Connect your Google Sheets credentials in Append to Sheets.
  6. Leave Skip Missing Email unchanged; it captures leads without an email for optional review.

Step 6: Test and Activate Your Workflow

Run a manual test to verify enrichment, AI copy generation, and sheet output.

  1. Click Execute Workflow to run a manual test from your trigger.
  2. Confirm that Fetch LinkedIn Details, Locate Work Email, and Create AI Outreach Copy produce valid outputs.
  3. Verify that Append to Sheets adds a new row with email, lead details, and Personalized Message.
  4. Check that leads without email go to Skip Missing Email instead of the AI and Sheets branch.
  5. Once confirmed, toggle the workflow Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets credentials can expire or need specific permissions. If things break, check the n8n Credentials tab and your Google account security alerts first.
  • If you’re using Wait nodes or external processing, run times vary. Bump up the wait duration if downstream HTTP requests fail or come back empty.
  • Default prompts in AI nodes are generic. Add your offer details and brand voice in the “Define Outreach Settings” step early or you will be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this LinkedIn lead enrichment automation?

About 30 minutes if your API keys are ready.

Do I need coding skills to automate LinkedIn lead enrichment?

No. You will connect accounts, add API keys, and tweak a message prompt.

Is n8n free to use for this LinkedIn lead enrichment 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 Hunter.io and OpenAI usage costs (for many teams, it’s a few dollars per batch unless you’re running thousands of leads).

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 customize this LinkedIn lead enrichment workflow for multiple offers or ICPs?

Yes, but keep it simple at first. The easiest approach is to duplicate the “Define Outreach Settings” configuration per ICP (value prop, tone, CTA) and point each version to a different Google Sheet tab. You can also branch the logic before the “Create AI Outreach Copy” node using a Switch, so different titles or industries get different prompts. Common tweaks include a shorter message style, a “breakup” follow-up version, and a version designed for agency prospecting.

Why is my Google Sheets connection failing in this workflow?

Usually it’s expired OAuth permissions or a Google account security change. Reconnect your Google Sheets credential in n8n and confirm the spreadsheet is shared with the same account you authorized. Also check that the target sheet and tab name still match what the workflow expects. If you changed columns, make sure the append step still maps fields correctly.

How many leads can this LinkedIn lead enrichment automation handle?

Practically, it can handle hundreds per run, but throttling and your API limits will decide the pace.

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

Often, yes, because this workflow has conditional paths, batching, and richer control over the AI step. Zapier and Make can do parts of it, but you’ll usually end up stitching together multiple zaps/scenarios, plus paying more as volume increases. n8n also gives you a self-host option, which is handy when you’re processing big lists. That said, if you only need “URL in, row out” without AI copy, simpler tools can be faster to deploy. Talk to an automation expert if you’re not sure which fits.

Once this is running, your lead list stops being a project and starts being an asset. The workflow handles the repetitive parts, so you can spend your time on real conversations.

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