Clearbit email verification with BillionVerify
Clearbit enriches contact and company data so your sales and marketing teams can act on better intelligence. Pairing it with BillionVerify ensures the email addresses you enrich and pass downstream are deliverable, keeping your outreach lists clean and your sender reputation intact.
Why verify before the send
Enriched contacts are only valuable when their email addresses actually work. Invalid, disposable, or role-based addresses mixed into Clearbit-enriched lists drive up bounce rates and erode domain reputation. BillionVerify filters these out before they reach your CRM or outreach sequences, protecting every campaign that depends on Clearbit data.
Ready-to-use n8n workflow
Import this workflow into n8n β it verifies every address with BillionVerify before Clearbit sends, so only deliverable contacts are emailed. Install the BillionVerify community node first, then add your API key. Adapted from this n8n template
{
"name": "Auto-schedule demos for high-intent leads with Clearbit, Slack, and Calendly + BillionVerify",
"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β100). \n- **Lead Routing**: \n - **High-Intent Leads (score β₯ 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β’ Fit score logic (Calculate Fit Score node)\nβ’ Slack channel names\nβ’ Email template\nβ’ 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 β₯60)\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
],
"webhookId": "demo-webhook-001",
"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": {
"id": "credential-id",
"name": "clearbitApi 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 β₯60 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": {
"id": "credential-id",
"name": "hubspotAppToken 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": {
"id": "credential-id",
"name": "hubspotAppToken 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": {
"id": "credential-id",
"name": "calendlyOAuth2Api 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": {
"id": "credential-id",
"name": "calendlyOAuth2Api 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
],
"webhookId": "6b9e8ef0-29ce-4295-b754-3f77f5ae6795",
"parameters": {
"text": "=π₯ HIGH INTENT LEAD\n\nπ€ {{ $('Normalize Lead Data').item.json.fullName }}\nπ§ {{ $('Normalize Lead Data').item.json.email }}\nπ’ {{ $('Calculate Fit Score').item.json.enrichedCompany }} ({{ $('Calculate Fit Score').item.json.companySize }} employees)\nπΌ {{ $('Calculate Fit Score').item.json.jobTitle }}\nπ Fit Score: {{ $('Calculate Fit Score').item.json.fitScore }}/100\n\nπ― Source: {{ $('Normalize Lead Data').item.json.utmSource || 'Direct' }}\nπ Page: {{ $('Normalize Lead Data').item.json.pageUrl }}\nπ¬ Message: {{ $('Normalize Lead Data').item.json.message || 'None' }}\n\nπ
Available Slots ({{ $('Format Demo Slots').item.json.slotCount }} total):\nβ’ {{ $('Format Demo Slots').item.json.nextSlots[0] }}\nβ’ {{ $('Format Demo Slots').item.json.nextSlots[1] }}\n\nπ Book: {{ $('Format Demo Slots').item.json.bookingUrl }}\n\nβ‘ Respond in 10min or auto-email sends!",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "name",
"value": "hot-leads"
},
"otherOptions": {
"mrkdwn": true
}
},
"credentials": {
"slackApi": {
"id": "credential-id",
"name": "slackApi 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
],
"webhookId": "f7f985ab-c5d2-490a-a549-38ebd0eaaafc",
"parameters": {
"text": "=π New Lead\n\nπ€ {{ $('Normalize Lead Data').item.json.fullName }}\nπ§ {{ $('Normalize Lead Data').item.json.email }}\nπ’ {{ $('Calculate Fit Score').item.json.enrichedCompany }}\nπ Fit: {{ $('Calculate Fit Score').item.json.fitScore }}/100\n\nπ Book: {{ $('Format Demo Slots').item.json.bookingUrl }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "name",
"value": "leads"
},
"otherOptions": {
"mrkdwn": true
}
},
"credentials": {
"slackApi": {
"id": "credential-id",
"name": "slackApi 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
],
"webhookId": "wait-001",
"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
],
"webhookId": "f1916193-ab83-4196-8039-cef48a44c1a1",
"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": {
"id": "credential-id",
"name": "slackApi 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": {
"id": "credential-id",
"name": "sendGridApi 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": {
"id": "credential-id",
"name": "googleSheetsOAuth2Api 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
},
{
"parameters": {
"operation": "verify",
"email": "={{ $('Normalize Lead Data').first().json.email }}",
"additionalOptions": {}
},
"type": "n8n-nodes-billionverify.billionVerify",
"typeVersion": 1,
"position": [
1784,
32
],
"name": "Verify Email (BillionVerify)",
"credentials": {
"billionVerifyApi": {
"id": "",
"name": "BillionVerify account"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "is-deliverable",
"leftValue": "={{ $json.is_deliverable }}",
"rightValue": "",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
]
}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
1964,
32
],
"name": "IF deliverable"
}
],
"connections": {
"No Response?": {
"main": [
[
{
"node": "Verify Email (BillionVerify)",
"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
}
]
]
},
"Verify Email (BillionVerify)": {
"main": [
[
{
"node": "IF deliverable",
"type": "main",
"index": 0
}
]
]
},
"IF deliverable": {
"main": [
[
{
"node": "Send Fallback Email",
"type": "main",
"index": 0
}
],
[]
]
}
},
"settings": {
"executionOrder": "v1"
}
}Workflow templates with Clearbit
Ready-to-use workflows that verify emails before Clearbit sends.
How it works
- 1
Connect Clearbit and BillionVerify in n8n using the BillionVerify community node, or link them via Integrately with a single click.
- 2
Trigger verification whenever Clearbit returns an enriched contact β in real time or as a batch from an existing list.
- 3
BillionVerify checks each email for deliverability, disposable domains, role addresses, and catch-all status.
- 4
Contacts that pass verification flow into your CRM or outreach tool; invalid addresses are flagged or discarded.
- 5
Monitor verification results over time to maintain a consistently clean pipeline.
When to use this
Validate enriched leads before CRM entry
When Clearbit enriches a new lead, route the email through BillionVerify first. Only store contacts with deliverable addresses, preventing bad data from polluting your CRM and skewing conversion metrics.
Protect outbound sequences from bounces
Before passing Clearbit-enriched prospects to your sales engagement tool, verify each email. Removing invalid and catch-all addresses keeps bounce rates low and preserves the domain reputation that powers your entire outbound operation.
FAQ
Does BillionVerify work with Clearbit Enrichment and Clearbit Reveal?
Yes. You can verify emails from any Clearbit product β Enrichment, Prospector, or forms β by routing the output through BillionVerify via n8n, Integrately, or the REST API before storing or sending.
What types of addresses does BillionVerify catch?
BillionVerify detects invalid addresses, disposable email domains, role-based addresses (info@, support@), and catch-all domains where deliverability cannot be confirmed, giving you a full risk picture.
Can I verify a large Clearbit export in bulk?
Absolutely. Upload a CSV export from Clearbit to BillionVerify's bulk verification endpoint or process records in batches through the REST API. Results are returned with per-address status codes.
Verify emails in Clearbit
Create a free account, grab your API key, and stop bounces before they happen.
Get started free