Building a Data Enrichment Waterfall That Doesn't Waste Credits
A waterfall is just a rule: try one data source, and only pay for the next one if the first comes up empty or low-confidence. Most teams skip the rule and query every provider on every contact, which is how you end up with three vendors billing you for the same email address.
The fix isn't picking a single winner. It's deciding which provider goes first, what counts as a good enough match, and who checks whether the order still makes sense once your target list changes.
Vendors Covered in this Article
Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.
Why Order the Providers Instead of Just Picking One
No single contact database covers everyone you want to reach, and paying full price at every provider for every contact is how enrichment budgets quietly become a bigger line item than the sales tools themselves.
New-logo win rates on qualified opportunities run close to 19 percent across B2B teams, so a contact record that turns out to be wrong is rarely just a data problem, it's a rep's afternoon spent on someone who was never reachable1. A waterfall exists to keep that from happening on every record: query the cheapest source first, check the confidence score, and only spend more when that source misses.
The mechanics are simple even when the setup takes work. Each provider in the chain returns either a verified match, a low-confidence guess, or nothing. Only the third case, or a guess below your threshold, should trigger the next layer. Anything else means you're paying twice for information you already had.
Where Apollo, ZoomInfo and Lusha Each Earn a Spot in the Order
Apollo tends to sit first for teams already using it for outreach, since a contact enriched there doesn't need to be exported anywhere else before a rep can act on it. Its coverage is broad rather than deep, which is fine for the bulk of a mid-market list.
ZoomInfo is usually worth its higher per-contact cost only for the accounts that actually matter: named target accounts, org charts you need mapped correctly, or verticals where its data has historically been stronger. Running it against your whole list defeats the point of a waterfall, since you'd be paying enterprise-tier prices for contacts a cheaper source would have resolved anyway.
Lusha works well as a fast, cheap fallback layer for direct dials and personal emails when the first two sources miss, especially through its browser extension when a rep is already looking at a LinkedIn profile and wants a number without switching tools.
None of this ordering is fixed forever. A provider that used to lead your list can quietly lose coverage in a segment you care about, which is exactly why the order needs revisiting rather than being set once at rollout and left alone.
Set a Confidence Floor Instead of Accepting Every Match
A waterfall that accepts anything a provider returns just moves the garbage-in problem downstream instead of solving it. Say your list has 2,000 contacts and a provider returns a match for all of them: some share of those matches will be catch-all guesses dressed up as verified emails, and sending to them costs you deliverability, not just money.
- Treat a catch-all domain match as unverified, not confirmed, and route it to manual checking rather than straight into a sequence
- Set a minimum confidence score per field (email, phone, title) and decide in advance what happens below it
- Log which layer actually resolved each contact so you can tell whether your order still matches reality three months from now
- Sample-check a batch of "verified" matches by hand periodically, since a provider's own confidence label isn't always as reliable as it sounds
The Ownership Gap That Quietly Breaks Most Waterfalls
Providers change their coverage, their pricing tiers and their APIs without asking you first, and a waterfall nobody owns drifts out of date the same way an unmonitored automation quietly stops working.
Someone on the team needs to check match rates and bounce rates on a schedule, not just when a rep complains that a list bounced. That review is what tells you whether Apollo is still resolving most of your list or whether it's quietly become the layer that never fires, which usually means your budget is going somewhere it doesn't need to.
This is also where teams catch pricing changes early. A provider that raises its per-credit cost mid-year can flip the economics of your ordering overnight, and the only way to notice before your bill does is to actually be watching.
Handing Clean Contacts to Outbound Once the Waterfall Clears
Keep sourcing and sending as separate systems. Once a record clears your confidence floor, it should move into a sequencer like lemlist without carrying provider-specific formatting or fields the sending tool doesn't understand.
That separation matters more than it sounds: if you swap Lusha for a different fallback provider next year, your outbound cadences and templates shouldn't need to be rebuilt just because the sourcing layer changed underneath them. The sequencer should only ever see a clean, standardized contact record, regardless of which layer of the waterfall actually produced it.
What Good Looks Like
A working data waterfall queries providers in a set order, only accepts a match above a defined confidence floor, and gets checked against real match and bounce rates instead of assumed data quality.
Building The Capability (5-Stage Skill Ladder)
How to Get Started
Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.
Apollo works well as the first layer in a waterfall since reps are usually already working inside it for outreach, so a match there needs no extra handoff.
Once a contact clears your confidence floor, lemlist is where it goes for warmed-up cold outreach, kept separate from whichever provider sourced it.
Frequently Asked Questions
Do I need all three tools, or can a waterfall run on just Apollo?
Apollo alone can carry a small or early-stage team's waterfall if your contacts are mostly mid-market and US-based. Add ZoomInfo for named target accounts or Lusha as a cheap fallback once single-vendor gaps start costing more in rep time than a second layer would cost in credits.
How do I tell if my waterfall order is actually working?
Track match rate and bounce rate per layer, not just overall. If your second layer almost never fires, either your first layer is already covering more than you assumed, or the order is backward and you're paying for a fallback you don't need.
What's the most common mistake teams make setting this up?
Building it once and never revisiting it. Providers change coverage and pricing regularly, and a waterfall nobody reviews on a schedule slowly stops matching what your list actually needs, even though it still runs without errors.
Sources
Where we quote a benchmark, we show its source. Other figures in this guide are estimates or general guidance, so check them against your own numbers.
- Average B2B new-logo win rate. Ebsta x Pavilion 2025 GTM Benchmarks Report, 2025.
Related Guides
Cognism, Lusha or Apollo: Matching Sales Intelligence to Your Stack
Cognism, Lusha and Apollo all sell sales intelligence, but they're built for different priorities. Here's how to tell which one actually fits.
How to Structure an Enrichment Stack That Doesn't Sprawl
How to tier enrichment effort by deal size, match signal freshness to how fast you act, and keep a growing stack of tools from overlapping and sprawling.
Apollo vs ZoomInfo for BI and Data Engineering Firms
API caps and export limits, not feature grids, decide this comparison for BI and data engineering consultancies. Here's what to check before you buy.
Why Static Contact Lists Are Losing Ground to First-Party Signals
Why static firmographic lists are getting less reliable, how first-party product and web signals are replacing third-party guesses, and how to prepare.
Why Enrichment Waterfalls Built Inside Salesforce Flow Fall Over
A data enrichment waterfall built entirely in Salesforce Flow works in testing but breaks under real volume. Here's why, and where the logic should live.
Building a Waterfall Enrichment Stack for Outbound
How to order enrichment providers in a waterfall so outbound lists get filled without paying every vendor for every contact.