The Work Email Waterfall
Outcome: a work-email column running across providers with a measured hit rate, and every miss checked for an input error before you blame coverage.
- Surface
- App and MCP server
- Level
- Beginner
- Uses
find_work_email- Credits
- ~1 per hit
- Prerequisite
- A person list with names and domains
How the waterfall bills
Provider A → hit → billed once, stop
Provider A → miss
Provider B → hit → billed once, stop
Provider A, B, C → all miss → not billed, no resultYou pay for results, not attempts. Two consequences:
- Stacking providers raises hit rate at little extra cost per found record, because the later providers only ever see the rows the earlier ones missed.
- A miss is free, so a column that filled 70% of rows charged you for 70%, not 100%.
If a run cost less than you estimated, the hit rate was lower than you assumed. That is worth checking rather than celebrating.
Reference: Find work email, find_work_email.
The identifier decides the outcome
More than any provider choice.
| You send | Expected hit rate | Notes |
|---|---|---|
| LinkedIn profile URL | Highest | Exact match, no ambiguity |
| First + last name + company domain | Good | The standard input |
| Full name + company name | Poor | Resolve the domain first |
| Name + parent company domain | Poor | Wrong entity — the person is not there |
| Partial or nickname | Very poor | Fix the input |
The input fixes that actually matter
Split combined names
“Dr. Sarah Chen-Williams” must arrive as first Sarah, last Chen-Williams. Titles, honorifics and suffixes in the name field cost you hits.
Use the operating domain
Not the parent, not the holding company, not the group site. If your source gave you acmegroup.com and the person works at acme-uk.com, the lookup fails and it looks like a coverage gap.
Normalize the domain
Lowercase, no protocol, no www., no path.
Strip formatting from names
All-caps, extra whitespace, trailing commas. Cheap to fix, and each one is a hit lost.
These four fixes routinely move a hit rate by 10–20 points, which is more than any provider change will.
Run it properly
Test on people you know
Ten colleagues, customers, or anyone whose real address you can confirm. This is the only way to distinguish a coverage miss from an input error.
Read every result
Does the address match the company’s actual pattern? Is the domain right?
Widen to qualified rows only
Never to the whole table. Contact enrichment is the most expensive column in most pipelines.
Compute hit rate against rows attempted
Not rows in the table. If your gate sent 400 of 2,000 rows, the denominator is 400.
Reading the number
| Hit rate | Diagnosis | Action |
|---|---|---|
| 75–90% | Healthy corporate B2B | Nothing |
| 55–75% | Normal for a mixed list | Check misses for input errors |
| 30–55% | Hard segment — SMB, local, some regions | Add phone or LinkedIn as the primary path |
| Under 30% | Input problem | Check domains and name splitting first |
| Over 90% | Suspicious | Confirm you are not counting unverified guesses |
A found address is not a verified address. Counting unverified results as hits inflates the number and produces a bounce rate that damages your sending domain — the cost of which lasts far longer than the campaign. Lesson 03 is not optional.
Do this now
- Fix the inputs: names split, domains normalized and operating-entity, LinkedIn URLs where you have them.
- Run on ten people whose addresses you already know.
- Compare results against what you know. Every miss on this set is an input error, and each one is a fix that lifts every future run.
- Widen to the qualified rows only.
- Compute hit rate against rows attempted.
- Read ten misses from the full run and categorize them: wrong domain, person left, genuine coverage gap.
Check your work
- Names are split and domains are operating entities
- You tested against people whose addresses you know
- Hit rate is computed against rows attempted
- Ten misses have been categorized
- You have not yet treated any of these as contactable — verification comes next
Where this breaks
Running the waterfall against an ungated list is the most expensive mistake available in this course. It is the highest per-row cost in a normal pipeline, and on an unqualified table most of that spend lands on companies you would have dropped at a free filter. Qualify first, always — the filter costs nothing and this column does not.
Further automation
Log hit rate per run. A drop from 78% to 55% usually means your targeting drifted into a segment the providers cover badly — which is a targeting signal worth having, and it shows up here before it shows up in reply rates.
Next lesson
03 — Verification and catch-all handling, the step that decides which of these addresses actually count.
Reference for this lesson: Find work email, find_work_email, Find email from LinkedIn URL, Credits.