This workflow corresponds to n8n.io template #16225 — we link there as the canonical source.
This workflow follows the Google Sheets → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "suRqtETAixIFI5QB",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "LinkedIn Profile Enrichment Pipeline",
"tags": [
{
"id": "CbLcgNMJtpnafc16",
"name": "linkedin",
"createdAt": "2026-06-05T09:36:54.007Z",
"updatedAt": "2026-06-05T09:36:54.007Z"
},
{
"id": "abLqlZtT3ezn4ZfS",
"name": "enrichment",
"createdAt": "2026-06-05T09:36:54.085Z",
"updatedAt": "2026-06-05T09:36:54.085Z"
},
{
"id": "hgpxhG98rsxpEmiU",
"name": "leads",
"createdAt": "2026-06-05T09:36:54.051Z",
"updatedAt": "2026-06-05T09:36:54.051Z"
},
{
"id": "q2zfa6svbBeeEAek",
"name": "sales",
"createdAt": "2026-06-10T06:29:12.577Z",
"updatedAt": "2026-06-10T06:29:12.577Z"
},
{
"id": "hzD1FMH6jZ1ATtJz",
"name": "phantombuster",
"createdAt": "2026-06-10T06:29:12.612Z",
"updatedAt": "2026-06-10T06:29:12.612Z"
}
],
"nodes": [
{
"id": "e98fd53c-d38f-425a-837b-d8e51991cb45",
"name": "\ud83d\udccc Workflow Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2016,
720
],
"parameters": {
"color": 4,
"width": 476,
"height": 540,
"content": "# \ud83d\ude80 LinkedIn Profile Enrichment Pipeline\n\n**What this workflow does:**\n1. Reads LinkedIn profile URLs from a Google Sheet\n2. Scrapes full profile data via PhantomBuster\n3. Enriches company data via a second PhantomBuster agent\n4. Discovers work email via Hunter.io \u2192 falls back to Dropcontact\n5. Writes all enriched data back to the same Google Sheet\n\n---\n**\u26a1 Quick Setup (5 steps):**\n1. Set up your Google Sheets credential\n2. Set up your PhantomBuster credential\n3. Set up your Hunter.io credential\n4. Set up your Dropcontact credential\n5. Fill in the **\u2699\ufe0f Pipeline Configuration** node with your IDs\n\n**\ud83d\udccb Sheet Requirements:**\n- Sheet tab named exactly: `Leads`\n- Column A must be named: `linkedin_url`\n- See Setup Guide sticky note for full column list"
},
"typeVersion": 1
},
{
"id": "34382a75-f510-438a-a2ad-e336a4d04a1c",
"name": "\ud83d\udccc Section 1: Triggers",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1456,
496
],
"parameters": {
"color": 5,
"width": 436,
"height": 248,
"content": "## \u2699\ufe0f SECTION 1: TRIGGERS\n\n**Schedule Trigger:** Runs automatically every day at 8:00 AM.\nActivate this when you're ready to go to production.\n\n**Manual Trigger:** Click 'Execute Workflow' to run immediately.\nUse this for testing and one-off runs.\n\n> \ud83d\udca1 Only ONE trigger should be active at a time.\n> Disable the Schedule Trigger while testing."
},
"typeVersion": 1
},
{
"id": "7f15fb95-dd80-4ba5-94a7-5349d411b847",
"name": "\ud83d\udccc Section 2: Configuration",
"type": "n8n-nodes-base.stickyNote",
"position": [
-992,
464
],
"parameters": {
"color": 6,
"width": 600,
"height": 372,
"content": "## \u2699\ufe0f SECTION 2: CONFIGURATION\n\n**Fill in the node to the right with your values:**\n\n| Field | | What to put |\n|:------------------------------:|--------|:------------------------------------------------------:|\n| GOOGLE_SHEET_ID | | The ID from your Google Sheet URL |\n| PHANTOMBUSTER_PROFILE_AGENT_ID | | Your PhantomBuster 'LinkedIn Profile Scraper' agent ID |\n| PHANTOMBUSTER_COMPANY_AGENT_ID | | Your PhantomBuster 'LinkedIn Company Scraper' agent ID |\n| LINKEDIN_SESSION_COOKIE | | Your li_at cookie from LinkedIn |\n| LINKEDIN_IDENTITY_ID | | Your PhantomBuster identity ID |\n| USER_AGENT | | Your browser's user agent string |\n| SLACK_WEBHOOK_URL | | Your Slack incoming webhook URL (optional) |\n\n> \u26a0\ufe0f **Keep your LinkedIn session cookie private.**\n> Rotate it if you suspect it has been exposed."
},
"typeVersion": 1
},
{
"id": "42aafd46-e339-4d4b-96fd-11550811a404",
"name": "\ud83d\udccc Section 3: Input & Filtering",
"type": "n8n-nodes-base.stickyNote",
"position": [
-816,
1072
],
"parameters": {
"color": 5,
"width": 520,
"height": 428,
"content": "## \ud83d\udccb SECTION 3: INPUT & FILTERING\n\n**Google Sheet tab name:** `Leads`\n\n**Required columns in your sheet:**\n- `linkedin_url` \u2014 input (Column A)\n- `enrichment_status` \u2014 output (leave blank for new leads)\n- `first_name`, `last_name`, `email`, `phone_numer`, `Company name`, `role`, `website`, `email_source`\n\n**Filter logic:**\nOnly processes rows where:\n- `linkedin_url` is NOT empty\n- `enrichment_status` is empty (not yet processed)\n- `first_name` is empty (not yet enriched)\n\n**Batch size:** 5 leads per batch with a 3-second pause between batches.\n\n> \ud83d\udca1 To reprocess a lead, clear Column B (enrichment_status) in the sheet."
},
"typeVersion": 1
},
{
"id": "ed6ad884-bbad-4cc4-8b8a-8500235b7587",
"name": "\ud83d\udccc Section 4: LinkedIn Profile Scraper",
"type": "n8n-nodes-base.stickyNote",
"position": [
384,
448
],
"parameters": {
"color": 3,
"width": 520,
"height": 424,
"content": "## \ud83d\udc64 SECTION 4: LINKEDIN PROFILE SCRAPER\n\n**PhantomBuster Agent:** LinkedIn Profile Scraper\n\nThis agent visits each LinkedIn profile URL and extracts:\n- First name, last name\n- Current job title\n- Company name + LinkedIn company URL\n- Location, headline\n\n**Wait time: 60 seconds**\nThis gives PhantomBuster enough time to process the job in its queue. Increase to 90s if you experience timeouts on slower plans.\n\n> \ud83d\udca1 You must have the LinkedIn Profile Scraper Phantom set up in your PhantomBuster account.\n> Set the agent to accept a `spreadsheetUrl` argument (the profile URL)."
},
"typeVersion": 1
},
{
"id": "f1e2498f-bc40-488c-93f3-98b01928ba5a",
"name": "\ud83d\udccc Section 5: Company Enrichment Scraper",
"type": "n8n-nodes-base.stickyNote",
"position": [
1152,
304
],
"parameters": {
"color": 3,
"width": 520,
"height": 444,
"content": "## \ud83c\udfe2 SECTION 5: COMPANY ENRICHMENT SCRAPER\n\n**PhantomBuster Agent:** LinkedIn Company Scraper\n\nUsing the company LinkedIn URL extracted in Section 4, this agent fetches:\n- Company website / domain\n- Employee count\n- Industry\n\n**Wait time: 70 seconds**\nCompany pages may take slightly longer. Increase to 90s if needed.\n\n> \ud83d\udca1 You need a separate 'LinkedIn Company Scraper' Phantom.\n> It accepts a `spreadsheetUrl` argument (the company LinkedIn URL).\n\n> \u26a0\ufe0f If the profile has no linked company, this step will still run but return empty results. That's handled gracefully downstream."
},
"typeVersion": 1
},
{
"id": "e2b0c08a-1a67-4c1c-9f2b-949437830586",
"name": "\ud83d\udccc Section 6: Email Discovery",
"type": "n8n-nodes-base.stickyNote",
"position": [
1728,
368
],
"parameters": {
"color": 3,
"width": 520,
"height": 380,
"content": "## \ud83d\udce7 SECTION 6: EMAIL DISCOVERY\n\n**Provider 1: Hunter.io**\nSearches for a professional email using first name, last name, and company domain.\n\u2705 On success \u2192 writes email immediately\n\u274c On failure \u2192 falls back to Dropcontact\n\n**Provider 2: Dropcontact**\nFull contact enrichment using LinkedIn profile data.\nDropcontact waits internally (configured for 60s).\n\u2705 On success \u2192 writes email\n\u274c On failure \u2192 writes profile data without email (`Email Not Found` status)\n\n> \ud83d\udca1 Hunter.io is faster and cheaper for high-volume.\n> Dropcontact has better European coverage.\n> You can swap providers by reordering the nodes."
},
"typeVersion": 1
},
{
"id": "101dd1aa-d6cc-46a6-8359-9d36460d1396",
"name": "\ud83d\udccc Section 7: Output & Notifications",
"type": "n8n-nodes-base.stickyNote",
"position": [
3008,
1232
],
"parameters": {
"color": 2,
"width": 520,
"height": 376,
"content": "## \ud83d\udcbe SECTION 7: OUTPUT & NOTIFICATIONS\n\n**Two write paths:**\n1. **With email found** \u2192 `enrichment_status = Enriched`\n2. **Without email** \u2192 `enrichment_status = Email Not Found`\n3. **Invalid URL** \u2192 `enrichment_status = Failed`\n\n**Slack Notification:**\nFires after every completed batch with a summary.\nLeave `SLACK_WEBHOOK_URL` empty in Configuration to disable.\n\n**Wait Between Batches:**\n3 seconds between each batch of 5 to respect rate limits.\n\n> \ud83d\udca1 To add more output columns, modify the\n> 'Write Enriched Lead' Google Sheets node\n> and add the column to your sheet header row."
},
"typeVersion": 1
},
{
"id": "7dfd29aa-7609-465a-ab92-cd8cb90355ab",
"name": "\ud83d\udccc Troubleshooting Guide",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1472,
1200
],
"parameters": {
"width": 440,
"height": 456,
"content": "## \ud83d\udd27 TROUBLESHOOTING\n\n**PhantomBuster returns empty output:**\n- Increase Wait node from 60s to 90s\n- Check your LinkedIn session cookie is still valid\n- Verify the agent is active and not paused in PhantomBuster\n\n**Hunter returns no email:**\n- Ensure the company domain was correctly extracted\n- The lead's email may not be in Hunter's database\n\n**Google Sheets fails to update:**\n- Confirm sheet tab is named exactly `Leads`\n- Ensure `row_number` header exists\n- Confirm your Google Sheets credential has edit access\n\n**Workflow runs but no leads processed:**\n- Check column A has valid linkedin.com/in/ URLs\n- Confirm `enrichment_status` column is empty for target rows"
},
"typeVersion": 1
},
{
"id": "27fe1e91-b186-4228-b92b-dc5c2dde7c67",
"name": "\u25b6\ufe0f Manual Trigger",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1232,
800
],
"parameters": {},
"typeVersion": 1
},
{
"id": "3acb44b9-8547-47a4-87f3-8103d72eb0ff",
"name": "\u23f0 Schedule Trigger (Daily 8AM)",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-1216,
1024
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 8 * * *"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "52a84938-b0b5-486b-86ab-121eb7cd09e9",
"name": "\u2699\ufe0f Pipeline Configuration",
"type": "n8n-nodes-base.set",
"position": [
-1008,
880
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "cfg-sheet-id",
"name": "GOOGLE_SHEET_ID",
"type": "string",
"value": "REPLACE_WITH_YOUR_GOOGLE_SHEET_ID"
},
{
"id": "cfg-pb-profile",
"name": "PHANTOMBUSTER_PROFILE_AGENT_ID",
"type": "string",
"value": "REPLACE_WITH_YOUR_PROFILE_SCRAPER_AGENT_ID"
},
{
"id": "cfg-pb-company",
"name": "PHANTOMBUSTER_COMPANY_AGENT_ID",
"type": "string",
"value": "REPLACE_WITH_YOUR_COMPANY_SCRAPER_AGENT_ID"
},
{
"id": "cfg-li-cookie",
"name": "LINKEDIN_SESSION_COOKIE",
"type": "string",
"value": "REPLACE_WITH_YOUR_LINKEDIN_LI_AT_COOKIE"
},
{
"id": "cfg-li-identity",
"name": "LINKEDIN_IDENTITY_ID",
"type": "string",
"value": "REPLACE_WITH_YOUR_PHANTOMBUSTER_IDENTITY_ID"
},
{
"id": "cfg-user-agent",
"name": "USER_AGENT",
"type": "string",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
},
{
"id": "cfg-slack",
"name": "SLACK_WEBHOOK_URL",
"type": "string",
"value": "REPLACE_WITH_YOUR_SLACK_WEBHOOK_URL_OR_LEAVE_EMPTY"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "569cb5c1-cdc3-4fde-b6a3-75080c0e3c10",
"name": "\ud83d\udccb Read Leads from Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
-816,
880
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Leads"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.GOOGLE_SHEET_ID }}"
}
},
"typeVersion": 4.4
},
{
"id": "e6a10241-00b4-45c2-bd0b-f2165927dcbb",
"name": "\ud83d\udd0d Filter Unprocessed Leads",
"type": "n8n-nodes-base.code",
"position": [
-592,
880
],
"parameters": {
"jsCode": "try {\n const items = $input.all();\n\n /** @type {any[]} */\n const filtered = [];\n\n items.forEach((item, index) => {\n const row = item.json;\n const linkedinUrl = (row.linkedin_url || '').toString().trim();\n const enrichStatus = (row.enrichment_status || '').toString().trim();\n const firstName = (row.first_name || '').toString().trim();\n\n // Only process rows that:\n // 1. Have a LinkedIn URL\n // 2. Have NOT already been enriched\n // 3. Have NOT already been filled with a first_name\n if (linkedinUrl !== '' && enrichStatus === '' && firstName === '') {\n filtered.push({\n json: {\n ...row,\n row_number: index + 2, // +2 accounts for the header row\n linkedin_url: linkedinUrl\n }\n });\n }\n });\n\n if (filtered.length === 0) {\n // Return a sentinel item so downstream nodes don't error on empty input\n return [{ json: { message: 'No unprocessed leads found.', total_leads: 0 } }];\n }\n\n return filtered;\n\n} catch (e) {\n throw new Error('Filter Unprocessed Leads failed: ' + e.message);\n}"
},
"typeVersion": 2
},
{
"id": "73097b95-702c-4348-b930-35e548f49fc1",
"name": "\u26a1 Process in Batches (5 at a time)",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-320,
880
],
"parameters": {
"options": {},
"batchSize": 5
},
"typeVersion": 3
},
{
"id": "ec11d526-b860-483a-8722-2b31f860a0ec",
"name": "\ud83d\udd14 Notify Slack on Batch Complete",
"type": "n8n-nodes-base.httpRequest",
"position": [
-80,
752
],
"parameters": {
"url": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.SLACK_WEBHOOK_URL }}",
"method": "POST",
"options": {},
"jsonBody": "={{ JSON.stringify({\n text: '\u2705 *LinkedIn Enrichment Batch Complete*\\n\\n' +\n '\ud83d\udcca Processed: ' + $input.all().length + ' leads\\n' +\n '\u2709\ufe0f With email: ' + $input.all().filter(i => i.json.enrichment_status === 'Enriched').length + '\\n' +\n '\u26a0\ufe0f No email found: ' + $input.all().filter(i => i.json.enrichment_status === 'Email Not Found').length + '\\n' +\n '\u274c Failed: ' + $input.all().filter(i => i.json.enrichment_status === 'Failed').length + '\\n' +\n '\ud83d\udd50 ' + new Date().toISOString(),\n channel: '#lead-enrichment-alerts'\n}) }}",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2
},
{
"id": "6098b424-9dc2-411d-a882-f835fad47fa9",
"name": "\u2705 Validate LinkedIn URL Format",
"type": "n8n-nodes-base.code",
"position": [
-80,
1024
],
"parameters": {
"jsCode": "try {\n const allItems = $input.all();\n const results = [];\n\n // Accepts standard LinkedIn /in/ profile URLs\n // Strips query strings and trailing slashes for cleanliness\n const linkedinRegex = /^https?:\\/\\/(www\\.)?linkedin\\.com\\/in\\/[a-zA-Z0-9._%-]+\\/?(\\?.*)?$/i;\n\n for (const item of allItems) {\n const data = item.json;\n const url = (data.linkedin_url || '').toString().trim();\n const isValid = linkedinRegex.test(url);\n\n let cleanUrl = null;\n let username = null;\n\n if (isValid) {\n // Normalise: strip query params and trailing slash\n cleanUrl = url.split('?')[0].split('#')[0].replace(/\\/$/, '');\n const match = cleanUrl.match(/linkedin\\.com\\/in\\/([a-zA-Z0-9._%-]+)/i);\n username = match ? match[1] : null;\n }\n\n results.push({\n json: {\n ...data,\n linkedin_url: cleanUrl || url,\n linkedin_username: username,\n url_valid: isValid,\n validation_error: isValid ? null : 'Invalid LinkedIn URL: ' + url\n }\n });\n }\n\n return results;\n\n} catch (e) {\n return [{ json: { url_valid: false, validation_error: e.message } }];\n}"
},
"typeVersion": 2
},
{
"id": "d3d3e9ff-3570-4498-96be-652499be96ce",
"name": "\ud83d\udd00 Route: Valid URL?",
"type": "n8n-nodes-base.if",
"position": [
112,
1024
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "url-valid-check",
"operator": {
"type": "boolean",
"operation": "true"
},
"leftValue": "={{ $json.url_valid }}",
"rightValue": true
}
]
}
},
"typeVersion": 2
},
{
"id": "c7baff58-2de5-4108-b43d-b1016a3df918",
"name": "\u26a0\ufe0f Mark: Invalid URL",
"type": "n8n-nodes-base.set",
"position": [
400,
1152
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "b1",
"name": "enrichment_status",
"type": "string",
"value": "Failed"
},
{
"id": "b2",
"name": "error_message",
"type": "string",
"value": "={{ $json.validation_error || 'Invalid LinkedIn URL format' }}"
},
{
"id": "b3",
"name": "processed_at",
"type": "string",
"value": "={{ new Date().toISOString() }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.3
},
{
"id": "4ae0be36-0482-41a4-be7d-3e085e3fd576",
"name": "\ud83d\udcbe Update: Invalid URL Status",
"type": "n8n-nodes-base.googleSheets",
"position": [
592,
1152
],
"parameters": {
"columns": {
"value": {
"row_number": "={{ $json.row_number }}",
"enrichment_status": "={{ $json.enrichment_status }}"
},
"schema": [
{
"id": "linkedin_url",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "linkedin_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "enrichment_status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "enrichment_status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "first_name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "first_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Leads"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.GOOGLE_SHEET_ID }}"
}
},
"typeVersion": 4.4
},
{
"id": "44f15c82-f260-457c-a6c1-c13d9243e109",
"name": "\ud83d\ude80 Launch: LinkedIn Profile Scraper",
"type": "n8n-nodes-base.phantombuster",
"position": [
400,
912
],
"parameters": {
"agentId": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.PHANTOMBUSTER_PROFILE_AGENT_ID }}",
"additionalFields": {
"argumentsUi": {
"argumentValues": [
{
"key": "spreadsheetUrl",
"value": "={{ $json.linkedin_url }}"
},
{
"key": "identityId",
"value": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.LINKEDIN_IDENTITY_ID }}"
},
{
"key": "sessionCookie",
"value": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.LINKEDIN_SESSION_COOKIE }}"
},
{
"key": "userAgent",
"value": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.USER_AGENT }}"
}
]
}
}
},
"typeVersion": 1
},
{
"id": "21a17cd0-0e37-4339-ba47-91956b732b0c",
"name": "\u23f3 Wait: Profile Scraper (60s)",
"type": "n8n-nodes-base.wait",
"position": [
592,
912
],
"parameters": {
"amount": 60
},
"typeVersion": 1.1
},
{
"id": "7cc2706e-d6c9-4401-ac06-0327d9cd4bf1",
"name": "\ud83d\udce5 Fetch: Profile Scraper Results",
"type": "n8n-nodes-base.phantombuster",
"position": [
800,
912
],
"parameters": {
"agentId": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.PHANTOMBUSTER_PROFILE_AGENT_ID }}",
"operation": "getOutput",
"additionalFields": {}
},
"typeVersion": 1
},
{
"id": "7565bb3d-6ae4-4621-8042-093c4eea2c23",
"name": "\ud83d\udd00 Route: Profile Data Found?",
"type": "n8n-nodes-base.if",
"position": [
976,
912
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "has-first-name",
"operator": {
"type": "string",
"operation": "notEmpty"
},
"leftValue": "={{ $json.firstName }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "8489cf4a-e107-4517-8d09-a1103b59b6c6",
"name": "\u26a0\ufe0f Mark: No Profile Data",
"type": "n8n-nodes-base.set",
"position": [
1216,
1024
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "c1",
"name": "enrichment_status",
"type": "string",
"value": "Failed"
},
{
"id": "c2",
"name": "error_message",
"type": "string",
"value": "No profile data returned from PhantomBuster. Check your LinkedIn session cookie and agent configuration."
},
{
"id": "c3",
"name": "processed_at",
"type": "string",
"value": "={{ new Date().toISOString() }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "51932ba4-8530-4163-b60d-2b9b2c6c30e1",
"name": "\ud83d\udcbe Update: No Profile Status",
"type": "n8n-nodes-base.googleSheets",
"position": [
1424,
1024
],
"parameters": {
"columns": {
"value": {
"row_number": "={{ $('\u26a1 Process in Batches (5 at a time)').item.json.row_number }}",
"enrichment_status": "={{ $json.enrichment_status }}"
},
"schema": [
{
"id": "enrichment_status",
"type": "string",
"display": true,
"required": false,
"displayName": "enrichment_status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Leads"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.GOOGLE_SHEET_ID }}"
}
},
"typeVersion": 4.4
},
{
"id": "cbde98c5-f6b4-4c43-93d1-32f25b03e019",
"name": "\ud83d\ude80 Launch: Company Enrichment Scraper",
"type": "n8n-nodes-base.phantombuster",
"position": [
1216,
784
],
"parameters": {
"agentId": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.PHANTOMBUSTER_COMPANY_AGENT_ID }}",
"additionalFields": {
"argumentsUi": {
"argumentValues": [
{
"key": "spreadsheetUrl",
"value": "={{ $json.linkedinCompanyUrl }}"
},
{
"key": "identityId",
"value": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.LINKEDIN_IDENTITY_ID }}"
},
{
"key": "sessionCookie",
"value": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.LINKEDIN_SESSION_COOKIE }}"
},
{
"key": "userAgent",
"value": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.USER_AGENT }}"
}
]
}
}
},
"typeVersion": 1
},
{
"id": "144a5669-7c21-46c5-950d-a303d163c86f",
"name": "\u23f3 Wait: Company Scraper (70s)",
"type": "n8n-nodes-base.wait",
"position": [
1392,
784
],
"parameters": {
"amount": 70
},
"typeVersion": 1.1
},
{
"id": "53096a72-4324-457c-9d86-05629ede87c0",
"name": "\ud83d\udce5 Fetch: Company Scraper Results",
"type": "n8n-nodes-base.phantombuster",
"position": [
1568,
784
],
"parameters": {
"agentId": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.PHANTOMBUSTER_COMPANY_AGENT_ID }}",
"operation": "getOutput",
"additionalFields": {}
},
"typeVersion": 1
},
{
"id": "96dfbb30-87fd-400b-adb2-b7132882ed76",
"name": "\ud83d\udd0d Find Email: Hunter.io",
"type": "n8n-nodes-base.hunter",
"position": [
1760,
784
],
"parameters": {
"domain": "={{ $json.domain || $('\ud83d\udce5 Fetch: Company Scraper Results').item.json.domain || '' }}",
"lastname": "={{ $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.lastName }}",
"firstname": "={{ $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.firstName }}",
"operation": "emailFinder"
},
"typeVersion": 1
},
{
"id": "01ff830e-ff7b-42f9-9b8d-79b85dfa5619",
"name": "\ud83d\udd00 Route: Hunter Email Found?",
"type": "n8n-nodes-base.if",
"position": [
1920,
784
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "hunter-email",
"operator": {
"type": "string",
"operation": "notEmpty"
},
"leftValue": "={{ $json.email }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "8f13f9c3-53ad-4f53-8e74-913b50519c7d",
"name": "\ud83d\udce7 Set: Hunter Email Data",
"type": "n8n-nodes-base.set",
"position": [
2496,
656
],
"parameters": {
"options": {
"includeBinary": false
},
"assignments": {
"assignments": [
{
"id": "h1",
"name": "work_email",
"type": "string",
"value": "={{ $json.email || $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.professionalEmail || '' }}"
},
{
"id": "h3",
"name": "email_source",
"type": "string",
"value": "hunter"
},
{
"id": "h4",
"name": "phone_number",
"type": "string",
"value": "={{ $json.phone_number || $('\ud83d\udce5 Fetch: Company Scraper Results').item.json.phone || '' }}"
},
{
"id": "h5",
"name": "company_website",
"type": "string",
"value": "={{ $('\ud83d\udce5 Fetch: Company Scraper Results').item.json.website || $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.companyWebsite || '' }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "49d1e66d-82b8-4ede-8596-6ee1c1baf7e6",
"name": "\ud83d\udd0d Enrich Contact: Dropcontact",
"type": "n8n-nodes-base.dropcontact",
"position": [
2160,
864
],
"parameters": {
"email": "={{ $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.professionalEmail || $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.firstName || '' }}{{ $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.lastName || '' }}@{{ $('\ud83d\udce5 Fetch: Company Scraper Results').item.json.domain || '' }}",
"options": {
"waitTime": 60
},
"additionalFields": {
"company": "={{ $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.companyName || '' }}",
"country": "={{ $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.location || '' }}",
"website": "={{ $('\ud83d\udce5 Fetch: Company Scraper Results').item.json.website || '' }}",
"linkedin": "={{ $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.linkedinProfileUrl }}",
"full_name": "={{ $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.scraperFullName || '' }}",
"last_name": "={{ $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.lastName || '' }}",
"first_name": "={{ $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.firstName || '' }}"
}
},
"typeVersion": 1
},
{
"id": "8c41223e-26bb-4e81-a306-71730a5ee22e",
"name": "\u23f3 Wait: Dropcontact Response",
"type": "n8n-nodes-base.wait",
"position": [
2336,
864
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "e9df6bc7-004c-44d8-819e-eb471a4b0e7d",
"name": "\ud83d\udd00 Route: Dropcontact Email Found?",
"type": "n8n-nodes-base.if",
"position": [
2528,
864
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "dc-email",
"operator": {
"type": "string",
"operation": "notEmpty"
},
"leftValue": "={{ $json.email[0].email }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "c4a8f6dc-1f54-4b0e-bb8d-0aa234ab15eb",
"name": "\ud83d\udce7 Set: Dropcontact Email Data",
"type": "n8n-nodes-base.set",
"position": [
2800,
784
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "d1",
"name": "work_email",
"type": "string",
"value": "={{ $json.email[0].email || $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.professionalEmail || '' }}"
},
{
"id": "d3",
"name": "email_source",
"type": "string",
"value": "dropcontact"
},
{
"id": "d4",
"name": "phone_number",
"type": "string",
"value": "={{ $json.phone || $('\ud83d\udce5 Fetch: Company Scraper Results').item.json.phone || '' }}"
},
{
"id": "d5",
"name": "company_website",
"type": "string",
"value": "={{ $json.website || $('\ud83d\udce5 Fetch: Company Scraper Results').item.json.website || $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.companyWebsite || '' }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "8b3ed9ce-0168-400d-9425-d8d82510e5c7",
"name": "\ud83d\udccb Compile: Profile Without Email",
"type": "n8n-nodes-base.set",
"position": [
2816,
960
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ef1",
"name": "first_name",
"type": "string",
"value": "={{ $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.firstName || '' }}"
},
{
"id": "ef2",
"name": "last_name",
"type": "string",
"value": "={{ $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.lastName || '' }}"
},
{
"id": "ef3",
"name": "company_name",
"type": "string",
"value": "={{ $('\ud83d\udce5 Fetch: Company Scraper Results').first().json.companyName || $('\ud83d\udce5 Fetch: Profile Scraper Results').first().json.linkedinCompanySlug || '' }}"
},
{
"id": "ef4",
"name": "phone",
"type": "string",
"value": "={{ $json.phone_number || $('\ud83d\udce5 Fetch: Company Scraper Results').item.json.phone || '' }}"
},
{
"id": "ef5",
"name": "website",
"type": "string",
"value": "={{ $('\ud83d\udce5 Fetch: Company Scraper Results').item.json.website || $('\ud83d\udce5 Fetch: Profile Scraper Results').item.json.companyWebsite || '' }}"
},
{
"id": "ef6",
"name": "role",
"type": "string",
"value": "={{ $('\ud83d\udce5 Fetch: Profile Scraper Results').first().json.linkedinJobTitle || '' }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d4caecf3-47c6-4a2f-8459-8ae388924f92",
"name": "\ud83d\udd17 Compile Final Lead Record",
"type": "n8n-nodes-base.code",
"position": [
3088,
720
],
"parameters": {
"jsCode": "const item = $input.first().json;\n\nreturn [{\n json: {\n ...item,\n first_name: $('\ud83d\udce5 Fetch: Profile Scraper Results').first().json.firstName || '',\n last_name: $('\ud83d\udce5 Fetch: Profile Scraper Results').first().json.lastName || '',\n company_name: $('\ud83d\udce5 Fetch: Company Scraper Results').first().json.companyName ||\n $('\ud83d\udce5 Fetch: Profile Scraper Results').first().json.linkedinCompanySlug || '',\n role: $('\ud83d\udce5 Fetch: Profile Scraper Results').first().json.linkedinJobTitle || ''\n }\n}];"
},
"typeVersion": 2
},
{
"id": "a642b26b-57fa-4669-b801-f2c02413e51c",
"name": "\u2705 Write: Enriched Lead (With Email)",
"type": "n8n-nodes-base.googleSheets",
"position": [
3296,
720
],
"parameters": {
"columns": {
"value": {
"role": "={{ $json.role || '' }}",
"email": "={{ $json.work_email || '' }}",
"website": "={{ $json.company_website || '' }}",
"last_name": "={{ $json.last_name || '' }}",
"first_name": "={{ $json.first_name || '' }}",
"row_number": "={{ $('\u26a1 Process in Batches (5 at a time)').item.json.row_number }}",
"phone_numer": "={{ $json.phone_number || '' }}",
"Company name": "={{ $json.company_name || '' }}",
"email_source": "={{ $json.email_source || '' }}",
"enrichment_status": "Enriched"
},
"schema": [
{
"id": "linkedin_url",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "linkedin_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "enrichment_status",
"type": "string",
"display": true,
"required": false,
"displayName": "enrichment_status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "first_name",
"type": "string",
"display": true,
"required": false,
"displayName": "first_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "last_name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "last_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "phone_numer",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "phone_numer",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Company name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "role",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "role",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "website",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email_source",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "email_source",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Leads"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.GOOGLE_SHEET_ID }}"
}
},
"typeVersion": 4.4
},
{
"id": "87c5aa77-6f45-43b1-b645-4a3ee00bce47",
"name": "\ud83d\udccb Write: Enriched Lead (No Email)",
"type": "n8n-nodes-base.googleSheets",
"position": [
3104,
960
],
"parameters": {
"columns": {
"value": {
"role": "={{ $json.role || '' }}",
"website": "={{ $json.website || '' }}",
"last_name": "={{ $json.last_name || '' }}",
"first_name": "={{ $json.first_name || '' }}",
"row_number": "={{ $('\u26a1 Process in Batches (5 at a time)').item.json.row_number }}",
"phone_numer": "={{ $json.phone || '' }}",
"Company name": "={{ $json.company_name || '' }}",
"enrichment_status": "Email Not Found"
},
"schema": [
{
"id": "linkedin_url",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "linkedin_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "enrichment_status",
"type": "string",
"display": true,
"required": false,
"displayName": "enrichment_status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "first_name",
"type": "string",
"display": true,
"required": false,
"displayName": "first_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "last_name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "last_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "phone_numer",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "phone_numer",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Company name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "role",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "role",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "website",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Leads"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('\u2699\ufe0f Pipeline Configuration').item.json.GOOGLE_SHEET_ID }}"
}
},
"typeVersion": 4.4
},
{
"id": "a9ddafda-d734-415e-9ffa-78784fa7bfd3",
"name": "\u23f3 Wait Between Batches (3s)",
"type": "n8n-nodes-base.wait",
"position": [
3552,
1024
],
"parameters": {
"amount": 3
},
"typeVersion": 1.1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "9e8a5357-ad28-47ed-b179-bd1f0bcfd22a",
"connections": {
"\u25b6\ufe0f Manual Trigger": {
"main": [
[
{
"node": "\u2699\ufe0f Pipeline Configuration",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udd00 Route: Valid URL?": {
"main": [
[
{
"node": "\ud83d\ude80 Launch: LinkedIn Profile Scraper",
"type": "main",
"index": 0
}
],
[
{
"node": "\u26a0\ufe0f Mark: Invalid URL",
"type": "main",
"index": 0
}
]
]
},
"\u26a0\ufe0f Mark: Invalid URL": {
"main": [
[
{
"node": "\ud83d\udcbe Update: Invalid URL Status",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udd0d Find Email: Hunter.io": {
"main": [
[
{
"node": "\ud83d\udd00 Route: Hunter Email Found?",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udce7 Set: Hunter Email Data": {
"main": [
[
{
"node": "\ud83d\udd17 Compile Final Lead Record",
"type": "main",
"index": 0
}
]
]
},
"\u26a0\ufe0f Mark: No Profile Data": {
"main": [
[
{
"node": "\ud83d\udcbe Update: No Profile Status",
"type": "main",
"index": 0
}
]
]
},
"\u23f3 Wait Between Batches (3s)": {
"main": [
[
{
"node": "\u26a1 Process in Batches (5 at a time)",
"type": "main",
"index": 0
}
]
]
},
"\u2699\ufe0f Pipeline Configuration": {
"main": [
[
{
"node": "\ud83d\udccb Read Leads from Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udd0d Filter Unprocessed Leads": {
"main": [
[
{
"node": "\u26a1 Process in Batches (5 at a time)",
"type": "main",
"index": 0
}
]
]
},
"\u23f3 Wait: Dropcontact Response": {
"main": [
[
{
"node": "\ud83d\udd00 Route: Dropcontact Email Found?",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udcbe Update: No Profile Status": {
"main": [
[
{
"node": "\u23f3 Wait Between Batches (3s)",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udd17 Compile Final Lead Record": {
"main": [
[
{
"node": "\u2705 Write: Enriched Lead (With Email)",
"type": "main",
"index": 0
}
]
]
},
"\u23f3 Wait: Company Scraper (70s)": {
"main": [
[
{
"node": "\ud83d\udce5 Fetch: Company Scraper Results",
"type": "main",
"index": 0
}
]
]
},
"\u23f3 Wait: Profile Scraper (60s)": {
"main": [
[
{
"node": "\ud83d\udce5 Fetch: Profile Scraper Results",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udcbe Update: Invalid URL Status": {
"main": [
[
{
"node": "\u23f3 Wait Between Batches (3s)",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udd00 Route: Hunter Email Found?": {
"main": [
[
{
"node": "\ud83d\udce7 Set: Hunter Email Data",
"type": "main",
"index": 0
}
],
[
{
"node": "\ud83d\udd0d Enrich Contact: Dropcontact",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udd00 Route: Profile Data Found?": {
"main": [
[
{
"node": "\ud83d\ude80 Launch: Company Enrichment Scraper",
"type": "main",
"index": 0
}
],
[
{
"node": "\u26a0\ufe0f Mark: No Profile Data",
"type": "main",
"index": 0
}
]
]
},
"\u23f0 Schedule Trigger (Daily 8AM)": {
"main": [
[
{
"node": "\u2699\ufe0f Pipeline Configuration",
"type": "main",
"index": 0
}
]
]
},
"\u2705 Validate LinkedIn URL Format": {
"main": [
[
{
"node": "\ud83d\udd00 Route: Valid URL?",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udce7 Set: Dropcontact Email Data": {
"main": [
[
{
"node": "\ud83d\udd17 Compile Final Lead Record",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udd0d Enrich Contact: Dropcontact": {
"main": [
[
{
"node": "\u23f3 Wait: Dropcontact Response",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udccb Read Leads from Google Sheets": {
"main": [
[
{
"node": "\ud83d\udd0d Filter Unprocessed Leads",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udccb Compile: Profile Without Email": {
"main": [
[
{
"node": "\ud83d\udccb Write: Enriched Lead (No Email)",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udce5 Fetch: Company Scraper Results": {
"main": [
[
{
"node": "\ud83d\udd0d Find Email: Hunter.io",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udce5 Fetch: Profile Scraper Results": {
"main": [
[
{
"node": "\ud83d\udd00 Route: Profile Data Found?",
"type": "main",
"index": 0
}
]
]
},
"\u26a1 Process in Batches (5 at a time)": {
"main": [
[
{
"node": "\ud83d\udd14 Notify Slack on Batch Complete",
"type": "main",
"index": 0
}
],
[
{
"node": "\u2705 Validate LinkedIn URL Format",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udccb Write: Enriched Lead (No Email)": {
"main": [
[
{
"node": "\u23f3 Wait Between Batches (3s)",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udd00 Route: Dropcontact Email Found?": {
"main": [
[
{
"node": "\ud83d\udce7 Set: Dropcontact Email Data",
"type": "main",
"index": 0
}
],
[
{
"node": "\ud83d\udccb Compile: Profile Without Email",
"type": "main",
"index": 0
}
]
]
},
"\u2705 Write: Enriched Lead (With Email)": {
"main": [
[
{
"node": "\u23f3 Wait Between Batches (3s)",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\ude80 Launch: LinkedIn Profile Scraper": {
"main": [
[
{
"node": "\u23f3 Wait: Profile Scraper (60s)",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\ude80 Launch: Company Enrichment Scraper": {
"main": [
[
{
"node": "\u23f3 Wait: Company Scraper (70s)",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow reads LinkedIn profile URLs from Google Sheets, enriches each lead using PhantomBuster profile and company scrapers, finds a work email via Hunter.io with a Dropcontact fallback, writes results back to Google Sheets, and posts optional batch summaries to Slack.…
Source: https://n8n.io/workflows/16225/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This n8n workflow automates the process of finding ecommerce seller leads, enriching them with product and business details, discovering company websites, and extracting contact information such as em
This template is for B2B sales teams, SDRs, growth marketers, and founders who maintain a spreadsheet of prospects and need verified contact details -- emails and mobile numbers -- without manual rese
This workflow finds local businesses from Google Maps and automatically enriches them with emails, social profiles, AI summaries, and personalized outreach messages — all saved to Google Sheets. Searc
This workflow leverages n8n to perform automated Google Maps API queries and manage data efficiently in Google Sheets. It's designed to extract specific location data based on a given list of ZIP code
This repository contains an SLA-based lead routing workflow built in n8n, designed to ensure fast lead response, fair sales distribution, and controlled escalation without relying on a full CRM system