# What is waterfall enrichment, and how does it fill the gaps in a list?

> Waterfall enrichment asks several data providers in turn until one finds the email or phone you need. Here is how it runs in Clay, and what comes before it.

- Canonical page: https://warmup.ai/blog/what-is-waterfall-enrichment
- By Mike Hurley, founder of WarmUp. Published 2026-10-29.
- Category: GTM engineering (https://warmup.ai/blog/category/gtm-engineering)
- Part of: GTM engineering (https://warmup.ai/gtm-engineering)
- Tags: waterfall enrichment, clay, data enrichment, list building

## Key takeaways

- Waterfall enrichment runs several data providers one after another and stops when one finds the missing detail, which raises hit rates over any single provider.
- It fills gaps in a list you already have. The company table and the right roles come first.
- A list with company names and no domains can be fixed first, with ChatGPT to structure it and a search step in Clay to find each domain.
- A waterfall is one of several ways to find contacts. A list match, a single provider or an AI agent can be enough, depending on the list.

Waterfall enrichment is a way to fill the gaps in a list by asking several data providers in turn. If the first provider cannot find a contact's email or phone, the second is asked, then the third, until one finds it or the list of providers runs out. In Clay the sequence runs on every row automatically, which saves time and raises hit rates.

I walked through it as day four of my daily Clay standup and posted it [on LinkedIn](https://www.linkedin.com/feed/update/urn:li:activity:7306061581333803010/). This post explains how it works, and folds in the step that comes before it: turning a list of company names into something a waterfall can run on.

## Why use more than one data provider?

You use more than one data provider because no single provider has every contact. Each one has gaps, in different places. A contact one provider misses, another often has. Running them in sequence means a gap at one provider no longer drops the person from your list, so more of the people you chose end up reachable.

Without a waterfall, teams usually pick one provider and accept its gaps. The list looks complete, but a share of the best-fit people have no email or phone, and nobody contacts them. The waterfall exists so that the list you decided on is the list you can actually work.

It also saves time. Checking several providers by hand for every missing detail is exactly the kind of work that never gets done on a busy week.

## How does a waterfall run in Clay?

A waterfall runs in Clay as a column that tries one provider after another for each row and stops at the first result. You decide what you are looking for, such as a work email or a phone number, and the order of the providers, and Clay works down the list for every contact that still has a gap.

For the standup, I used a telecom company list filtered to businesses that use HubSpot, which I had built earlier in the week with BuiltWith in Clay (the steps are in [building an account list from the tools a market uses](https://warmup.ai/blog/how-to-build-an-account-list-from-the-tools-a-market-uses)). The waterfall then layered on the contact details for decision-makers such as VPs of sales and marketing.

The sequence, in short:

1. **Start from the right people.** The waterfall fills details for contacts you have already chosen; it does not choose them.
2. **Decide what counts as found.** A work email, a direct phone, or both.
3. **Set the order of providers**, then let the column run on every row.
4. **Check what is still missing** at the end. Those rows need a different approach, not another pass of the same one.

## What do you do when a list has names but no domains?

When a list has company names but no domains, fix the list before you look for contacts. Most enrichment starts from a company's domain, so a list of names alone stalls at the first step. Structure the list first, then find each company's domain, and only then look for the people.

We had exactly this with a list of more than 650 target accounts across the United States: company names, and no domains or contact information. Two steps fixed it.

1. **Structure it with ChatGPT.** We dropped the list into ChatGPT and asked it to organise each company's name and the other details we had into a table.
2. **Find the domains in Clay.** We loaded that table into Clay and used the Google Search API to find each company's domain automatically.

Both of those used to be a slog that took a lot of time. With the right tools they are now quick, and the list is ready for the contact search.

## What are the alternatives to a waterfall?

The alternatives to a waterfall are a list match, a single data provider, or an AI agent. Which one fits depends on the list. A waterfall is the strongest option when hit rate matters most, but a simpler route can be enough when the list is easy or small.

- **A list match.** Export the companies and match them against a provider's database, then filter for the roles you want.
- **A single provider through a Clay integration.** Fine when one provider covers your market well.
- **An AI agent** that researches each company and finds the people, useful when the contacts you need are unusual enough that databases miss them.
- **A waterfall** with several providers, when you want the most contacts found from the list you have.

## How do you know the data is good enough to send?

You know the data is good enough to send when every email has been verified and every contact has been checked against the role you meant to reach. A waterfall finds details. It does not promise they are current, so verification sits between the waterfall and any sequence, every time.

A found address that bounces is worse than a missing one, because bounces damage the domains you send from. How we set up those domains is in [how many sending domains outbound needs](https://warmup.ai/blog/how-many-sending-domains-and-mailboxes-does-outbound-need). Enrichment, verification and the sending setup are all part of what we build in [GTM engineering](https://warmup.ai/gtm-engineering).

## What should you try first?

Take a list you already have and count the contacts with no email. Run a waterfall on just those rows, verify what comes back, and count again.

If the list started as company names, fix that first: structure it, find the domains, choose the roles, then enrich. The order matters more than the tools.

## Questions, answered

### Is waterfall enrichment only available in Clay?

No. The idea is simply to ask several providers in order, and you could do it by hand or with other tools. Clay makes it practical because the providers are built in and the sequence runs on every row automatically, so a gap at one provider passes to the next without anyone exporting a file.

### Does the order of the providers matter?

Yes. The waterfall stops at the first provider that returns a result, so the first provider in the order answers most rows and the later ones only see the gaps. Put the provider you trust most for your market first, and use the later steps for the contacts it misses.

### Does a waterfall replace verifying emails?

No. A waterfall finds an address. Verification checks that it will be delivered. Every address a waterfall returns should still be verified before it goes into a sequence, because a list that bounces damages the domains you send from.
