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 →
{
"name": "SLT Machine Lead Enrichment",
"nodes": [
{
"parameters": {
"httpMethod": "GET",
"path": "webhook/slt-lead-enrich",
"responseMode": "onReceived",
"responseData": {
"responseCode": 200,
"responseBody": "={\"status\": \"received\"}"
}
},
"id": "1",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [
250,
300
]
},
{
"parameters": {
"functionCode": "const url = $json.url || $json.link || $json[\"url\"];\n\n// Extract domain for company research\nconst urlObj = new URL(url);\nconst domain = urlObj.hostname.replace(/^www\\./, '');\n\nreturn [{\n ...$json,\n company_domain: domain,\n enrichment_timestamp: new Date().toISOString(),\n enrichment_step: \"domain_extracted\"\n}];"
},
"id": "2",
"name": "Extract Domain",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"position": [
450,
300
]
},
{
"parameters": {
"functionCode": "// Simple company research - in production, you'd use Clearbit, Apollo, or similar\nconst domain = $json.company_domain;\nlet company_info = {\n name: \"Unknown\",\n industry: \"Unknown\",\n description: \"Company info not available\",\n technologies: [],\n size: \"Unknown\"\n};\n\n// Basic heuristics based on domain\nif (domain.includes(\"aero\") || domain.includes(\"aviation\") || domain.includes(\"aircraft\")) {\n company_info.industry = \"Aerospace\";\n company_info.description = \"Likely aerospace components manufacturer or supplier\";\n} else if (domain.includes(\"oil\") || domain.includes(\"gas\") || domain.includes(\"energy\") || domain.includes(\"petro\")) {\n company_info.industry = \"Oil & Gas\";\n company_info.description = \"Likely energy sector equipment manufacturer or service provider\";\n} else if (domain.includes(\"med\") || domain.includes(\"health\")) {\n company_info.industry = \"Medical\";\n company_info.description = \"Likely medical device or equipment manufacturer\";\n}\n\n// Try to extract company name from domain\nconst nameParts = domain.split(\".\");\nif (nameParts.length > 0) {\n let name = nameParts[0];\n name = name.replace(/[0-9]/g, ''); // Remove numbers\n name = name.replace(/[-_]/g, ' '); // Replace hyphens/underscores with spaces\n name = name.split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');\n if (name.length > 1) {\n company_info.name = name;\n }\n}\n\nreturn [{\n ...$json,\n company_name: company_info.name,\n company_industry: company_info.industry,\n company_description: company_info.description,\n enrichment_step: \"company_researched\"\n}];"
},
"id": "3",
"name": "Research Company",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"position": [
650,
300
]
},
{
"parameters": {
"functionCode": "return [{\n ...$json,\n ready_for_sheets: true\n}];"
},
"id": "4",
"name": "Prepare for Sheets",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"position": [
850,
300
]
},
{
"parameters": {
"operation": "append",
"sheetId": "19hCNdwhOmqdgp1tqZl1AMyBmRL7ne3ZlsEoMKELz4A4",
"range": "Leads!A:Z",
"valueInputMode": "USER_ENTERED",
"addHeader": false
},
"id": "5",
"name": "Append to Google Sheet",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 1,
"position": [
1050,
300
],
"credentials": {
"googleSheetsOAuth2Api": "<your credential>"
}
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Extract Domain",
"type": "main",
"index": 0
}
]
]
},
"Extract Domain": {
"main": [
[
{
"node": "Research Company",
"type": "main",
"index": 0
}
]
]
},
"Research Company": {
"main": [
[
{
"node": "Prepare for Sheets",
"type": "main",
"index": 0
}
]
]
},
"Prepare for Sheets": {
"main": [
[
{
"node": "Append to Google Sheet",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"id": "1"
}
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.
googleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
SLT Machine Lead Enrichment. Uses googleSheets. Webhook trigger; 5 nodes.
Source: https://github.com/probabilityexchange-sketch/leadgen/blob/fd12b499a96a6c0ef11bb6afe03de7a280847af9/n8n/lead-enrichment.json — 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.
Who is this for? Solo founders, sales teams, and event organizers who need email outreach without expensive tools but want full control from Telegram.
Universal Lead Processing Workflow. Uses googleSheets, gmail, httpRequest, gmailTrigger. Webhook trigger; 34 nodes.
This workflow is designed to manage the assignment and validation of unique QR code coupons within a lead generation system with SuiteCRM.
This workflow acts as an instant SDR that replies to new inbound leads across multiple channels in real time. It first captures and normalizes all incoming lead data into a unified structure. The work
Turn a simple Google Sheet into a lightweight CRM powered by n8n.