Resources
Article GTM Strategy 8 min read

Waterfall Enrichment: Finish the Free Steps First

Waterfall enrichment runs sources cheapest-first, so paid credits only cover the remainder. The order, the dedup rule, and the data-decay clock behind it.

The short version

  • Waterfall enrichment means running enrichment as an ordered cascade, cheapest source first, and only paying for the records the free steps could not resolve.
  • The company domain is the deduplication key, so domain coverage has to be finished before the merge and before any paid step.
  • Deduplicate before you enrich. Paid enrichment bills per record, so enriching first means paying once per duplicate of the same company.
  • An agent that cannot find a value must return empty. A blank field is recoverable at any time, a wrong one silently corrupts the merge.
  • The urgency is measurable: a typical B2B contact database loses 2.1% of its records a month, compounding to roughly 22.5% a year, according to Datamagnet's 2026 benchmark compilation.

What is waterfall enrichment, and why does the order matter?

Waterfall enrichment resolves a missing data point by trying sources in a fixed sequence rather than all at once, stopping at the first source that answers. The order is by cost, cheapest first. Done properly, most records are resolved before any paid provider is called, and the paid budget covers only the genuinely hard remainder.

The alternative, which is what most teams actually run, is to point one paid provider at the whole list and accept the invoice. That works, and it is expensive in a way that never shows up as a line item: you pay for records you already had, for duplicates of the same company, and for values a free derivation would have produced in seconds.

The sequence below is the one we run at SalesPlaybook on multi-source account lists. It is not the only valid order, but the principle behind it is not negotiable: no credit is spent on a record until every free step has had its turn.

Which enrichment steps cost nothing, and why do they run first?

Three of them, and they routinely resolve the majority of a list. Derive the company domain from an email address where a source carries one. Scrub junk domains that are not companies. Then let records without a domain adopt one by exact name match. All three are deterministic, instant, and free.

1

Domain from email

Everything after the @, where a source carries addresses at all. Free.

2

Junk scrub

Blank every webmail, directory, registry and social domain. They revert to no-domain.

3

Name bridge

A no-domain row whose normalised name matches exactly one known domain adopts it. Zero credits.

4

Paid recovery

Only now. A search agent gets the strongest signal available and returns the registrable domain.

5

Flagged, not deleted

The rest keep a missing-domain status and go on a worklist. Nothing is dropped.

Step one has a trap worth naming. A free-provider domain recurs across many unrelated company names, while a real company domain recurs only across its own offices. So the blocklist alone is not enough: a distinct-name frequency check catches the providers a static list has not heard of yet.

Step three is the one most teams skip, and it is free money. In a list assembled from several sources, the same company frequently appears once with a domain and once without. Matching on the normalised name closes that gap at zero cost, as long as the match is unambiguous. Exactly one candidate, or no adoption.

Order of domain enrichment steps: domain from email, junk scrub, name bridge, paid recovery, flagged records

How quickly does enriched B2B data go stale?

Fast enough that enrichment is a recurring process, not a project. Roughly a fifth of a B2B database becomes unreliable within a year, and email addresses decay faster than company records. That is the number that decides how often the cascade has to run, and it is the argument for making the free steps repeatable.

What decays or breaksMeasured rateWhat it means for the cascadeSource
B2B contact database, per month2.1% of recordsQuarterly re-runs, not annual clean-upsDatamagnet, citing HubSpot
B2B contact database, per yearroughly 22.5% compoundedA year-old list is a fifth wrong before you sendDatamagnet, citing HubSpot
Email addresses, per year23% go bad, down from 28% in 2024Addresses need re-verification, not just re-enrichmentDatamagnet, citing ZeroBounce
Hard bounces, tolerable ceilingbelow 0.5%The quality gate the cascade has to holdMailshake
Total bounce rate, minimum expectationunder 1%Unresolved records get held, not sentMailshake

The decay figures put a clock on the whole exercise. Datamagnet's 2026 compilation, drawing on HubSpot's database-decay work, reports that a typical B2B contact database loses 2.1% of its records a month, compounding to roughly 22.5% a year, with cumulative decay passing 12.0% at month six. On the email side it cites ZeroBounce: 23% of addresses in a typical list go bad every year, down slightly from 28% in 2024. Set that against the deliverability ceiling Mailshake reports, where hard bounces should sit below 0.5% and a total bounce rate under 1% is described as the minimum expectation rather than an aspiration, and the arithmetic is uncomfortable. Cumulative decay reaches 6.2% at month three and 17.4% at month nine on that same curve, so the difference between a quarterly refresh and an annual one is not a matter of taste. A list enriched once and reused for a year cannot hold that ceiling. The cascade is worth building precisely because it is cheap enough to run again.

Where the sequence is in place, the effect shows up in booked meetings rather than in a cleaner spreadsheet. node.energy Generates 5x More Demos in Three Months Through Targeted Outbound With Clay Integrated Into HubSpot is the worked example from SalesPlaybook's own client list, and the enrichment layer is the part of it that did the unglamorous work.

Want to know how much of your current list the free steps would resolve?

Free · 60 minutes · no pitch · a clear fit or no-fit answer.

Book Strategy Call

Why must deduplication happen before you pay for enrichment?

Because paid enrichment bills per record, and a multi-source list contains the same company several times. Enrich first and you pay once per copy, then merge the results into a record whose field conflicts nobody can adjudicate. Deduplicate first and you pay once per company, on a row that survives the merge.

Which is why domain completion has to come before the merge rather than after it. The domain is the deduplication key. A list with 30% missing domains cannot be deduplicated properly no matter how good the merge logic is, because the rows that would have matched have nothing to match on. Free domain coverage first, then dedup, then credits.

Expensive mistake

Running a paid per-company enrichment across the raw union before the dedup. The invoice is the visible damage and the smaller one. The real damage is that you now hold two enriched versions of the same company with conflicting headcount, industry and location, and no way to tell which provider was right. This is the step most teams skip, and then they wonder why two records for the same firm disagree.

What should an enrichment agent do when it cannot find a value?

Return empty. Never guess. This is one rule and it decides whether the whole dataset stays trustworthy, because the two failure modes are not symmetric: a blank field announces itself and can be filled at any later point, while a plausible wrong value passes every validation and quietly poisons everything downstream of it.

For domain recovery specifically, that means the agent returns the registrable domain and nothing else, or it returns nothing. Give it the strongest signal you have, ideally a company LinkedIn URL, otherwise the company name plus country plus something that disambiguates it, a city or a service they offer. In DACH the most reliable single query is the company name plus impressum, because the legal-notice page names the domain directly.

Then re-validate on write-back, against the same blocklist and domain-shape rules that governed the free steps. An agent result is an input, not an authority.

How do you prove a multi-source merge lost no records?

With one assertion you can run every time: the sum of merged-record counts across the deduplicated master must equal the row count of the full union. If those two numbers match, nothing was silently dropped. If they diverge, the merge is wrong and no downstream number can be trusted.

That is why we keep two masters rather than one. A FULL master retains every source record for traceability, and a DEDUPED master holds one row per company with its provenance attached: which source records merged into it, how many, and which fields conflicted. The assertion runs between them. Without it, a market size is a number someone believes rather than one anyone can check.

Keep the domain-name near-duplicates as a flagged review list rather than an automatic merge. TLD variants and shared platform domains look identical to a matcher and are frequently different companies. Flag, then let a person decide.

Which enriched fields are safe to base decisions on?

Only the ones whose origin you can name. Self-reported headcount, industry labels and company type arrive from scrapes and directories at wildly varying quality, so they belong in audit-only columns. A field that drives targeting or scoring needs a known, trusted provider behind it, not a value that merely looks plausible.

The practical rule is to quarantine untrusted firmographics on ingest, into separate columns marked as such, and never let them feed a filter or a score. Keep every original column from every source alongside them, so a later question can be answered without re-sourcing. Nothing gets deleted; things get labelled.

That discipline is what makes the rest of the pipeline defensible. If you build B2B pipeline generation on a list whose fields have known provenance, the targeting argument can be checked. The step before it carries just as much weight: the suppression check has to pass before any paid enrichment runs, and the count it leaves behind is what a pipeline generation plan is built on, in email and in LinkedIn GTM alike. Our AI outbound work sits on top of this layer rather than replacing it, and inside a HubSpot CRM setup the same rule applies to every property a workflow reads.

Spend credits on the remainder, not on the list

Waterfall enrichment is not a tool choice, it is an order of operations: free derivations, then deduplication on the domain, then paid recovery for what is genuinely left, and a flag on everything still unresolved. Teams that run it in that order pay for a fraction of the records and can defend every field in the output. Teams that do not, pay for all of them and can defend none.

Free · 60 minutes · no pitch · a clear fit or no-fit answer.

Authors Fabian Geissler

Frequently asked questions

What is waterfall enrichment?
Waterfall enrichment resolves a missing field by trying data sources in a fixed sequence rather than all at once, stopping at the first source that answers. Sources are ordered by cost, cheapest first, so paid providers are only called for the records that free derivations could not resolve.
In which order should enrichment steps run?
Free derivations first: domain from an email address, then a junk-domain scrub, then a name bridge for rows whose name matches exactly one known domain. Deduplicate on the domain next. Only then pay for recovery of what remains, and flag anything still unresolved rather than deleting it.
Why deduplicate before enriching instead of after?
Paid enrichment bills per record, and a multi-source list holds the same company several times. Enriching first means paying once per duplicate, then merging results whose field conflicts nobody can adjudicate. Deduplicating first means one charge per company, on a row that survives the merge intact.
What should an enrichment agent do if it cannot find a value?
Return empty rather than guess. The two failure modes are not symmetric: a blank field announces itself and can be filled later, while a plausible wrong value passes validation and corrupts the deduplication silently. Every agent result is re-validated on write-back against the same blocklist rules.
How fast does B2B contact data decay?
Datamagnet's 2026 compilation, citing HubSpot, reports that a typical B2B contact database loses 2.1% of its records a month, compounding to roughly 22.5% a year, passing 12.0% by month six. For email specifically it cites ZeroBounce: 23% of addresses go bad annually, down from 28% in 2024. That decay is why the cascade has to be repeatable.

Customer proof

See how other revenue teams solved it.

Explore documented outcomes from comparable pipeline, CRM and sales execution projects.

View relevant client stories

Could your company be the next operating system story?

Use a free 60-minute Strategy Call to clarify the revenue constraint, fit or no fit and the right next step. No pitch.

Book Strategy Call