B2B Demo Lead Rescue Desk: Enrich, Score, Route, and SLA Escalate

High-Level Summary

This workflow provides an automated lead rescue desk for B2B demo, quote, and integration leads. It receives incoming webhook payloads from your website forms, normalizes inconsistent field names, enriches the submitted page context, scores buyer intent, assigns an SLA and owner, logs the lead to Google Sheets, routes Gmail alerts, and returns a structured webhook response. This workflow is useful for sales teams that need to quickly triage leads, prioritize hot ones, and escalate enterprise opportunities.

Node-by-Node Walkthrough

  • Lead Intake Webhook (No auth) — Listens for POST requests at the path `b2b-demo-lead-rescue. It receives the raw payload from your website form or lead capture tool.
  • Normalize, Score, and Assign Owner (No auth) — A Code node that normalizes common form field variants (e.g., name, full_name, contact_name), scores contact quality, assigns intent tags, and determines priority (hot/review/normal), SLA minutes, owner team, and dedupe key. It also checks if contact info is usable.
  • Has Usable Contact? (No auth) — An IF node that checks the `missing_contact flag. If true, it branches to the missing-contact path.
  • Build Missing Contact Response (No auth) — A Set node that builds a JSON response with status "needs_contact" and a message asking for work email/phone.
  • Respond Missing Contact (No auth) — Responds to the webhook with a 400 status.
  • Fetch Submitted Page Context (No auth) — An HTTP Request node that fetches the page URL from the lead's `page_url field (or fallback). It retrieves the HTML content with a timeout of 8000ms.
  • Extract Page Signals (No auth) — A Code node that extracts page title and meta description, adds page-specific tags (pricing, demo, etc.), and boosts the lead score accordingly.
  • Build Audit Row (No auth) — A Set node that assembles the audit row with all relevant fields (received_at, priority, score, SLA, owner, tags, dedupe, email, company, message).
  • Append Lead Audit Row (OAuth2) — A Google Sheets node that appends the audit row to a sheet named "Leads" in the specified spreadsheet ID.
  • Route by Priority (No auth) — A Switch node that routes based on priority: hot, review, or normal (fallback).
  • Build Hot Lead Alert (No auth) — A Set node that creates email subject and body for hot leads.
  • Send Hot Lead Gmail Alert (OAuth2) — A Gmail node that sends the hot lead alert to [email protected].
  • Send Review Queue Gmail Alert (OAuth2) — A Gmail node that sends review lead alert to [email protected].
  • Send Normal Lead Gmail Alert (OAuth2) — A Gmail node that sends normal lead alert to [email protected].
  • Needs Executive Escalation? (No auth) — An IF node that checks if needs_exec_escalation is true.
  • Send Executive Escalation (OAuth2) — A Gmail node that sends escalation email to [email protected].
  • Build Success Response (No auth) — A Set node that builds a success JSON with ok, status, score, SLA, owner, dedupe.
  • Respond Success (No auth) — Responds to the webhook with a 200 response.

Setup Instructions

  1. **Google Sheets: Create a new spreadsheet and note the spreadsheet ID. Enable Google Sheets OAuth2 credentials in n8n (Google Sheets node).
  2. **Gmail: Enable Gmail OAuth2 credentials for the sender account (e.g., sales@, ops@, inbox@, leadership@).
  3. **Webhook: Configure your website form or lead capture tool to POST to the webhook URL (e.g., https://your-n8n-instance/webhook/b2b-demo-lead-rescue).
  4. **Replace placeholders: Replace REPLACE_WITH_SPREADSHEET_ID with your actual sheet ID. Replace email addresses ([email protected], [email protected], [email protected], [email protected]) with real addresses.
  5. **Test: Send sample payloads with different scenarios (hot, review, normal, missing contact).

Use Cases and Variations

  • **Adapt for different lead sources: Modify the normalization code to match your form field names.
  • **Custom scoring: Adjust keywords, budget/timeline rules, and score thresholds.
  • **Integrate with CRM: Replace Gmail alerts with Slack, HubSpot, or Salesforce nodes.
  • **Deduplication: Use the dedupe_key to check existing leads in Google Sheets before appending.
  • **Multi-team routing: Expand the switch node to route to different teams based on product or region.
26 nodeswebhook triggerSales
Sticky NoteWebhookCodeIFSetRespond To WebhookHTTP RequestGoogle Sheets

Workflow JSON

{
  "name": "B2B Demo Lead Rescue Desk: Enrich, Score, Route, and SLA Escalate",
  "nodes": [
    {
      "id": "note-overview",
      "name": "Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1180,
        -520
      ],
      "parameters": {
        "content": "## B2B Demo Lead Rescue Desk: Enrich, Score, Route, and SLA Escalate\n\n### How it works\n\nThis workflow receives website demo, quote, and integration leads, normalizes inconsistent form payloads, enriches the submitted page context, scores buyer intent, assigns an SLA and owner, logs the lead to Google Sheets, routes Gmail alerts, and returns a structured webhook response.\n\n### Setup steps\n\n- Configure the Lead Intake Webhook URL in your website form or lead capture tool.\n- Replace placeholder Google Sheets credentials, sheet ID, and recipient Gmail addresses.\n- Test with one hot lead, one review lead, one normal lead, and one missing-contact payload.\n- Confirm SLA buckets, owner team routing, dedupe keys, and escalation terms match your sales process.\n\n### Customization\n\nAdjust scoring keywords, budget/timeline rules, recipient lists, and executive escalation thresholds to match your actual sales handoff.",
        "width": 560,
        "height": 840,
        "color": 7
      }
    },
    {
      "id": "note-intake",
      "name": "Receive and validate lead",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -620,
        -220
      ],
      "parameters": {
        "content": "## Receive and validate lead\n\nAccepts the incoming website lead webhook, normalizes common form field variants, scores contact quality, and rejects submissions that do not include a usable reply path.",
        "width": 640,
        "height": 360,
        "color": 7
      }
    },
    {
      "id": "note-score-audit",
      "name": "Score and audit lead",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        120,
        -260
      ],
      "parameters": {
        "content": "## Score and audit lead\n\nFetches submitted-page context, extracts title and meta signals, combines page intent with message, budget, timeline, and integration keywords, builds a dedupe key, and appends a complete audit row to Google Sheets.",
        "width": 900,
        "height": 360,
        "color": 7
      }
// ... truncated (copy to see full JSON)

How to Import This Workflow

  1. 1Copy the workflow JSON above using the Copy Workflow JSON button.
  2. 2Open your n8n instance and go to Workflows.
  3. 3Click Import from JSON and paste the copied workflow.

Don't have an n8n instance? Start your free trial at n8nautomation.cloud

Related Templates

Auto-Qualify Google Sheets Leads with OpenAI GPT-4

Overview This workflow automatically qualifies new leads submitted via Google Forms (or directly entered) into a Google Sheet. Using OpenAI's GPT-4, it evaluates each lead against custom criteria (e.g., decision-maker role, team size, email domain) and updates the sheet with a qualification rating and explanation. This saves manual review time and ensures consistent lead scoring for sales teams or community managers. Node-by-Node Breakdown Check for new entries (Google Sheets Trigger – OAuth2) - Listens for new rows added to a specific Google Sheet (connected to a Google Form or standalone). - Configured to poll every minute (adjustable). - Requires: A Google Sheet document ID and sheet name. Qualify leads with GPT (OpenAI – API Key auth) - Uses the chat model. - A system message defines qualification rules (decision-maker, team size, corporate email). - A user message injects the lead's name, email, business area, and team size from the trigger output. - Temperature set to 0.3 for consistent, deterministic responses. - Instructed to reply with a JSON object: . Extract JSON reply (Set Node – no auth) - Parses the from OpenAI's response using . - Stores the resulting object in a new field for downstream nodes. Merge (Merge Node – no auth) - Combines the original lead data (from the trigger) with the parsed GPT reply. - Uses “Combine” mode with “Merge by position” to join the two inputs horizontally. - Input 0 (from trigger) holds the row data; Input 1 (from Extract JSON reply) holds the GPT rating. Update lead status (Google Sheets – OAuth2) - Updates the same Google Sheet with the GPT's rating and explanation. - Matches rows by the column (to avoid updating the wrong row). - Writes the rating into a column (and optionally the explanation if you extend the schema). Setup Instructions Google Cloud / Sheets API - Create a Google Cloud project, enable the Google Sheets API, and create OAuth2 credentials (Desktop app or Web application). - In n8n, add a new Google Sheets credential (OAuth2) using your client ID and secret. OpenAI API Key - Sign up at OpenAI and create an API key. - In n8n, add a new OpenAI credential with your API key. Google Sheet - Use the provided template or create your own with columns: Timestamp, Email Address, Your name, Your business area, Your team size, Rating. - If using Google Forms, submissions will automatically populate the sheet. Configure the workflow - After importing, select each Google Sheets node and choose your credential and the correct sheet/document. - Adjust the polling interval if needed (default: every minute). - Modify the GPT system message to fit your own lead qualification criteria. Use Cases & Adaptations Sales lead scoring: Replace the criteria with your ICP (ideal customer profile) – e.g., industry, company size, budget. Community membership approval: Automatically accept or reject join requests based on responses. Event registration filtering: Qualify attendees for VIP access or follow-up. Extend output: Store the explanation in a separate column by adding it to the Update node's column mapping. Add notifications: Insert a Slack or email node after the Merge to alert your team when a high-quality lead is detected. Use a different model: Switch to for lower cost or for faster responses. This template is a starting point – tweak the prompt, polling frequency, and output columns to match your exact process.

9 nodes

Lead Capture to Notion CRM with Alerts in Slack

Overview This workflow instantly captures leads from any web form (Webflow, Tally, WordPress, custom HTML, etc.) and creates a new entry in your Notion CRM database while simultaneously sending a formatted alert to a Slack sales channel. It eliminates manual data entry and ensures your sales team can respond to leads within seconds of submission — no Zapier subscription required. How It Works The workflow is triggered by an incoming HTTP POST request (the webhook), then processes the lead data through two sequential actions: first creating a Notion database page, then posting a Slack message. The webhook responds immediately with a 200 status so the form never hangs or times out. Node-by-Node Breakdown Lead Webhook (No auth) — Listens for incoming POST requests at the path . Accepts both JSON and form-encoded payloads. When activated, n8n provides a unique production URL that you point your form's action attribute or integration to. The node responds automatically with HTTP 200 after all downstream nodes complete. Add to Notion CRM (OAuth2) — Creates a new database page in your specified Notion database. Configured parameters: - : The Notion database ID (must be replaced with your actual database ID) - : Set dynamically to (the lead's name from the webhook payload) - : Maps the lead's email to the "Email" property and sets a "Status" select property to "New" - Requires sharing your Notion database with the n8n integration Alert Sales Channel (OAuth2) — Posts a formatted Slack message to a specified channel. Configured parameters: - : The Slack channel ID (must be replaced with your actual channel) - : A dynamic message template using expressions: - Uses Slack's markdown formatting for bold text and blockquotes Setup Instructions Prerequisites An n8n instance (self-hosted or cloud) A Notion account with a Leads database (must contain at least Name, Email, and Status properties) A Slack workspace where you can create/choose a channel for lead alerts A web form or service that can send POST requests (Webflow, Tally, WordPress, Framer, custom HTML form, etc.) Step-by-Step Activate the workflow in n8n and copy the production webhook URL from the Lead Webhook node (it will look like ) Configure your form to send a POST request to that URL with fields: , , and (JSON or form-encoded both work) Connect Notion: - Create an integration at https://www.notion.so/my-integrations - Share your Leads database with that integration - In n8n, create a Notion credential (OAuth2) and select your database - Replace with your actual database ID Connect Slack: - Create a Slack app with and scopes - Install the app to your workspace - In n8n, create a Slack credential (OAuth2) - Replace with your actual channel ID (e.g., ) Test: Submit a test lead through your form and verify it appears in Notion and Slack Use Cases & Adaptations Primary Use Cases Marketing teams: Capture leads from landing pages, webinar registrations, or content downloads Sales teams: Get instant notifications when high-value prospects submit inquiries Startups: Build a lightweight CRM without expensive tools Variations to Try Add email automation: Insert a Gmail or SendGrid node after Notion to send an auto-reply to the lead Enrich lead data: Add an HTTP Request node to look up company info via Clearbit or Hunter.io Score leads: Use an n8n Code node to assign lead scores based on message content or source Multi-channel capture: Create additional webhook nodes for different forms, each routing to the same Notion database Error handling: Build a separate Error Trigger workflow that posts to Slack when any node fails Required Replacements Before running, you must replace these placeholder values: → Your Notion database ID → Your Slack channel ID

6 nodes

Extract Google Maps Business Leads via Dumpling AI to Google Sheets

Overview This workflow automates the extraction of business listings from Google Maps using Dumpling AI's search-maps API and logs the results into a structured Google Sheet. It's ideal for lead generation, market research, or competitive analysis — allowing you to quickly gather data like business names, ratings, addresses, phone numbers, websites, and booking links without manual browsing. Workflow Steps Trigger: Manual Test Run (Manual Trigger) — Starts the workflow on demand for testing. No authentication required. Search Google Maps via Dumpling AI (HTTP Request) — Sends a POST request to with a JSON body containing the search query (e.g., ) and language. Authentication uses Header Auth — you must provide a Dumpling AI API key as a header (configured in n8n credentials). The response returns an array of places with details like title, rating, address, phone, website, price level, and booking links. Split Places List for Processing (Split Out) — Splits the array from the HTTP response into individual items so each place can be processed separately. No authentication needed. Save Results to Google Sheet (Place Info) (Google Sheets) — Appends each place's data (name, address, rating, price level, type, website, phone, position, booking link) to a specified sheet in a Google Sheets document. Uses OAuth2 authentication (Google account). The sheet name is set to "Google Maps" and the document ID points to a spreadsheet named "Places". Setup Instructions Dumpling AI Account: Sign up at dumplingai.com and obtain an API key. In n8n, create a new Header Auth credential with the key name (e.g., ) and value . Google Sheets: Create a Google Sheet (or use the one referenced in the workflow). In n8n, create a Google Sheets OAuth2 credential by connecting your Google account. Ensure the sheet has a tab named "Google Maps" (or update the sheet name in the node). Customize Query: Edit the of the HTTP Request node to change the search query (e.g., ) or language. Run: Click "Execute Workflow" to test. The first run will prompt you to authorize Google Sheets access. Use Cases & Variations Lead Generation: Replace the query with industry-specific terms (e.g., "dentists in Los Angeles") to build a targeted prospect list. Competitor Analysis: Search for competitors in a niche and analyze their ratings, price levels, and online presence. Real Estate / Local Business Research: Extract data for multiple locations by chaining queries or using a loop. Automation: Replace the Manual Trigger with a Schedule Trigger to run daily/weekly, and add a Set node to dynamically pass queries from a spreadsheet or webhook. Enrichment: Add nodes to clean data, send notifications (Slack/Email), or integrate with a CRM like HubSpot.

5 nodes

Ready to automate with n8n?

Get affordable managed n8n hosting with 24/7 support.