advanced2 hours3 min read

How to waterfall enrich HubSpot contacts across Apollo, Clearbit, and People Data Labs

Chain Apollo, Clearbit, and People Data Labs to maximize HubSpot contact coverage. Compare n8n, Make, code, and Claude Code approaches.

How to waterfall enrich HubSpot contacts across Apollo, Clearbit, and People Data Labs

This recipe includes a downloadable n8n template and Claude Code skill.

Workflow

New contact to enrich
Enrich via Apollo
Fields missing?
Yes
Enrich via Clearbit
Still missing?
Yes
Enrich via PDL
No
Update HubSpot

Why waterfall enrichment?

No single data provider has complete coverage. Apollo typically matches 60-70% of B2B contacts. Clearbit adds another 10-15% for enterprise contacts with strong LinkedIn presence. People Data Labs fills some of the remaining gaps from its aggregated dataset. Relying on just one provider means accepting 30-40% of your contacts with incomplete data.

Waterfall enrichment chains providers in sequence — trying each one and only calling the next for fields the previous provider missed. This is the most-discussed enrichment pattern in RevOps communities because it maximizes coverage while minimizing cost. You only pay for the providers you actually need.

What you'll get
HubSpot Contact
Job Title
(empty)Head of Sales
Phone
(empty)+1 (650) 555-0177
Company Size
(empty)51-200
Enrichment Source
(empty)apollo+clearbit

How it works

Every approach follows the same cascade pattern:

  1. Find unenriched contacts — search HubSpot for contacts missing job title, company, phone, or other critical fields
  2. Try Apollo first — call Apollo People Match with the contact's email. Apollo has the broadest B2B coverage and lowest per-credit cost
  3. Check for gaps — evaluate which target fields are still empty after Apollo
  4. Fall back to Clearbit — for contacts with remaining gaps, call Clearbit Person Find. Clearbit is strongest on enterprise contacts and company data
  5. Final fallback to PDL — for any remaining gaps, call People Data Labs Enrich. PDL aggregates data from multiple sources and catches contacts the others miss
  6. Write to HubSpot — update the contact with all enriched fields and an enrichment_source attribute (e.g., "apollo+clearbit") for provider ROI tracking

The key rule: each provider only fills fields that previous providers left empty. Apollo data is never overwritten by Clearbit or PDL.

What you'll need

Prerequisites
  • HubSpot account with API access
  • Apollo API key (paid plan)
  • Clearbit API key (or HubSpot Enrichment if using Clearbit via HubSpot)
  • People Data Labs API key (paid plan)
  • Custom HubSpot properties to track enrichment source and status

Which approach should I use?

  • n8n — best for teams that want visual branching logic. IF nodes make the cascade clear, and Code nodes handle the field-merging logic. Self-hosted n8n means unlimited executions. The trade-off is node count — expect 10+ nodes for the full three-provider waterfall.
  • Make — good if you prefer visual workflows with Router-based branching. Make's ifempty() function simplifies the merge logic. Credit cost scales with the number of providers called per contact (8-10 credits for a full cascade).
  • Code + Cron — most cost-effective and easiest to modify. The waterfall is a simple loop over a providers array. Swapping provider order is one line. Adding a fourth provider is adding one function. Best for teams that want full control.
  • Claude Code — a guided skill that lets you waterfall enrich conversationally ("enrich contacts missing job titles, use all three providers") or on a schedule. No code to write — the agent reads API reference files for each provider and handles the cascade. Best for ad-hoc enrichment or testing provider coverage before committing to a platform.

Choose your approach

Select an approach below to see the full step-by-step guide.

Compare approaches

n8n

high
Cost: $0-24/mo
Latency: polling
Code: low
Reliability: 24/7 cloud

Make

high
Cost: $10-29/mo
Latency: polling
Code: none
Reliability: 24/7 cloud

Code + Cron

high
Cost: $0
Latency: real-time
Code: high
Reliability: Self-hosted

Claude Code

low
Cost: Usage-based
Latency: on-demand
Code: none
Reliability: On demand

n8n

high

IF/Switch nodes to cascade through providers based on missing fields

Downloadable templateView guide

Make

high

Router with filters to branch through enrichment providers sequentially

Cost: $10-29/moView guide

Code + Cron

high

Python script with try/except cascade through provider APIs

Cost: $0View guide

Claude Code

low

Guided Claude Code skill with API references — waterfall enrich contacts conversationally, on a schedule, or via Cowork

Downloadable skillView guide

Related Recipes

Frequently Asked Questions

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.