Skip to main content

Automated LinkedIn lead enrichment pipeline using Apollo.io & Google Sheets

Workflow preview

Workflow preview
100%
Automated LinkedIn lead enrichment pipeline using Apollo.io & Google Sheets preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

LinkedIn to Apollo.io Lead Enrichment System with Google Sheets Automatically capture company and store details from LinkedIn posts, enrich them with domain names and key decision maker (KDM) data ...

Best for

  • Lead Generation automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.webhook, n8n-nodes-base.splitout, @n8n/n8n-nodes-langchain.outputparserstructured, @n8n/n8n-nodes-langchain.lmchatgooglegemini, n8n-nodes-base.splitinbatches, n8n-nodes-base.googlesheets, n8n-nodes-base.scheduletrigger, n8n-nodes-base.wait

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Rahi Uppal.

Original n8n.io source

1.1 Workflow description

Title
Automated LinkedIn lead enrichment pipeline using Apollo.io & Google Sheets
Workflow name
Automated LinkedIn lead enrichment pipeline using Apollo.io & Google Sheets

LinkedIn to Apollo.io Lead Enrichment System with Google Sheets

Automatically capture company and store details from LinkedIn posts, enrich them with domain names and key decision-maker (KDM) data from Apollo.io, and store everything neatly in Google Sheets.
This workflow turns LinkedIn post data into a complete, structured lead database — fully automated from detection to enrichment.


🧾 Summary

This workflow reads LinkedIn post data (in JSON format) received via a webhook, extracts company and location information using an AI agent, and progressively enriches the data in three stages:

  1. Find Company Domain using Apollo.io
  2. Fetch Key Decision Makers (KDMs) using the company domain
  3. Find Corporate Emails for those KDMs

All results are automatically updated in Google Sheets, ensuring your lead list remains fresh, structured, and actionable.


⚙️ Prerequisites

Before running the workflow, make sure you have:

  • An Apollo.io API Key with company and people search access
  • A connected Google Sheets account (OAuth2)
  • A Webhook URL or LinkedIn scraper that feeds JSON-formatted post data
  • (Optional) An OpenAI / AI Agent node to extract company names and store locations from post text

🧩 Example Input (Webhook JSON)

Each LinkedIn post is received as a JSON object containing key clues:

{
  "index": 1,
  "text": "Excited to announce the opening of our new KFC store at Sky City Mall, Borivali East 🎉🍗\n\nLooking forward to welcoming you all to experience the Finger Lickin’ Good taste at our newest location!\n\n#KFCIndia #NewStoreOpening #Borivali #SkyCityMall #Sapphirefoods",
  "CompanyName": "MockCompany",
  "NewStoreLocation": "optional",
  "PersonPosted": "https://linkedin.com/in/mockperson",
  "PostImage": null,
  "PostLink": "https://www.linkedin.com/search/results/all/?keywords=%23kfcindia&origin=HASH_TAG_FROM_FEED",
  "extracted_at": "2025-09-08T12:05:40.044101"
}

🧠 Workflow Overview

This workflow runs in three main stages, moving from LinkedIn data → company domain → people → emails.


Stage 1: Company Name to Company Domain 🌐

Goal: Convert each company name into its website domain using Apollo.io.

Nodes & Flow

  • Schedule Trigger — Runs automatically (e.g., once a week) to check your Google Sheet for companies missing a domain.
  • IF Node (Check for Missing Domain) — Filters only companies without a website.
  • Loop Over Items — Iterates through each company record.
  • HTTP Request – Find Domain — Calls the Apollo.io Company API to find the company’s domain (e.g., kfc.com).
  • Update Row in Google Sheets — Writes the found domain back into the corresponding company row.
  • Wait Node – Delay Between API Calls — Adds a small pause to avoid hitting rate limits.

Stage 2: Domain to Top 10 KDMs 👥

Goal: Fetch key decision-makers (KDMs) from each company using Apollo.io.

Nodes & Flow

  • Schedule Trigger — Runs on a weekly cadence to check for companies with a domain but no KDMs.
  • Get Rows from Google Sheets — Pulls company records ready for enrichment.
  • IF Node (Check for Missing KDMs) — Ensures only companies without people data are processed.
  • Loop Over Items — Processes one company at a time.
  • HTTP Request – Find KDMs — Searches Apollo.io People API for top roles such as Founder, CEO, Head of Retail, etc.
  • Update Row in Google Sheets — Saves the top 10 names and their LinkedIn profiles into your sheet.
  • Wait Node — Adds a delay to manage rate limits safely.

Stage 3: KDM Profile to Email Enricher 📧

Goal: Find and store verified corporate email addresses for each KDM.

Nodes & Flow

  • Schedule Trigger — Weekly automation trigger.
  • Get Rows from Google Sheets — Pulls KDMs that have LinkedIn profiles but no email yet.
  • IF Node (Check for Missing Emails) — Ensures only valid records are processed.
  • Code Node – Prepare Data — Organizes LinkedIn profile and domain information.
  • HTTP Request – Find Email — Queries Apollo.io’s email enrichment endpoint using the LinkedIn URL and domain.
  • Code Node – Format Response — Cleans and formats the email result.
  • Wait Node — Adds delay to avoid request bursts.
  • Update Row in Google Sheets — Writes the verified email address back to the corresponding KDM entry and marks it as “Updated – email search.” 🎉

🧰 Setup Instructions

1. Connect APIs & Credentials

  • Add your Apollo.io API Key under HTTP Request credentials.
  • Connect your Google Sheets account (OAuth2).

2. Customize Sheet Structure

Add columns for:
CompanyName, Domain, KDMs, LinkedInProfile, Email, Status

3. Set Schedule Frequency

Each Schedule Trigger can be configured separately (e.g., Stage 1 every Monday, Stage 2 every Wednesday).

4. Optional: AI Extraction Node

Use an AI model (like OpenAI or Gemini) to extract company name and location from LinkedIn post text before enrichment.


🧰 Custom Node Names (Recommended for Clarity)

Node Type Recommended Name Description
HTTP Request (Company) Find Company Domain (Apollo.io) Searches for the company’s official domain
HTTP Request (People) Find Key Decision Makers (Apollo.io) Retrieves top company contacts
HTTP Request (Emails) Find Corporate Emails (Apollo.io) Gets verified email addresses for each contact
Wait Node API Delay (Rate Limit Buffer) Adds delay to avoid hitting API rate limits
Code Node Prepare KDM Data Organizes input data for API calls

⚙️ Customization Tips

  • Multiple Campaigns: Duplicate the workflow for different industries or store categories, updating parameters as needed.
  • Batch Size: Adjust API request limits (e.g., 100 per batch) based on your Apollo.io plan.
  • Filtering: Add IF conditions to skip records already marked as “Completed.”
  • Dashboards: Build visual analytics directly in Google Sheets or connect to Looker Studio.
  • Enrichment: Combine with CRM systems (like HubSpot or Close) using company domain or lead email as the linking key.

🔐 Security and Publishing Notes

  • 🔒 Never hardcode API keys in workflow exports. Use n8n credentials or environment variables instead.
  • 🚫 Replace sensitive values (like API keys or Sheet IDs) with placeholders before sharing.
  • 🔐 Keep your Google Sheet private unless intentionally shared.

🧩 Troubleshooting

  • No Data in Sheets: Check API response for data[] and verify Split Out configuration.
  • Duplicate Rows: Ensure the “Matching Column” in Google Sheets is correctly set (e.g., CompanyName or LinkedInProfile).
  • Rate Limits: Add Wait Nodes or reduce batch size.
  • Mapping Errors: Confirm Google Sheet headers exactly match node field mappings.
  • Timezone Adjustments: Apollo.io timestamps are in UTC — convert to local time if needed.

🎯 Example Use Case

Every week, this workflow scans new LinkedIn store-opening posts.
It extracts company names (like KFC India), finds their domains and top executives through Apollo.io, retrieves their emails, and logs everything in a Google Sheet — ready for your sales team to reach out.


Tags:
LinkedIn Apollo Automation LeadGeneration GoogleSheets MarketingOps DataEnrichment

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Webhook

Type / Role
n8n-nodes-base.webhook - webhook
Config choices
Version 2.1

Block 2 - Split Out

Type / Role
n8n-nodes-base.splitOut - splitOut
Config choices
Version 1

Block 3 - Structured Output Parser

Type / Role
@n8n/n8n-nodes-langchain.outputParserStructured - outputParserStructured
Config choices
Version 1.3

Block 4 - Google Gemini Chat Model

Type / Role
@n8n/n8n-nodes-langchain.lmChatGoogleGemini - lmChatGoogleGemini
Config choices
Version 1

Block 5 - Loop Over Items

Type / Role
n8n-nodes-base.splitInBatches - splitInBatches
Config choices
Version 3

Block 6 - Get row(s) in sheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 7 - Schedule Trigger

Type / Role
n8n-nodes-base.scheduleTrigger - scheduleTrigger
Config choices
Version 1.2

Block 8 - Loop Over Items1

Type / Role
n8n-nodes-base.splitInBatches - splitInBatches
Config choices
Version 3

Block 9 - Update row in sheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 10 - Schedule Trigger1

Type / Role
n8n-nodes-base.scheduleTrigger - scheduleTrigger
Config choices
Version 1.2

Block 11 - Loop Over Items2

Type / Role
n8n-nodes-base.splitInBatches - splitInBatches
Config choices
Version 3

Block 12 - Wait

Type / Role
n8n-nodes-base.wait - wait
Config choices
Version 1.1

Block 13 - Wait1

Type / Role
n8n-nodes-base.wait - wait
Config choices
Version 1.1

Block 14 - Get row(s) in sheet1

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 15 - Update row in sheet1

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 16 - If

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 17 - If1

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 18 - Schedule Trigger2

Type / Role
n8n-nodes-base.scheduleTrigger - scheduleTrigger
Config choices
Version 1.2

Block 19 - Wait2

Type / Role
n8n-nodes-base.wait - wait
Config choices
Version 1.1

Block 20 - Update row in sheet2

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 21 - If2

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 22 - Code

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 23 - Sticky Note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 24 - Sticky Note1

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Showing the first 24 of 33 workflow blocks. Download the JSON for the full node graph.

3. Summary Table

Workflow Automated LinkedIn lead enrichment pipeline using Apollo.io & Google Sheets
Complexity advanced
Nodes 33
Categories Lead Generation
Author Rahi Uppal
Published 09 Sept 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/8409/8409.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Automated LinkedIn lead enrichment pipeline using Apollo.io & Google Sheets do?

LinkedIn to Apollo.io Lead Enrichment System with Google Sheets Automatically capture company and store details from LinkedIn posts, enrich them with domain names and key decision maker (KDM) data ...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Lead Generation use case.