Contact data
Email finder waterfall that bills only on a hit
Add one column to a table and every row runs the same email waterfall. Providers fire in order, the row stops at the first address, and a miss costs nothing.
An email finder is only useful next to the list it serves. Here it is a column on a hosted table: the input is the row you sourced, the output a cell with its own status, provider, cost, and error.
The column is a chain, not a vendor, and the row decides where it starts. A row carrying a LinkedIn URL enters at the profile-keyed head. A row with a name and a domain starts at the cheapest metered finder instead, because the profile lane cannot key on a domain at all. You do not maintain that order: the preview names the exact lanes your rows will take before anything runs.
Example searches
Ask for it the way you'd say it
Every search below runs on the same hosted Tables, with the cost previewed before anything is spent.
Emails for a sourced list
find the work email for every contact row in my Q4 accounts table
Each cell names the provider that answered, its status, and the credits it drew.
LinkedIn URLs to emails
import these 400 linkedin profile urls and find a work email for each one
The profile-keyed chain is chosen automatically, so the run starts with the lane that reads a URL.
Only the rows that matter
run the email column only on rows where headcount is over 50 and the stage is not disqualified
A run condition keeps the waterfall off rows you already ruled out. It is the cheapest way to cut a bill.
Plays
Three motions you can run this week
Each one is a chain of Oxygen primitives — the same hosted objects your workspace already has, composed.
Source, enrich, then send
A cold account list becomes an enrolled sequence with no export.
- 1Create a table, source accounts, and add the email column.
- 2Run a few rows, read the cost, then enroll what resolved.
oxygen columns runSpend the chain only where it pays
The waterfall runs on rows that already cleared qualification instead of on everything you sourced.
- 1Score the rows against the stored ICP first, so the finder never sees an account you ruled out on Monday.
- 2Set the run condition on the column, preview the cost on your own rows, then approve a ceiling for the run.
oxygen columns addFill the gaps in your CRM
People records missing a work email get one, with provenance attached.
- 1Load the contacts into a working table and add a bind column that matches each row to its existing person record.
- 2Run the finder on the rows whose record has no address, then promote the cells you accept onto those records.
oxygen tables promote
Capabilities
What you get
One column, the whole chain
You configure a finder, not six vendor integrations. Provider order, skip rules, and stop-on-first-hit belong to the column.
A cell that explains itself
Status, provider, inputs, outputs, cost, and error are inspectable on every actioned cell that the column wrote.
Cost you see before you spend
Preview a run on your own rows and read the estimate before approving it. Every run carries a ceiling.
Bring your own key where it pays
Managed access is the default and needs no accounts of your own. Where you already pay a vendor directly, connect that key on a paid plan and those calls run on your vendor account rather than drawing credits.
Boundaries
What Tables does not own
This is Tables doing enrichment, not the CRM. A row here is a candidate, never canon: the address becomes truth when you promote it onto a Record. Sending belongs to Sequences.
Data sources
What the data actually comes from
Every value lands with its provider and cost recorded on the cell.

Blitz API
The head of the profile-keyed chain. A row with a LinkedIn URL starts here, and resolving stops the metered lanes behind it from running.

Icypeas
The head of the name-and-domain chain, and the cheapest metered finder in it. Rows carrying only a profile URL skip past it.
LeadMagic
A metered lane in the middle of the chain, plus an expensive reverse lookup that fires only at the tail on rows still unresolved.

BetterContact
An aggregator with its own waterfall behind it, slotted late on latency as much as on price, so it only sees rows the direct finders left.
Run these on Oxygen's managed credits, or connect your own provider keys and pay the vendor directly — the same columns, the same runs, the same provenance either way. See every integration.
Limits
Where this stops
- A waterfall is not a promise. Some rows have no findable work email, and the column says so rather than writing a guess into the cell.
FAQ
Questions people ask first
What does billed on a hit mean?
Can I see which provider found each address?
Do I need my own provider keys?
Does it verify the addresses it finds?
How much does it cost?
Can I run this on the free tier?
Run email finder waterfall that bills only on a hit on your own workspace
Sign up, get a working workspace with a one-time credit grant, and run the first play from the web app, the CLI, or your AI assistant over MCP.