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:
- Find Company Domain using Apollo.io
- Fetch Key Decision Makers (KDMs) using the company domain
- 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