This workflow corresponds to n8n.io template #16732 — we link there as the canonical source.
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": "GpCK3vp4ZK1smgHY",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Turn LinkedIn Sales Navigator Lists into Full Contact Profiles",
"tags": [],
"nodes": [
{
"id": "c23d0bfd-df04-4129-bf54-f77f0c5e7a8c",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-608,
-144
],
"parameters": {
"width": 480,
"height": 816,
"content": "## Turn LinkedIn Sales Navigator Lists into Full Contact Profiles\n\n### How it works\n\nThis workflow runs on a schedule to process LinkedIn Sales Navigator profile URLs stored in Google Sheets. It fetches pending profiles, loops through them one at a time, enriches each profile with email/contact data via Tomba, formats the result, and writes the completed contact profile back to the sheet.\n\n### Setup steps\n\n- Configure the Schedule Trigger with the desired run frequency.\n- Connect Google Sheets credentials and select the spreadsheet, sheet, and pending-profile filter/range for the input node.\n- Configure the Tomba credentials/API key and ensure the LinkedIn URL field from the sheet is mapped into the lookup node.\n- Verify the formatting code matches the sheet columns, then configure the update node to write enriched contact fields back to the correct row.\n\n### Customization\n\nAdjust the Google Sheets pending criteria, batch size, Tomba lookup fields, or formatting code to match your lead list structure and desired output columns."
},
"typeVersion": 1
},
{
"id": "713fa864-8eb1-4f4c-9fbe-717452a6c6b7",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-48,
-128
],
"parameters": {
"color": 7,
"width": 608,
"height": 304,
"content": "## Load pending profiles\n\nStarts on a schedule, reads pending LinkedIn profile rows from Google Sheets, and prepares them for batch processing."
},
"typeVersion": 1
},
{
"id": "4e7b91ac-67aa-413c-b3b6-ccaa91072a6b",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
624,
-144
],
"parameters": {
"color": 7,
"width": 656,
"height": 320,
"content": "## Enrich and save contacts\n\nFor each profile, looks up contact details from the LinkedIn URL using Tomba, formats the returned data, updates the corresponding Google Sheets row, and then returns control to the loop for the next profile."
},
"typeVersion": 1
},
{
"id": "41ebb88b-9628-4e00-922b-fd15de86c945",
"name": "Every Day Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
0,
0
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.3
},
{
"id": "5e85a501-24cb-4dde-98a1-3910ed885fa3",
"name": "Read LinkedIn Profiles from Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
208,
0
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "Pending",
"lookupColumn": "Status"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pBVkQk-tq2aidFvJTDXohBVpbFfkkcHhnlyGK5ZF0-g/edit#gid=0",
"cachedResultName": "linkedin profiles"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1pBVkQk-tq2aidFvJTDXohBVpbFfkkcHhnlyGK5ZF0-g",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pBVkQk-tq2aidFvJTDXohBVpbFfkkcHhnlyGK5ZF0-g/edit?usp=drivesdk",
"cachedResultName": "Tomba - LinkedIn Contact Finder"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "311e0eb1-0c84-472e-9561-61b19d1e3694",
"name": "Batch Process LinkedIn Profiles",
"type": "n8n-nodes-base.splitInBatches",
"position": [
416,
0
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "40fa9eb3-8522-4a27-82b4-caf905e8a1ba",
"name": "Retrieve Email from LinkedIn URL",
"type": "n8n-nodes-tomba.tomba",
"position": [
672,
16
],
"parameters": {
"url": "={{ $json['LinkedIn URL'] }}",
"resource": "finder",
"operation": "linkedinFinder",
"enrichMobile": true
},
"credentials": {
"tombaApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "9c3afb56-9c76-4a38-9390-10b015795940",
"name": "Format LinkedIn Contact Data",
"type": "n8n-nodes-base.code",
"position": [
880,
16
],
"parameters": {
"jsCode": "const items = $input.all();\nconst results = [];\n\nfor (const item of items) {\n const json = item.json;\n\n // Get all phone numbers if multiple exist\n const phones = json.phone_data && json.phone_data.length > 0\n ? json.phone_data.map(p => p.intl_format).join(', ')\n : \"Not Found\";\n\n results.push({\n json: {\n email: json.email || \"Not Found\",\n phone: phones,\n first_name: json.first_name || \"\",\n last_name: json.last_name || \"\",\n full_name: json.full_name || \"\",\n company: json.company || \"\",\n position: json.position || \"\",\n linkedin: json.linkedin || \"\",\n score: json.score || 0,\n verification_status: json.verification?.status || \"unknown\",\n status: json.email ? \"Enriched\" : \"Not Found\"\n }\n });\n}\n\nreturn results;"
},
"typeVersion": 2
},
{
"id": "003c89ca-448b-4b52-b7b9-1979770a9c1c",
"name": "Update LinkedIn Contacts in Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
1136,
16
],
"parameters": {
"columns": {
"value": {
"Email": "={{ $json.email }}",
"Phone": "={{ $json.phone }}",
"Score": "={{ $json.score }}",
"Status": "Done",
"row_number": "={{ $('Batch Process LinkedIn Profiles').item.json.row_number }}"
},
"schema": [
{
"id": "LinkedIn URL",
"type": "string",
"display": true,
"required": false,
"displayName": "LinkedIn URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Full Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Full Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company",
"type": "string",
"display": true,
"required": false,
"displayName": "Company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone",
"type": "string",
"display": true,
"required": false,
"displayName": "Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Score",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Score",
"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": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pBVkQk-tq2aidFvJTDXohBVpbFfkkcHhnlyGK5ZF0-g/edit#gid=0",
"cachedResultName": "linkedin profiles"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1pBVkQk-tq2aidFvJTDXohBVpbFfkkcHhnlyGK5ZF0-g",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pBVkQk-tq2aidFvJTDXohBVpbFfkkcHhnlyGK5ZF0-g/edit?usp=drivesdk",
"cachedResultName": "Tomba - LinkedIn Contact Finder"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "f26076a0-8ff1-4199-b647-ce0ec4453195",
"connections": {
"Every Day Trigger": {
"main": [
[
{
"node": "Read LinkedIn Profiles from Sheets",
"type": "main",
"index": 0
}
]
]
},
"Format LinkedIn Contact Data": {
"main": [
[
{
"node": "Update LinkedIn Contacts in Sheets",
"type": "main",
"index": 0
}
]
]
},
"Batch Process LinkedIn Profiles": {
"main": [
[],
[
{
"node": "Retrieve Email from LinkedIn URL",
"type": "main",
"index": 0
}
]
]
},
"Retrieve Email from LinkedIn URL": {
"main": [
[
{
"node": "Format LinkedIn Contact Data",
"type": "main",
"index": 0
}
]
]
},
"Read LinkedIn Profiles from Sheets": {
"main": [
[
{
"node": "Batch Process LinkedIn Profiles",
"type": "main",
"index": 0
}
]
]
},
"Update LinkedIn Contacts in Sheets": {
"main": [
[
{
"node": "Batch Process LinkedIn Profiles",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleSheetsOAuth2ApitombaApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow runs on a schedule to read “Pending” LinkedIn profile URLs from Google Sheets, uses Tomba to find and enrich contact details (email and phone), and writes the results back to the same sheet with updated status and scoring. Runs on a schedule trigger. Reads rows…
Source: https://n8n.io/workflows/16732/ — 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.
Automate your LinkedIn outreach with this n8n workflow powered by Linked API. Sends connection requests, monitors acceptance, delivers your pre-written messages, and follows up automatically – all tra
This template is ideal for sales teams, recruiters, business development professionals, and relationship managers who need to monitor changes in their network's LinkedIn profiles. Perfect for agencies
This workflow runs daily and reads a Google Sheets content calendar to auto-publish scheduled posts to Instagram and Facebook via the Meta Graph API, then posts the same content to LinkedIn and update
Save time - Eliminate manual LinkedIn posting and content scheduling tasks Stay consistent - Automated daily posting keeps your LinkedIn profile active and engaging Keep control - Preview every post b
Louis LinkedIn Automation OS. Uses googleSheets. Scheduled trigger; 24 nodes.