This workflow corresponds to n8n.io template #14348 — we link there as the canonical source.
This workflow follows the Google Sheets → Slack 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 →
{
"nodes": [
{
"id": "9455fee8-9c20-487d-8090-80dc23cfc2cb",
"name": "Fetch Tech Stack",
"type": "@predictleads/n8n-nodes-predictleads.predictLeads",
"position": [
816,
608
],
"parameters": {
"domain": "={{ $('Get Prospect List').item.json.domain }}",
"resource": "technologyDetections",
"operation": "retrieveTechnologiesUsedByCompany",
"requestOptions": {}
},
"credentials": {},
"typeVersion": 1
},
{
"id": "651982b8-1e98-4a92-be95-68ac90240ef7",
"name": "Send Slack Alert",
"type": "n8n-nodes-base.slack",
"position": [
2320,
512
],
"parameters": {
"text": "=\ud83d\ude80 High Intent Lead Detected!\n\nCompany: {{$json.domain}}\n\nIntent Score: {{$json.intent_score}}\n\nSignals Breakdown:\n- Hiring Activity: {{$json.hiring_signal}}\n- Tech Adoption: {{$json.tech_signal}}\n- News Mentions: {{$json.news_signal}}\n\nInsight:\nThis company is showing strong buying signals based on recent activity. Highly recommended for immediate outreach.\n\nNext Action:\nReach out to this prospect ASAP while intent is high.",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C0AEEATQQEP",
"cachedResultName": "buddieslab-umer"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"typeVersion": 2.4
},
{
"id": "5a46837e-6a54-4ae6-be6b-5fb1859d8a9e",
"name": "Get Prospect List",
"type": "n8n-nodes-base.googleSheets",
"position": [
256,
608
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QZfK9jlVJOaY1LZB4szOPCUm9ZDkavUd3itiL_8HLzM/edit#gid=0",
"cachedResultName": "Prospects"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1QZfK9jlVJOaY1LZB4szOPCUm9ZDkavUd3itiL_8HLzM",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QZfK9jlVJOaY1LZB4szOPCUm9ZDkavUd3itiL_8HLzM/edit?usp=drivesdk",
"cachedResultName": "11"
}
},
"typeVersion": 4.7
},
{
"id": "24a25680-83e9-414e-b033-3d25c024c8f2",
"name": "Normalize Data and Score",
"type": "n8n-nodes-base.code",
"position": [
1440,
608
],
"parameters": {
"jsCode": "return items.map((item, index) => {\n\n // \u2705 Jobs count\n const jobs = $items(\"Fetch Job Openings\")[index]?.json?.data?.length || 0;\n\n // \u2705 Tech count\n const tech = $items(\"Fetch Tech Stack\")[index]?.json?.data?.length || 0;\n\n // \u2705 News count (current node input)\n const news = item.json.data?.length || 0;\n\n // \u2705 Domain (from Google Sheet - correct source)\n const domain = $items(\"Get Prospect List\")[index]?.json?.domain || \"unknown\";\n\n // \u2705 Final scoring logic\n const score = (jobs * 5) + (tech * 3) + (news * 2);\n\n return {\n json: {\n domain,\n hiring_signal: jobs,\n tech_signal: tech,\n news_signal: news,\n intent_score: score\n }\n };\n});"
},
"typeVersion": 2
},
{
"id": "a82b0fc3-42cd-4e25-b156-e6d240a7092a",
"name": "Fetch Job Openings",
"type": "@predictleads/n8n-nodes-predictleads.predictLeads",
"position": [
576,
608
],
"parameters": {
"domain": "={{ $('Get Prospect List').item.json.domain }}",
"resource": "jobOpenings",
"operation": "retrieveCompanyJobOpenings",
"requestOptions": {}
},
"credentials": {},
"typeVersion": 1
},
{
"id": "27570106-c358-4372-b5da-025197b307ca",
"name": "Fetch News Events",
"type": "@predictleads/n8n-nodes-predictleads.predictLeads",
"position": [
1088,
608
],
"parameters": {
"domain": "={{ $('Get Prospect List').item.json.domain }}",
"resource": "newsEvents",
"operation": "retrieveCompanyNewsEvents",
"requestOptions": {}
},
"credentials": {},
"typeVersion": 1
},
{
"id": "04ab0c6a-6c3e-4427-84c7-f1c1d429f480",
"name": "Daily Prospect Scan Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
48,
608
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 8
}
]
}
},
"typeVersion": 1.3
},
{
"id": "10348e7f-969a-4648-b99c-8baa6f88e63c",
"name": "Filter High Intent Leads",
"type": "n8n-nodes-base.if",
"position": [
1664,
608
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "83e5ab50-5a2e-4e09-8bea-f1ed736bf84a",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.intent_score }}",
"rightValue": 20
}
]
}
},
"typeVersion": 2.3
},
{
"id": "918994c3-52fd-4bd9-b1e6-bc1c8dc3aab6",
"name": "Rank Leads by Intent Score",
"type": "n8n-nodes-base.sort",
"position": [
1952,
592
],
"parameters": {
"options": {},
"sortFieldsUi": {
"sortField": [
{
"order": "descending",
"fieldName": "intent_score"
}
]
}
},
"typeVersion": 1
},
{
"id": "a4eb80ae-0288-4de0-a459-b4429334d551",
"name": "Save Qualified Leads to Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
2320,
688
],
"parameters": {
"columns": {
"value": {
"domain": "={{ $json.domain }}",
"news_signal": "={{ $json.news_signal }}",
"tech_signal": "={{ $json.tech_signal }}",
"intent_score": "={{ $json.intent_score }}",
"hiring_signal": "={{ $json.hiring_signal }}"
},
"schema": [
{
"id": "domain",
"type": "string",
"display": true,
"required": false,
"displayName": "domain",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "hiring_signal",
"type": "string",
"display": true,
"required": false,
"displayName": "hiring_signal",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tech_signal",
"type": "string",
"display": true,
"required": false,
"displayName": "tech_signal",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "news_signal",
"type": "string",
"display": true,
"required": false,
"displayName": "news_signal",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "intent_score",
"type": "string",
"display": true,
"required": false,
"displayName": "intent_score",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1792214905,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QZfK9jlVJOaY1LZB4szOPCUm9ZDkavUd3itiL_8HLzM/edit#gid=1792214905",
"cachedResultName": "Save Qualified Leads to Sheet"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1QZfK9jlVJOaY1LZB4szOPCUm9ZDkavUd3itiL_8HLzM",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QZfK9jlVJOaY1LZB4szOPCUm9ZDkavUd3itiL_8HLzM/edit?usp=drivesdk",
"cachedResultName": "04"
}
},
"typeVersion": 4.7
},
{
"id": "f04553f5-4dc3-47f6-a4cc-d107661c04d5",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-640,
48
],
"parameters": {
"color": 5,
"width": 500,
"height": 852,
"content": "## Multi-Signal Buying Intent Scoring & Sales Prioritization\n\n### How it works\n1. A daily schedule trigger fires each morning and pulls your prospect list (company domains) from a Google Sheet.\n2. For each prospect, the workflow queries PredictLeads to collect three buying signals: job openings, technology stack changes, and recent news events.\n3. All signals are normalized and combined into a single intent score using a weighted formula (hiring x5, tech x3, news x2).\n4. Leads scoring above the threshold (default: 20) are filtered, ranked from highest to lowest intent, then sent as a Slack alert and saved to a separate Google Sheet tab.\n\n### Setup\n1. Connect your **Google Sheets** credential and point the input node to a sheet with a `domain` column listing prospect company domains.\n2. Connect your **PredictLeads API** credential (get one at [predictleads.com](https://predictleads.com)).\n3. Connect your **Slack** credential and choose the channel where you want high-intent alerts.\n4. Create a second sheet tab for qualified leads output with columns: `domain`, `hiring_signal`, `tech_signal`, `news_signal`, `intent_score`.\n\n### Customization\n- Adjust the intent score threshold in the Filter node (default is 20).\n- Change signal weights in the Code node to match your sales priorities.\n- Add more output channels (email, CRM) alongside Slack."
},
"typeVersion": 1
},
{
"id": "a91da24f-6822-4f8b-bf51-d0dd2fa051ae",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-16,
480
],
"parameters": {
"width": 500,
"height": 280,
"content": "## Trigger & Input\nRuns daily at 8 AM and loads prospect domains from Google Sheets."
},
"typeVersion": 1
},
{
"id": "28da1760-128a-4547-b836-906cf70b74b3",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
512,
480
],
"parameters": {
"width": 840,
"height": 280,
"content": "## Signal Enrichment\nQueries PredictLeads for hiring activity, tech stack, and news events for each prospect."
},
"typeVersion": 1
},
{
"id": "fb57ca9d-91de-4a5b-8cf4-262a9e1ed536",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
464
],
"parameters": {
"width": 840,
"height": 304,
"content": "## Scoring & Filtering\nCombines signals into a weighted intent score, filters leads above threshold, and ranks by score."
},
"typeVersion": 1
},
{
"id": "2b1a959f-fce5-4b1b-be19-5ab2e0d33b21",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
2240,
320
],
"parameters": {
"width": 300,
"height": 544,
"content": "## Alerts & Storage\nNotifies Slack with lead details and saves qualified leads to Google Sheets."
},
"typeVersion": 1
}
],
"connections": {
"Fetch Tech Stack": {
"main": [
[
{
"node": "Fetch News Events",
"type": "main",
"index": 0
}
]
]
},
"Fetch News Events": {
"main": [
[
{
"node": "Normalize Data and Score",
"type": "main",
"index": 0
}
]
]
},
"Get Prospect List": {
"main": [
[
{
"node": "Fetch Job Openings",
"type": "main",
"index": 0
}
]
]
},
"Fetch Job Openings": {
"main": [
[
{
"node": "Fetch Tech Stack",
"type": "main",
"index": 0
}
]
]
},
"Filter High Intent Leads": {
"main": [
[
{
"node": "Rank Leads by Intent Score",
"type": "main",
"index": 0
}
]
]
},
"Normalize Data and Score": {
"main": [
[
{
"node": "Filter High Intent Leads",
"type": "main",
"index": 0
}
]
]
},
"Rank Leads by Intent Score": {
"main": [
[
{
"node": "Send Slack Alert",
"type": "main",
"index": 0
},
{
"node": "Save Qualified Leads to Sheet",
"type": "main",
"index": 0
}
]
]
},
"Daily Prospect Scan Trigger": {
"main": [
[
{
"node": "Get Prospect List",
"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 a list of prospect company domains from Google Sheets, enriches each company with multiple PredictLeads data sources, calculates a weighted intent score based on job openings, technology detections, and news events, filters for high-intent accounts, ranks…
Source: https://n8n.io/workflows/14348/ — 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.
Find companies similar to your best clients using PredictLeads, enrich each with news, hiring, and tech signals, then score them 0–100 for outreach priority.
This workflow automatically monitors your Google Ads campaigns every day, analyzing performance with AI-powered scoring to identify scaling opportunities and catch issues before they drain your budget
This workflow monitors Meta Ads and Google Ads campaigns on a daily schedule to detect performance drops. It fetches yesterday’s campaign data, standardizes metrics, and calculates CTR and ROAS agains
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
Automatically qualify, score, and route inbound B2B leads using GPT-4o-mini — no manual review needed.