Identify website visitors with Clearbit Reveal and create HubSpot companies using n8n

high complexityCost: $0-24/mo

Prerequisites

Prerequisites
  • n8n instance (cloud or self-hosted)
  • Clearbit Reveal API key (legacy) or HubSpot account with Breeze Intelligence add-on
  • HubSpot private app token with crm.objects.companies.read and crm.objects.companies.write scopes
  • A way to capture visitor IP addresses (server logs, analytics webhook, or middleware)
  • n8n credential configured for HubSpot
Clearbit is now Breeze Intelligence

Clearbit was acquired by HubSpot and rebranded as Breeze Intelligence. The standalone Reveal API is being sunset. If you're a new user, skip the legacy API approach and use Breeze Intelligence natively within HubSpot (see the Breeze alternative at the end). This guide covers both approaches.

Why n8n?

n8n processes visitor IPs in real time via a webhook — as soon as someone visits your site, the workflow fires. The visual editor makes it easy to add ICP filters, dedup checks, and downstream actions like Slack notifications. Self-hosted n8n is free with unlimited executions.

The trade-off is webhook infrastructure. You need something on your website that captures client IPs and POSTs them to n8n (server middleware, Cloudflare Worker, or GTM server-side container). n8n processes one IP per execution — high-traffic sites may need the batch code approach instead.

How it works

  • Webhook node receives visitor IP and page data from your website infrastructure
  • HTTP Request node calls Clearbit Reveal to resolve the IP to a company
  • IF node filters for ICP matches (company type, employee count, sector)
  • HTTP Request node deduplicates against HubSpot by domain, then creates new company records

Step 1: Set up a webhook to receive visitor IPs

Create a new workflow and add a Webhook node:

  • HTTP Method: POST
  • Path: /visitor-identify
  • Response Mode: Immediately

Your website or analytics platform will POST visitor data to this webhook. The payload should include at minimum:

{
  "ip": "203.0.113.42",
  "page": "/pricing",
  "timestamp": "2026-03-02T10:30:00Z"
}
Capturing IP addresses

Most analytics tools don't expose raw IPs. Common approaches: (1) server-side middleware that logs IPs and forwards to the webhook, (2) a Cloudflare Worker or Vercel Edge Function that captures CF-Connecting-IP or x-forwarded-for, (3) a GTM server-side container.

Step 2: Call Clearbit Reveal API

Add an HTTP Request node:

  • Method: GET
  • URL: https://reveal.clearbit.com/v1/companies/find?ip={{ $json.ip }}
  • Authentication: Header Auth
  • Header Name: Authorization
  • Header Value: Bearer YOUR_CLEARBIT_API_KEY

The response includes company name, domain, industry, employee count, and more.

Step 3: Filter for ICP matches

Add an IF node to filter out noise — ISPs, universities, and companies outside your target market:

  • Condition 1: $json.company.type equals company (filters out ISPs and education)
  • Condition 2: $json.company.metrics.employees greater than 50 (adjust for your ICP)
  • Condition 3: $json.company.category.sector is one of your target sectors
Most IPs won't resolve

Clearbit Reveal resolves roughly 20-30% of B2B traffic to a company. Consumer ISPs, VPNs, and mobile networks return null. Build your workflow to handle null responses gracefully.

Step 4: Check for existing companies in HubSpot

Add an HTTP Request node to search HubSpot by domain:

  • Method: POST
  • URL: https://api.hubapi.com/crm/v3/objects/companies/search
  • Body:
{
  "filterGroups": [{
    "filters": [{
      "propertyName": "domain",
      "operator": "EQ",
      "value": "{{ $json.company.domain }}"
    }]
  }]
}

Add an IF node: if total equals 0, create a new company. Otherwise, optionally update the existing record with the latest visit data.

Step 5: Create company in HubSpot

Add an HTTP Request node:

  • Method: POST
  • URL: https://api.hubapi.com/crm/v3/objects/companies
  • Body:
{
  "properties": {
    "domain": "{{ $json.company.domain }}",
    "name": "{{ $json.company.name }}",
    "industry": "{{ $json.company.category.industry }}",
    "numberofemployees": "{{ $json.company.metrics.employees }}",
    "city": "{{ $json.company.geo.city }}",
    "state": "{{ $json.company.geo.state }}",
    "country": "{{ $json.company.geo.country }}",
    "description": "{{ $json.company.description }}",
    "website_visitor_page": "{{ $('Webhook').item.json.page }}",
    "website_visitor_date": "{{ $('Webhook').item.json.timestamp }}"
  }
}

Step 6: Activate and test

  1. Send a test POST to your webhook URL with a known corporate IP
  2. Verify the company record appears in HubSpot with correct data
  3. Toggle the workflow to Active

Breeze Intelligence alternative

If you're using HubSpot's Breeze Intelligence instead of the legacy Clearbit API, the visitor identification happens natively within HubSpot. No external API call is needed.

Setup in HubSpot:

  1. Enable Breeze Intelligence in Settings → Breeze Intelligence
  2. Install the HubSpot tracking code on your website
  3. Breeze automatically identifies visiting companies and creates/updates records

You can then use an n8n workflow that triggers on new HubSpot companies (created by Breeze) to enrich or route them — for example, assigning them to a sales rep or posting a notification to Slack.

Troubleshooting

Common questions

How many n8n executions does this use per day?

Each visitor IP that hits the webhook = 1 execution. A site with 500 daily visitors sending IPs = 500 executions/day. n8n Cloud Starter includes 2,500/month, so this would exceed the limit quickly. Self-hosted n8n is free with unlimited executions, making it the better option for high-traffic sites.

Can I batch multiple IPs into one webhook call?

Yes. Send an array of IPs in the webhook payload and use a Split In Batches node to process each one. This reduces webhook overhead but still counts as 1 execution per webhook call (with sub-operations inside).

What if I'm using Breeze Intelligence instead of Clearbit?

Replace the Clearbit HTTP Request node with a HubSpot Trigger node watching for newly created companies. Breeze handles the IP-to-company resolution natively, so your n8n workflow only needs to handle downstream actions (enrichment, routing, Slack notifications).

Cost

  • n8n Cloud Starter: $24/mo for 2,500 executions. Each visitor IP = 1 execution.
  • Self-hosted n8n: Free.
  • Clearbit Reveal (legacy): Pricing varies. Typically volume-based, starting around $99/mo for 2,500 API calls.
  • Breeze Intelligence: Included with HubSpot Marketing Hub or Sales Hub Professional+. Priced per credit — check your HubSpot contract for details.

Looking to scale your AI operations?

We build and optimize automation systems for mid-market businesses. Let's discuss the right approach for your team.