AutomationFlowsMarketing & Ads › Score Multi-signal Buying Intent and Prioritize Leads with Predictleads,…

Score Multi-signal Buying Intent and Prioritize Leads with Predictleads,…

Original n8n title: Score Multi-signal Buying Intent and Prioritize Leads with Predictleads, Google Sheets, and Slack

ByYaron Been @yaron-nofluff on n8n.io

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…

Cron / scheduled trigger★★★★☆ complexity15 nodes@Predictleads/N8N Nodes PredictleadsSlackGoogle Sheets
Marketing & Ads Trigger: Cron / scheduled Nodes: 15 Complexity: ★★★★☆ Added:

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 →

Download .json
{
  "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
          }
        ]
      ]
    }
  }
}
Pro

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 →

More Marketing & Ads workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Marketing & Ads

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.

Google Sheets, @Predictleads/N8N Nodes Predictleads, Slack +2
Marketing & Ads

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

Google Ads, Google Sheets, Slack +1
Marketing & Ads

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

Google Sheets, HTTP Request, Slack +3
Marketing & Ads

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

Form Trigger, Google Sheets, Slack +1
Marketing & Ads

Automatically qualify, score, and route inbound B2B leads using GPT-4o-mini — no manual review needed.

HTTP Request, Slack, Gmail +1