Waterfalls and Why Hit Rate Beats Provider Choice
Outcome: you can read a waterfall result, state its hit rate and cost per found record, and tell the difference between a bad provider and a bad input.
- Surface
- App and MCP server
- Level
- Beginner
- Uses
- find_work_email · verify_email
- Credits
- ~10 for a 10-row test
- Prerequisite
- Lesson 03's stage map
Why one provider is never enough
Contact data is not one database that everyone resells. Each provider builds coverage from different sources — hiring pages, resume flows, email signatures, partner exchanges, community submissions — so their gaps are in different places.
The practical consequence, which surprises people the first time they measure it:
- Any single provider finds a verified work email for roughly 40–60% of a normal B2B list.
- Two providers stacked reach 70–80%.
- Four or five reach 85–90%, and the curve flattens hard after that.
Nobody is at 95% alone. A vendor claiming it is quoting coverage on their own best-covered segment, which is rarely the segment you sell to.
What a waterfall does
Ask the first provider
Send the identifier — a name plus a domain, or a LinkedIn URL. If it returns a result that passes the quality bar, stop.
Fall through on a miss
No result, or a result that fails validation, and the row moves to the next provider. Same input, different coverage.
Bill only where it lands
You pay for the result, not for every attempt. That is what makes stacking five providers cheaper than it sounds — the expensive-but-thorough one only ever sees the rows the cheap ones missed.
Verify at the end
The waterfall returns an address. Verification says whether it will bounce. These are two separate steps and skipping the second is how a good list burns a sending domain.
Sync GTM runs this for you inside a single action — see Find work email and the waterfall course for provider-level control.
The two numbers that matter
Stop comparing provider names. Compare these.
| Number | How to compute | What good looks like |
|---|---|---|
| Hit rate | rows with a usable result ÷ rows attempted | 70–85% on a clean B2B list |
| Cost per found record | total credits spent ÷ rows with a usable result | Compare across runs, not against a benchmark |
Cost per attempted row is the vanity metric. A provider that is half the price and finds a third as many people is more expensive on the only measure that matters.
Always compute hit rate against rows attempted, not rows in the table. If your gate sent 400 of 2,000 rows to the waterfall, the denominator is 400. Mixing these up makes a healthy waterfall look broken.
Reading a bad result
A low hit rate has four causes and they need different fixes.
| Hit rate | Likely cause | Fix |
|---|---|---|
| Under 30% | Bad input identifiers — wrong domain, parent company, personal LinkedIn missing | Fix the Find stage, not the provider list |
| 30–50% | Hard segment: SMB, non-English markets, non-corporate email cultures | Add mobile or LinkedIn as the primary contact path |
| 50–70% | Normal for a broad list | Tighten targeting, or accept it |
| Over 90% | Suspicious | Check you are not counting unverified guesses as hits |
That last row is the one that costs money later. Pattern-guessed addresses (first.last@domain) inflate hit rate and bounce at a rate that gets your domain flagged. If a result did not pass verification, it is not a hit.
Catch-all domains
Some domains accept mail to every address, so verification cannot say whether a specific mailbox exists. These come back as catch-all or accept-all, not as valid or invalid.
Three defensible policies, in order of caution:
- Drop them. Safest, and you lose real people.
- Route them to a separate, low-volume sequence on a secondary sending domain. Best default.
- Send them normally. Only if your total catch-all share is small and your sender reputation has headroom.
Do not mix policies within one sending domain, and do not let catch-alls into a cold campaign on your primary domain. Verify email explains the status values.
Do this now
- Take 10 people you can verify by hand — colleagues, customers, anyone whose real address you know.
- Run
find_work_emailacross all 10, thenverify_emailon the results. - Compute hit rate and cost per found record. Write both down.
- Count the statuses: valid, catch-all, invalid, not found.
- For every miss, check the input. Was the domain right? Was it the parent company rather than the subsidiary? Most misses on a test set of people you know are input errors, and that is the lesson.
- Decide your catch-all policy now, before there is volume riding on it.
Check your work
- You have a hit rate computed against rows attempted
- You have a cost per found record, in credits
- Every miss has been checked for input error before blaming coverage
- You have written down a catch-all policy
Where this breaks
Counting unverified addresses as found is the failure with the longest fuse. The list looks 90% covered, the campaign launches, bounce rate lands above 5%, and the sending domain’s reputation takes weeks to recover — during which every campaign you run underperforms for reasons that look like copy. Verification is not an optional final step. It is the step that defines what counts as a hit.
Further automation
Log hit rate per run rather than computing it ad hoc. A waterfall that quietly drops from 78% to 55% is telling you your targeting drifted into a segment the providers cover badly — and that is worth knowing before the quarter ends, not after. Lesson 08 turns these numbers into a cost model.
Next lesson
05 — Attributes versus signals, the distinction that decides whether a workflow is a list or a pipeline.
Reference for this lesson: Find work email, Verify email, find_work_email, Waterfall Enrichment.