This workflow corresponds to n8n.io template #11200 — we link there as the canonical source.
This workflow follows the Google Sheets → HTTP Request 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 →
{
"id": "xIkWbq0d9okxJcNL",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Instant Demo Booker for High Intent Leads",
"tags": [],
"nodes": [
{
"id": "2c0c576e-c4b9-417b-810a-e39b92f24604",
"name": "Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2736,
-192
],
"parameters": {
"width": 640,
"height": 888,
"content": "## Instant Demo Booker for High-Intent Leads\n\n### How it works \n- **Lead Capture**: Collects form submissions via webhook (e.g., email, name, company). \n- **Data Enrichment**: Uses Clearbit to enrich lead data (company size, revenue, industry, etc.). \n- **Fit Scoring**: Calculates a fit score based on company size, revenue, and job title (0\u2013100). \n- **Lead Routing**: \n - **High-Intent Leads (score \u2265 60)**: Routed to a fast track for immediate action. \n - **Standard Leads (score < 60)**: Routed for standard follow-up. \n- **Demo Scheduling**: Fetches available demo slots from Calendly and sends them to sales team in Slack. \n- **Sales Alerts**: Sends Slack notifications to sales with lead details and available demo slots. \n- **Follow-Up**: If no response from sales within 10 minutes, an automatic email is sent to the lead. \n- **Logging**: Logs all data to Google Sheets for analytics and tracking.\n\n\n### Setup Requirements \n1. **Clearbit**: API key for lead enrichment. \n2. **HubSpot**: App token for CRM integration (create/update contacts & deals). \n3. **Calendly**: OAuth2 token & user URI for demo scheduling. \n4. **Slack**: Bot token for channel notifications, configure channels for hot leads & standard leads. \n5. **SendGrid**: API key for sending fallback emails. \n6. **Google Sheets**: OAuth2 connection and sheet ID for lead & demo logs.\n\n\n### Customize\n\u2022 Fit score logic (Calculate Fit Score node)\n\u2022 Slack channel names\n\u2022 Email template\n\u2022 Calendar event name filter"
},
"typeVersion": 1
},
{
"id": "20280207-e88f-4dca-8e45-70a2914912b2",
"name": "High-Intent Flow",
"type": "n8n-nodes-base.stickyNote",
"position": [
-816,
-192
],
"parameters": {
"color": 5,
"width": 3212,
"height": 536,
"content": "## High-Intent Path (Score \u226560)\n"
},
"typeVersion": 1
},
{
"id": "2b5e5e41-6449-4d32-a0c3-d5f12564f87f",
"name": "Standard Flow",
"type": "n8n-nodes-base.stickyNote",
"position": [
-816,
368
],
"parameters": {
"color": 6,
"width": 392,
"height": 324,
"content": "## Standard Path (Score <60)\nPosts to #leads Slack channel\nNo automated follow-up\nStandard nurture workflow"
},
"typeVersion": 1
},
{
"id": "2ead105b-92f4-4f51-98be-f3ff5fe55324",
"name": "Lead Form Webhook",
"type": "n8n-nodes-base.webhook",
"notes": "Receives lead submissions via POST request",
"onError": "continueRegularOutput",
"position": [
-1984,
144
],
"parameters": {
"path": "demo-request",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"notesInFlow": true,
"typeVersion": 2.1
},
{
"id": "f3b76dd2-b228-4200-bd11-e400cfb6b935",
"name": "Normalize Lead Data",
"type": "n8n-nodes-base.set",
"notes": "Standardizes field names from different form providers",
"position": [
-1760,
144
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "email",
"name": "email",
"type": "string",
"value": "={{ $json.body.email || $json.body.contact_email }}"
},
{
"id": "fullName",
"name": "fullName",
"type": "string",
"value": "={{ $json.body.name || $json.body.full_name }}"
},
{
"id": "company",
"name": "company",
"type": "string",
"value": "={{ $json.body.company || $json.body.company_name || '' }}"
},
{
"id": "phone",
"name": "phone",
"type": "string",
"value": "={{ $json.body.phone || '' }}"
},
{
"id": "utmSource",
"name": "utmSource",
"type": "string",
"value": "={{ $json.body.utm_source || '' }}"
},
{
"id": "utmCampaign",
"name": "utmCampaign",
"type": "string",
"value": "={{ $json.body.utm_campaign || '' }}"
},
{
"id": "pageUrl",
"name": "pageUrl",
"type": "string",
"value": "={{ $json.body.page_url || $json.body.referrer || '' }}"
},
{
"id": "message",
"name": "message",
"type": "string",
"value": "={{ $json.body.message || $json.body.notes || '' }}"
},
{
"id": "timestamp",
"name": "submittedAt",
"type": "string",
"value": "={{ $now.toISO() }}"
}
]
}
},
"notesInFlow": true,
"typeVersion": 3.4
},
{
"id": "afed81f7-9ddf-4195-97e2-e3ea38021415",
"name": "Enrich with Clearbit",
"type": "n8n-nodes-base.clearbit",
"notes": "Enriches contact with company data (size, revenue, industry, job title)",
"onError": "continueRegularOutput",
"position": [
-1536,
144
],
"parameters": {
"email": "={{ $json.email }}",
"resource": "person",
"additionalFields": {}
},
"credentials": {
"clearbitApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "625bcc5e-5ae9-4b14-a77c-d8cbf7632bb6",
"name": "Calculate Fit Score",
"type": "n8n-nodes-base.set",
"notes": "Scores 0-100 based on company size (40), seniority (30), revenue (30)",
"position": [
-1312,
144
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "enrichedCompany",
"name": "enrichedCompany",
"type": "string",
"value": "={{ $json.company && $json.company.name ? $json.company.name : $('Normalize Lead Data').item.json.company }}"
},
{
"id": "companySize",
"name": "companySize",
"type": "number",
"value": "={{ $json.company && $json.company.metrics && $json.company.metrics.employees ? $json.company.metrics.employees : 0 }}"
},
{
"id": "industry",
"name": "industry",
"type": "string",
"value": "={{ $json.company && $json.company.category && $json.company.category.industry ? $json.company.category.industry : 'Unknown' }}"
},
{
"id": "annualRevenue",
"name": "annualRevenue",
"type": "number",
"value": "={{ $json.company && $json.company.metrics && $json.company.metrics.annualRevenue ? $json.company.metrics.annualRevenue : 0 }}"
},
{
"id": "jobTitle",
"name": "jobTitle",
"type": "string",
"value": "={{ $json.person && $json.person.employment && $json.person.employment.title ? $json.person.employment.title : '' }}"
},
{
"id": "seniority",
"name": "seniority",
"type": "string",
"value": "={{ $json.person && $json.person.employment && $json.person.employment.seniority ? $json.person.employment.seniority : '' }}"
},
{
"id": "fitScore",
"name": "fitScore",
"type": "number",
"value": "={{ ($json.company && $json.company.metrics && $json.company.metrics.employees >= 50 && $json.company.metrics.employees <= 5000 ? 40 : 0) + ($json.person && $json.person.employment && ($json.person.employment.seniority === 'executive' || $json.person.employment.seniority === 'director') ? 30 : 0) + ($json.company && $json.company.metrics && $json.company.metrics.annualRevenue >= 1000000 ? 30 : 0) }}"
}
]
}
},
"notesInFlow": true,
"typeVersion": 3.4
},
{
"id": "03a8939e-1e58-4798-9273-e7848264b8d1",
"name": "High Intent Lead?",
"type": "n8n-nodes-base.if",
"notes": "Routes leads with score \u226560 to fast track, others to standard",
"position": [
-1088,
144
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "fit-check",
"operator": {
"type": "number",
"operation": "gte"
},
"leftValue": "={{ $json.fitScore }}",
"rightValue": 60
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "bef98f70-efb1-4a15-b732-655f9c952b08",
"name": "Create HubSpot Contact",
"type": "n8n-nodes-base.hubspot",
"notes": "Creates or updates contact in HubSpot CRM",
"onError": "continueRegularOutput",
"maxTries": 3,
"position": [
-736,
32
],
"parameters": {
"email": "={{ $('Normalize Lead Data').item.json.email }}",
"options": {},
"authentication": "appToken",
"additionalFields": {
"jobTitle": "={{ $json.jobTitle }}",
"lastName": "={{ $('Normalize Lead Data').item.json.fullName.split(' ').slice(1).join(' ') }}",
"firstName": "={{ $('Normalize Lead Data').item.json.fullName.split(' ')[0] }}",
"companyName": "={{ $json.enrichedCompany }}",
"phoneNumber": "={{ $('Normalize Lead Data').item.json.phone }}"
}
},
"credentials": {
"hubspotAppToken": {
"name": "<your credential>"
}
},
"retryOnFail": true,
"typeVersion": 2.2,
"waitBetweenTries": 2000
},
{
"id": "be4256a3-6f78-45b2-a3f7-3ef8bec480a8",
"name": "Create HubSpot Deal",
"type": "n8n-nodes-base.hubspot",
"notes": "Creates deal in 'Appointment Scheduled' stage",
"onError": "continueRegularOutput",
"maxTries": 3,
"position": [
-496,
32
],
"parameters": {
"stage": "appointmentscheduled",
"resource": "deal",
"authentication": "appToken",
"additionalFields": {
"amount": "0",
"dealName": "=Demo Request - {{ $json.enrichedCompany }}",
"pipeline": "=default",
"closeDate": "={{ $now.plus({ days: 30 }).toISO() }}"
}
},
"credentials": {
"hubspotAppToken": {
"name": "<your credential>"
}
},
"retryOnFail": true,
"typeVersion": 2.2,
"waitBetweenTries": 2000
},
{
"id": "0b4ee4ba-f453-4e9e-9030-712bf2e2dbaa",
"name": "Get Calendly Event Types",
"type": "n8n-nodes-base.httpRequest",
"notes": "Fetches your Calendly event types to find Demo events",
"onError": "continueRegularOutput",
"position": [
-272,
32
],
"parameters": {
"url": "https://api.calendly.com/event_types",
"options": {},
"sendQuery": true,
"authentication": "predefinedCredentialType",
"queryParameters": {
"parameters": [
{
"name": "user",
"value": "Your user URI"
}
]
},
"nodeCredentialType": "calendlyOAuth2Api"
},
"credentials": {
"calendlyOAuth2Api": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 4.3
},
{
"id": "4e3a9a46-8170-4188-8286-5c6d005c2d2f",
"name": "Prepare Availability Params",
"type": "n8n-nodes-base.code",
"notes": "Finds Demo event and prepares 7-day availability window",
"onError": "continueRegularOutput",
"position": [
-48,
32
],
"parameters": {
"jsCode": "const eventTypes = $input.first().json.collection || [];\nconst demoEventType = eventTypes.find(e => e.name.toLowerCase().includes('demo'));\n\nif (!demoEventType) {\n return [{\n json: {\n error: 'No demo event type found',\n fallbackUrl: 'https://calendly.com/your-team/demo'\n }\n }];\n}\n\nconst startTime = new Date();\nconst endTime = new Date();\nendTime.setDate(endTime.getDate() + 7);\n\nreturn [{\n json: {\n eventTypeUri: demoEventType.uri,\n startTime: startTime.toISOString(),\n endTime: endTime.toISOString(),\n schedulingUrl: demoEventType.scheduling_url\n }\n}];"
},
"notesInFlow": true,
"typeVersion": 2
},
{
"id": "a9ccbc19-252e-4059-a305-b852bb67e2d3",
"name": "Get Available Demo Slots",
"type": "n8n-nodes-base.httpRequest",
"notes": "Fetches real available time slots from Calendly API",
"onError": "continueRegularOutput",
"maxTries": 2,
"position": [
176,
32
],
"parameters": {
"url": "https://api.calendly.com/event_type_available_times",
"options": {},
"sendQuery": true,
"authentication": "predefinedCredentialType",
"queryParameters": {
"parameters": [
{
"name": "event_type",
"value": "={{ $json.eventTypeUri }}"
},
{
"name": "start_time",
"value": "={{ $json.startTime }}"
},
{
"name": "end_time",
"value": "={{ $json.endTime }}"
}
]
},
"nodeCredentialType": "calendlyOAuth2Api"
},
"credentials": {
"calendlyOAuth2Api": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"retryOnFail": true,
"typeVersion": 4.3,
"waitBetweenTries": 1000
},
{
"id": "110b29c4-7c1f-42e9-b6d4-6682e0417361",
"name": "Format Demo Slots",
"type": "n8n-nodes-base.code",
"notes": "Formats next 2 available slots with booking URLs",
"onError": "continueRegularOutput",
"position": [
400,
32
],
"parameters": {
"jsCode": "const availableTimes = $input.first().json.collection || [];\nconst fallbackUrl = $('Prepare Availability Params').first().json.schedulingUrl || 'https://calendly.com/your-team/demo';\n\nif (availableTimes.length === 0) {\n return [{\n json: {\n bookingUrl: fallbackUrl,\n nextSlots: ['No slots in next 7 days', 'Check calendar'],\n slotCount: 0\n }\n }];\n}\n\nconst formattedSlots = availableTimes.slice(0, 2).map(slot => {\n const date = new Date(slot.start_time);\n return date.toLocaleString('en-US', {\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n timeZoneName: 'short'\n });\n});\n\nconst firstSlotUrl = availableTimes[0].scheduling_url || fallbackUrl;\n\nreturn [{\n json: {\n bookingUrl: firstSlotUrl,\n nextSlots: formattedSlots,\n slotCount: availableTimes.length,\n allSlots: availableTimes.slice(0, 5).map(s => ({\n time: s.start_time,\n url: s.scheduling_url\n }))\n }\n}];"
},
"notesInFlow": true,
"typeVersion": 2
},
{
"id": "4e1451f4-6646-4c37-85bc-892cea0c15e3",
"name": "Alert Sales (High Intent)",
"type": "n8n-nodes-base.slack",
"notes": "Posts to #hot-leads with full lead details and booking links",
"onError": "continueRegularOutput",
"position": [
704,
32
],
"parameters": {
"text": "=\ud83d\udd25 HIGH INTENT LEAD\n\n\ud83d\udc64 {{ $('Normalize Lead Data').item.json.fullName }}\n\ud83d\udce7 {{ $('Normalize Lead Data').item.json.email }}\n\ud83c\udfe2 {{ $('Calculate Fit Score').item.json.enrichedCompany }} ({{ $('Calculate Fit Score').item.json.companySize }} employees)\n\ud83d\udcbc {{ $('Calculate Fit Score').item.json.jobTitle }}\n\ud83d\udcca Fit Score: {{ $('Calculate Fit Score').item.json.fitScore }}/100\n\n\ud83c\udfaf Source: {{ $('Normalize Lead Data').item.json.utmSource || 'Direct' }}\n\ud83c\udf10 Page: {{ $('Normalize Lead Data').item.json.pageUrl }}\n\ud83d\udcac Message: {{ $('Normalize Lead Data').item.json.message || 'None' }}\n\n\ud83d\udcc5 Available Slots ({{ $('Format Demo Slots').item.json.slotCount }} total):\n\u2022 {{ $('Format Demo Slots').item.json.nextSlots[0] }}\n\u2022 {{ $('Format Demo Slots').item.json.nextSlots[1] }}\n\n\ud83d\udd17 Book: {{ $('Format Demo Slots').item.json.bookingUrl }}\n\n\u26a1 Respond in 10min or auto-email sends!",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "name",
"value": "hot-leads"
},
"otherOptions": {
"mrkdwn": true
}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 2.3
},
{
"id": "50c42a60-8b79-409f-9876-b97a2278a0d0",
"name": "Alert Sales (Standard)",
"type": "n8n-nodes-base.slack",
"notes": "Posts to #leads channel for standard priority",
"onError": "continueRegularOutput",
"position": [
-672,
512
],
"parameters": {
"text": "=\ud83d\udccb New Lead\n\n\ud83d\udc64 {{ $('Normalize Lead Data').item.json.fullName }}\n\ud83d\udce7 {{ $('Normalize Lead Data').item.json.email }}\n\ud83c\udfe2 {{ $('Calculate Fit Score').item.json.enrichedCompany }}\n\ud83d\udcca Fit: {{ $('Calculate Fit Score').item.json.fitScore }}/100\n\n\ud83d\udd17 Book: {{ $('Format Demo Slots').item.json.bookingUrl }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "name",
"value": "leads"
},
"otherOptions": {
"mrkdwn": true
}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 2.3
},
{
"id": "66a0f0e0-afc8-4c1f-a02a-65ae586a2f82",
"name": "Wait 10 Minutes",
"type": "n8n-nodes-base.wait",
"notes": "Waits for sales rep to respond in Slack thread",
"position": [
1504,
32
],
"parameters": {
"unit": "minutes",
"amount": 10
},
"notesInFlow": true,
"typeVersion": 1.1
},
{
"id": "91a5228c-5072-4159-913f-b549c6ed4936",
"name": "Check Slack Replies",
"type": "n8n-nodes-base.slack",
"notes": "Checks if sales team replied in thread",
"onError": "continueRegularOutput",
"position": [
1696,
32
],
"parameters": {
"ts": "={{ $('Alert Sales (High Intent)').first().json.ts }}",
"filters": {},
"resource": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Alert Sales (High Intent)').first().json.channel }}"
},
"operation": "replies"
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 2.3
},
{
"id": "efef0ae7-7c05-4e42-9e57-c56229bc08ab",
"name": "No Response?",
"type": "n8n-nodes-base.if",
"notes": "Sends email if no Slack reply (message count = 1)",
"position": [
1904,
32
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "reply-check",
"operator": {
"type": "number",
"operation": "equals"
},
"leftValue": "={{ $json.messages && $json.messages.length ? $json.messages.length : 1 }}",
"rightValue": 1
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "423bf560-215a-4f67-8b37-1d63014ae027",
"name": "Send Fallback Email",
"type": "n8n-nodes-base.sendGrid",
"notes": "Auto-sends booking email if sales doesn't respond",
"maxTries": 2,
"position": [
2144,
32
],
"parameters": {
"subject": "=Book Your Demo - {{ $('Calculate Fit Score').first().json.enrichedCompany }}",
"toEmail": "={{ $('Normalize Lead Data').first().json.email }}",
"fromName": "Demo Team",
"resource": "mail",
"fromEmail": "user@example.com",
"contentType": "text/html",
"contentValue": "=<h2>Thanks for your interest!</h2><p>Hi {{ $('Normalize Lead Data').first().json.fullName }},</p><p>We received your demo request for {{ $('Calculate Fit Score').first().json.enrichedCompany }}.</p><p><strong>Next available:</strong></p><ul><li>{{ $('Format Demo Slots').first().json.nextSlots[0] }}</li><li>{{ $('Format Demo Slots').first().json.nextSlots[1] }}</li></ul><p><a href='{{ $('Format Demo Slots').first().json.bookingUrl }}' style='background:#0066cc;color:white;padding:12px 24px;text-decoration:none;border-radius:4px;display:inline-block;'>Book Demo Now</a></p><p>Looking forward to connecting!</p>",
"additionalFields": {}
},
"credentials": {
"sendGridApi": {
"name": "<your credential>"
}
},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "4fc94d27-1dff-4828-9bd6-6f8544c2d59c",
"name": "Log to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"notes": "Logs all lead data for analytics and reporting",
"onError": "continueRegularOutput",
"position": [
1136,
-64
],
"parameters": {
"columns": {
"value": {
"Name": "={{ $('Normalize Lead Data').item.json.fullName }}",
"Email": "={{ $('Normalize Lead Data').item.json.email }}",
"Company": "={{ $('Calculate Fit Score').item.json.enrichedCompany }}",
"Page URL": "={{ $('Normalize Lead Data').item.json.pageUrl }}",
"Priority": "={{ $('Calculate Fit Score').item.json.fitScore >= 60 ? 'High' : 'Standard' }}",
"Fit Score": "={{ $('Calculate Fit Score').item.json.fitScore }}",
"Timestamp": "={{ $('Normalize Lead Data').item.json.submittedAt }}",
"UTM Source": "={{ $('Normalize Lead Data').item.json.utmSource }}",
"Booking URL": "={{ $('Format Demo Slots').item.json.bookingUrl }}",
"HubSpot Deal": "={{ $('Create HubSpot Deal').item.json.id || 'Failed' }}",
"Fallback Email": "={{ $('Check Slack Replies').item.json.messages && $('Check Slack Replies').item.json.messages.length === 1 ? 'Sent' : 'Not Needed' }}",
"Sales Response": "={{ $('Check Slack Replies').item.json.messages && $('Check Slack Replies').item.json.messages.length > 1 ? 'Yes' : 'No' }}",
"HubSpot Contact": "={{ $('Create HubSpot Contact').item.json.id || 'Failed' }}",
"Slots Available": "={{ $('Format Demo Slots').item.json.slotCount }}"
},
"mappingMode": "defineBelow"
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Lead Log"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 4.7
},
{
"id": "b2d9ad7d-6a02-4d5a-9088-33a9b9453aeb",
"name": "Webhook Response",
"type": "n8n-nodes-base.respondToWebhook",
"notes": "Returns success message to form with booking details",
"position": [
1136,
128
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={\"success\":true,\"message\":\"Demo request received!\",\"fitScore\":{{$('Calculate Fit Score').item.json.fitScore}},\"priority\":\"{{$('Calculate Fit Score').item.json.fitScore>=60?'high':'standard'}}\",\"availableSlots\":{{$('Format Demo Slots').item.json.slotCount}},\"bookingUrl\":\"{{$('Format Demo Slots').item.json.bookingUrl}}\"}"
},
"notesInFlow": true,
"typeVersion": 1.4
},
{
"id": "e94eb671-7d06-48f2-a282-71a0e200ce05",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
-128
],
"parameters": {
"color": 7,
"width": 448,
"height": 432,
"content": "## Create HubSpot contact + deal\n"
},
"typeVersion": 1
},
{
"id": "8c3fc727-c681-4051-826e-fd71fa75c810",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-336,
-128
],
"parameters": {
"color": 7,
"width": 880,
"height": 432,
"content": "## Get real Calendly slots\n"
},
"typeVersion": 1
},
{
"id": "8f9aa05d-df2e-4800-8dcc-0459d82024c0",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
-128
],
"parameters": {
"color": 7,
"width": 400,
"height": 432,
"content": "## Post to #hot-leads Slack\n\n"
},
"typeVersion": 1
},
{
"id": "692eceab-17c8-48f2-bea6-0a7446bd1fb4",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
976,
-128
],
"parameters": {
"color": 7,
"width": 416,
"height": 432,
"content": "## Log to Google Sheet and Send Response\n"
},
"typeVersion": 1
},
{
"id": "a13d737c-0348-40d3-9a80-12f749e7fa00",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1408,
-128
],
"parameters": {
"color": 7,
"width": 960,
"height": 432,
"content": "## Wait 10 minutes, Check for response. Send email if no reply"
},
"typeVersion": 1
},
{
"id": "8bac8fd3-abd1-42c5-bd55-191085c497f5",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1824,
-16
],
"parameters": {
"color": 7,
"width": 944,
"height": 432,
"content": "## Enrich the Lead data and calculate the Fit Score"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "8d3ac6ae-89d0-4f0e-b8bb-e399de7da43e",
"connections": {
"No Response?": {
"main": [
[
{
"node": "Send Fallback Email",
"type": "main",
"index": 0
}
]
]
},
"Wait 10 Minutes": {
"main": [
[
{
"node": "Check Slack Replies",
"type": "main",
"index": 0
}
]
]
},
"Format Demo Slots": {
"main": [
[
{
"node": "Alert Sales (High Intent)",
"type": "main",
"index": 0
}
]
]
},
"High Intent Lead?": {
"main": [
[
{
"node": "Create HubSpot Contact",
"type": "main",
"index": 0
}
],
[
{
"node": "Alert Sales (Standard)",
"type": "main",
"index": 0
}
]
]
},
"Lead Form Webhook": {
"main": [
[
{
"node": "Normalize Lead Data",
"type": "main",
"index": 0
}
]
]
},
"Calculate Fit Score": {
"main": [
[
{
"node": "High Intent Lead?",
"type": "main",
"index": 0
}
]
]
},
"Check Slack Replies": {
"main": [
[
{
"node": "No Response?",
"type": "main",
"index": 0
}
]
]
},
"Create HubSpot Deal": {
"main": [
[
{
"node": "Get Calendly Event Types",
"type": "main",
"index": 0
}
]
]
},
"Normalize Lead Data": {
"main": [
[
{
"node": "Enrich with Clearbit",
"type": "main",
"index": 0
}
]
]
},
"Enrich with Clearbit": {
"main": [
[
{
"node": "Calculate Fit Score",
"type": "main",
"index": 0
}
]
]
},
"Create HubSpot Contact": {
"main": [
[
{
"node": "Create HubSpot Deal",
"type": "main",
"index": 0
}
]
]
},
"Get Available Demo Slots": {
"main": [
[
{
"node": "Format Demo Slots",
"type": "main",
"index": 0
}
]
]
},
"Get Calendly Event Types": {
"main": [
[
{
"node": "Prepare Availability Params",
"type": "main",
"index": 0
}
]
]
},
"Alert Sales (High Intent)": {
"main": [
[
{
"node": "Wait 10 Minutes",
"type": "main",
"index": 0
},
{
"node": "Log to Google Sheets",
"type": "main",
"index": 0
},
{
"node": "Webhook Response",
"type": "main",
"index": 0
}
]
]
},
"Prepare Availability Params": {
"main": [
[
{
"node": "Get Available Demo Slots",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
calendlyOAuth2ApiclearbitApigoogleSheetsOAuth2ApihubspotAppTokensendGridApislackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Real-Time Lead Processing - Captures and processes leads instantly from website forms with zero delay Intelligent Fit Scoring - Automatically scores leads 0-100 based on company size, seniority, and revenue Dual-Track Routing - High-intent leads (60+) get fast-track treatment,…
Source: https://n8n.io/workflows/11200/ — 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.
This is ideal for agencies, freelancers, SaaS founders, and small sales teams who want every lead recorded and followed up automatically within seconds. The workflow supports two storage options: HubS
Monitor CRM accounts for hiring spikes by enriching HubSpot companies with PredictLeads job data and alerting your team via Slack.
A webhook receives a form submission with an email address The email is validated, then Lusha enriches the contact If phone or email is missing, a fallback provider fills the gaps via HTTP request Dat
SMB sales teams and SaaS companies who want to automatically prioritize and nurture new leads without manual qualification. Perfect for businesses getting 50+ leads per month who need to identify high
Automate your lead qualification pipeline — capture Typeform Webhook leads, enrich with APIs, score intelligently, and route to HubSpot, Slack, and Sheets in real-time.