Explainer

What Is Waterfall Enrichment?

A waterfall asks one provider, then the next, and stops at the first answer. Here is how it works, what it costs and where it breaks.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

Waterfall enrichment is a method that asks several data providers for the same field in a fixed order and stops at the first valid answer. You get a higher fill rate than any one provider gives you, and you pay later providers only for the gaps.

Key takeaways

  • A waterfall is a fallback chain. Provider one runs on every row. Provider two runs only on rows that provider one missed.
  • It raises coverage. It does not raise quality on its own, so a verification step belongs inside the chain.
  • Order is the whole design. Put the provider with the best coverage and the lowest miss cost first.
  • On LeadOcean, a miss on POST /v1/people/enrich costs nothing, which makes it a cheap first hop.

What it is

Waterfall enrichment is a sequential lookup across multiple data providers, where each row goes to the next provider only if the previous one returned nothing usable for that field.

"Enrichment" means adding fields to a record you already have: a work email, a phone number, a job title. "Waterfall" describes the shape. Rows start at the top and spill down to the next provider when they find no answer.

Vendors that sell this as a product publish the size of their chain. BetterContact lists 20+ data providers in one waterfall (BetterContact pricing, September 2026). FullEnrich lists 25+ data sources (FullEnrich pricing, September 2026). Clay includes waterfalls on its free plan (Clay pricing, September 2026).

How it works

Each hop is a request, a test and a decision. The test is what keeps the chain honest.

  1. Pick the field. A waterfall targets one field at a time: work email, mobile number, or company data.
  2. Order the providers. Rank them by coverage for your market, then by cost per miss. The best fit goes first.
  3. Call provider one on every row. Send the identifier you hold, such as a LinkedIn URL or an email.
  4. Test the answer. Accept it only if the field is present and passes your rule, such as an email status of verified.
  5. Pass the gaps down. Send only the failed rows to provider two. Repeat until every row is filled or the chain ends.
  6. Log the winner. Store which provider filled each field. You need that record to retire hops that stop paying off.

Worked example, with placeholder numbers. Take a list of 1,000 rows and one field, a work email. Assume provider one fills 700. Provider two sees 300 and fills 150. Provider three sees 150 and fills 60. The chain fills 910 of 1,000. The 91% fill rate and the hit rates are assumptions for this example, not measured results.

Waterfall enrichment vs single-provider enrichment vs verification

People mix up three separate jobs. A waterfall finds a value. Verification judges a value you already hold. A single provider does one lookup and stops.

Waterfall enrichmentSingle-provider enrichmentEmail verification
Question it answersWho can fill this field?What does this one source hold?Will this address accept mail?
Providers calledSeveral, in orderOneUsually one
Runs onRows still emptyEvery rowRows that already have an email
Main benefitHigher fill rateSimple, one contractFewer bounces
Main riskMixed data quality, extra cost per hopGaps with no fallbackCatch all domains stay unprovable

A good chain uses all three. It fills with the waterfall and verifies the result before you send. Pricing models differ on what a miss costs. FullEnrich charges 0 credits when nothing is found (FullEnrich credit docs, September 2026). Check this per vendor, because it decides how expensive a long chain gets.

When it matters

Cold outbound with a coverage target

If a campaign needs 90% of your list to have an email, one source rarely gets there. A chain covers the long tail of smaller companies that the first source misses. Decide the target before you build the chain, and drop hops that add under a few points.

Phone numbers

Mobile numbers are the sparsest field, so they gain the most from extra hops. They are also the costliest per hit at most vendors. Run phones last and only on rows that already passed your fit filters.

Agents and automated flows

An agent that enriches on request needs a clear stop rule. A waterfall gives it one: call the next provider only on a miss, and cap the hops per row. Without a cap an agent can spend on every provider for one stubborn row.

Keeping a CRM fresh

Records decay as people change jobs. A waterfall suits a recurring refresh: run hop one on every stale record each month, and let later hops touch only the rows that came back empty. Store the date each field was filled, so you never overwrite a value a rep typed with an older one.

When it does not matter

If your rows carry a LinkedIn URL and your first source holds most of them, a second hop adds little. Measure the fill rate of hop one on a 1,000-row sample before you pay for a chain.

How LeadOcean handles it

LeadOcean does not run the waterfall. It is a first hop: one identifier in, the record we hold out. Your script, a Clay table, a Zapier, Make or n8n flow, or an agent decides what happens on a miss (LeadOcean enrich docs, September 2026).

POST /v1/people/enrich takes exactly one of linkedin_url, email, phone or person_id. Set reveal_email to true to get the address. A person we hold nothing for returns a 404 and costs nothing (LeadOcean OpenAPI, September 2026). The MCP tool leadocean_get_lead behaves the same way.

bash
curl -s -o hop1.json -w "%{http_code}\n" \
  -X POST "https://api.leadocean.io/v1/people/enrich" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{"linkedin_url":"https://www.linkedin.com/in/acme-example","reveal_email":true}'

On a 200, read email_status in hop1.json and keep the row only if it is verified. On a 404 there is no charge, so send the row to hop two.

Two limits to plan for. There is no lookup by name plus company: search by domain first, then enrich by person_id. And the v2 contact endpoints, such as GET /v2/people/phone, cost one record per call even when they find nothing, so keep them out of hop one.

Pricing is two plans: Free (1,000 records, one-off, no card) and Pro at $499 a month. See pricing. For a full workflow, read the waterfall enrichment use case. For tool comparisons, read the best waterfall enrichment tools. For the term itself, see enrichment.

FAQ

What is the difference between waterfall enrichment and normal enrichment?

Normal enrichment queries one source. Waterfall enrichment queries several in order and keeps the first valid answer. The waterfall fills more rows, at the cost of a more complex setup and mixed data quality.

Is waterfall enrichment more expensive?

It can be. Each hop costs money on its hits, and some vendors also charge on misses. The saving comes from sending later providers only the rows the first one missed. Check what each provider charges for a miss before you order the chain.

How many providers should a waterfall have?

Start with two. Add a third only if a 1,000-row sample shows it fills enough extra rows to justify its cost. Most of the gain comes from the first few hops.

Does a waterfall guarantee valid emails?

No. A waterfall finds a value. It does not prove the mailbox exists. Test each answer against an email status, and treat catch_all addresses as a separate, smaller send. LeadOcean gives no refund for bounced emails, so read email_status first.

Can I run a waterfall with LeadOcean?

Yes, with LeadOcean as the first hop. You write the later hops yourself, or run them in a tool like Clay. The app at app.leadocean.io has an Exports page but no waterfall builder.

Make LeadOcean the first hop in your waterfall

Free to start. No credit card. 1,000 records to spend whenever you like.

Get your free API key →