AutomationFlowsCRM & Sales › Qualify and Route Inbound Leads with Openai, Slack, Hubspot, and Google Sheets

Qualify and Route Inbound Leads with Openai, Slack, Hubspot, and Google Sheets

ByCharles @charlesnguyen on n8n.io

This workflow receives inbound lead submissions via a webhook, validates business emails, enriches leads by scraping their website, and uses OpenAI to score ICP fit. It then routes hot leads to Slack, Gmail, and HubSpot, logs all leads to Google Sheets, and responds to the form…

Webhook trigger★★★★☆ complexityAI-powered26 nodesHTTP RequestChain LlmOpenAI ChatOutput Parser StructuredSlackGmailHubSpotGoogle Sheets
CRM & Sales Trigger: Webhook Nodes: 26 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #18216 — we link there as the canonical source.

This workflow follows the Chainllm → Gmail 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
{
  "name": "Qualify inbound leads with AI and route them to Slack, HubSpot and Google Sheets",
  "tags": [],
  "nodes": [
    {
      "id": "template-overview",
      "name": "Template overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1010,
        -150
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "1-intake-and-configuration",
      "name": "1. Intake and configuration",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -470,
        150
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "2-free-data-quality-gate",
      "name": "2. Free data-quality gate",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        190,
        150
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "3-enrichment-without-a-paid-api",
      "name": "3. Enrichment without a paid API",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        650,
        30
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "4-ai-scoring-against-your-icp",
      "name": "4. AI scoring against your ICP",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1090,
        30
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "5-routing-by-tier",
      "name": "5. Routing by tier",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1530,
        -150
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "6-log-every-lead",
      "name": "6. Log every lead",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2470,
        170
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "webhook-inbound-lead",
      "name": "Receive Inbound Lead",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -460,
        300
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "set-icp-config",
      "name": "Set ICP and Scoring Rules",
      "type": "n8n-nodes-base.set",
      "position": [
        -240,
        300
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "normalize-lead-fields",
      "name": "Normalize Lead Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -20,
        300
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "validate-email",
      "name": "Validate Email and Detect Company Domain",
      "type": "n8n-nodes-base.code",
      "position": [
        200,
        300
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "if-business-email",
      "name": "Is It a Valid Business Email?",
      "type": "n8n-nodes-base.if",
      "position": [
        420,
        300
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "fetch-website",
      "name": "Fetch Lead Website",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        660,
        180
      ],
      "parameters": {},
      "retryOnFail": false,
      "typeVersion": 4.2
    },
    {
      "id": "extract-signals",
      "name": "Extract Buying Signals from Website",
      "type": "n8n-nodes-base.code",
      "position": [
        880,
        180
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "ai-score-lead",
      "name": "Score Lead Against ICP with AI",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1100,
        180
      ],
      "parameters": {},
      "typeVersion": 1.5
    },
    {
      "id": "openai-model",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1100,
        400
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "output-parser",
      "name": "Structured Lead Score",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1300,
        400
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "combine-score",
      "name": "Combine AI Verdict with Data Quality",
      "type": "n8n-nodes-base.code",
      "position": [
        1320,
        180
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "mark-disqualified",
      "name": "Mark Lead as Unqualified",
      "type": "n8n-nodes-base.code",
      "position": [
        2480,
        620
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "route-by-tier",
      "name": "Route Lead by Tier",
      "type": "n8n-nodes-base.switch",
      "position": [
        1540,
        180
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "slack-hot-alert",
      "name": "Alert Sales Team in Slack",
      "type": "n8n-nodes-base.slack",
      "onError": "continueRegularOutput",
      "position": [
        1800,
        0
      ],
      "parameters": {},
      "typeVersion": 2.3
    },
    {
      "id": "gmail-instant-reply",
      "name": "Send Instant Personalized Reply",
      "type": "n8n-nodes-base.gmail",
      "onError": "continueRegularOutput",
      "position": [
        2020,
        0
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "hubspot-hot",
      "name": "Create Hot Contact in HubSpot",
      "type": "n8n-nodes-base.hubspot",
      "onError": "continueRegularOutput",
      "position": [
        2240,
        0
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "hubspot-warm",
      "name": "Create Warm Contact in HubSpot",
      "type": "n8n-nodes-base.hubspot",
      "onError": "continueRegularOutput",
      "position": [
        1800,
        220
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "log-to-sheets",
      "name": "Log Every Lead to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueRegularOutput",
      "position": [
        2480,
        320
      ],
      "parameters": {},
      "typeVersion": 4.5
    },
    {
      "id": "respond-webhook",
      "name": "Respond to Form",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        2700,
        320
      ],
      "parameters": {},
      "typeVersion": 1.1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "connections": {
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Score Lead Against ICP with AI",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Lead Website": {
      "main": [
        [
          {
            "node": "Extract Buying Signals from Website",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route Lead by Tier": {
      "main": [
        [
          {
            "node": "Alert Sales Team in Slack",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create Warm Contact in HubSpot",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log Every Lead to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Receive Inbound Lead": {
      "main": [
        [
          {
            "node": "Set ICP and Scoring Rules",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize Lead Fields": {
      "main": [
        [
          {
            "node": "Validate Email and Detect Company Domain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Lead Score": {
      "ai_outputParser": [
        [
          {
            "node": "Score Lead Against ICP with AI",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Mark Lead as Unqualified": {
      "main": [
        [
          {
            "node": "Log Every Lead to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Alert Sales Team in Slack": {
      "main": [
        [
          {
            "node": "Send Instant Personalized Reply",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set ICP and Scoring Rules": {
      "main": [
        [
          {
            "node": "Normalize Lead Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Hot Contact in HubSpot": {
      "main": [
        [
          {
            "node": "Log Every Lead to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is It a Valid Business Email?": {
      "main": [
        [
          {
            "node": "Fetch Lead Website",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Mark Lead as Unqualified",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Warm Contact in HubSpot": {
      "main": [
        [
          {
            "node": "Log Every Lead to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Score Lead Against ICP with AI": {
      "main": [
        [
          {
            "node": "Combine AI Verdict with Data Quality",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log Every Lead to Google Sheets": {
      "main": [
        [
          {
            "node": "Respond to Form",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Instant Personalized Reply": {
      "main": [
        [
          {
            "node": "Create Hot Contact in HubSpot",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Buying Signals from Website": {
      "main": [
        [
          {
            "node": "Score Lead Against ICP with AI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine AI Verdict with Data Quality": {
      "main": [
        [
          {
            "node": "Route Lead by Tier",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Email and Detect Company Domain": {
      "main": [
        [
          {
            "node": "Is It a Valid Business Email?",
            "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 receives inbound lead submissions via a webhook, validates business emails, enriches leads by scraping their website, and uses OpenAI to score ICP fit. It then routes hot leads to Slack, Gmail, and HubSpot, logs all leads to Google Sheets, and responds to the form…

Source: https://n8n.io/workflows/18216/ — original creator credit. Request a take-down →

More CRM & Sales workflows → · Browse all categories →

Related workflows

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

CRM & Sales

When a seller asks what their home is worth, this workflow generates a professional CMA-lite valuation report in Google Docs using Gemini AI, emails them the link within minutes, creates a HubSpot dea

Typeform Trigger, Google Gemini, Google Docs +5
CRM & Sales

This template is perfect for: Marketing Teams looking to automatically qualify inbound leads from campaigns Sales Teams wanting to prioritize high-value prospects instantly Agencies offering lead qual

Form Trigger, Slack, OpenAI +5
CRM & Sales

Automate your lead qualification pipeline — capture Typeform Webhook leads, enrich with APIs, score intelligently, and route to HubSpot, Slack, and Sheets in real-time.

HTTP Request, HubSpot, Slack +1
CRM & Sales

For Temp_Smart Lead Routing & Qualification System (Typeform to HubSpot). Uses httpRequest, hubspot, slack, googleSheets. Webhook trigger; 27 nodes.

HTTP Request, HubSpot, Slack +1
CRM & Sales

AI-Powered Lead Qualification & Routing System. Uses supabase, httpRequest, openAi, slack. Webhook trigger; 47 nodes.

Supabase, HTTP Request, OpenAI +2