How to Build a Clay Enrichment Waterfall (Step-by-Step)
Most Clay setups waste credits by running expensive providers on every row. A waterfall fixes that: try the cheapest provider first, fall back only when it fails, stop when you have what you need. Here is how to build one from scratch.
What an enrichment waterfall is
An enrichment waterfall is a sequence of conditional steps. Each step tries to find a piece of data (usually an email address) from a specific provider. If the provider returns a result, the waterfall stops. If it returns nothing, it moves to the next provider in the sequence.
The logic is simple: different providers cover different parts of the contact graph. Hunter is strong on SMB and agency contacts. Clearbit has deep enterprise coverage. People Data Labs is good for technical roles. No single provider covers everything, so you layer them. The waterfall structure means you only pay for a provider when the cheaper ones have already failed.
Clay makes this straightforward to implement. Every enrichment column can have a conditional: only run this step if the previous column is empty. That is the entire mechanic.
Why the waterfall order matters
Running your most expensive provider first is the most common Clay mistake. A single Clearbit lookup costs roughly 6 credits. Hunter costs 1. If Hunter finds the email on 60% of rows, you just saved 5 credits per successful lookup versus running Clearbit first.
At 1,000 contacts per week, that difference compounds fast. Good waterfall design is not about which provider is "best." It is about which one gives you the most coverage per credit spent at each position in the sequence.
The waterfall also gives you quality signals. A contact where Hunter found a verified email is different from one where you had to fall all the way through to a pattern-guessed address. You can use that tag downstream: send guessed-email contacts to a lower-volume sequence or skip them entirely depending on your bounce tolerance.
Step 1: Build your seed list
The waterfall starts with a list of people. Three common sources:
- →LinkedIn Sales Navigator export: filter by title, company size, geography, industry. Export via a Sales Nav CSV connector in Clay or via a third-party scraper like Prospeo or Wiza.
- →Apollo CSV export: pull contacts directly from Apollo's database with title and company filters already applied. Useful as a seed even if you plan to re-enrich in Clay.
- →Manual or CRM list: existing contacts from a previous campaign, event attendees, or warm accounts that have been in your CRM without outreach.
Before the waterfall starts, clean the seed list. Remove duplicates by email domain and first name/last name combination. Filter out personal email addresses (gmail.com, yahoo.com, hotmail.com). Confirm the company domain column is populated — most email enrichment providers need the domain, not just the company name.
In Clay, the seed list is your base table. Every enrichment column gets added to the right. The original seed data stays as-is in the leftmost columns.
Step 2: Email verification waterfall
This is the core of the build. Set up enrichment columns in this order, each with a conditional that only runs if the previous email column is empty:
| Step | Provider | Cost/row | Typical hit rate | Tag |
|---|---|---|---|---|
| 1 | Hunter | 1 credit | 40–55% | verified |
| 2 | Apollo enrichment | 1 credit | 25–35% of remainder | verified |
| 3 | Clearbit | 6 credits | 20–30% of remainder | verified |
| 4 | People Data Labs | 6 credits | 15–20% of remainder | verified |
| 5 | LinkedIn profile scrape | 3–5 credits | 10–20% of remainder | guessed |
| — | No email found | 0 | — | not_found |
In Clay, each row in this table is a separate enrichment column with a conditional formula in the "Run column if" setting. The formula checks whether the previous email column has a value. If it does, skip this step. If it does not, run it.
After the waterfall, add a formula column that consolidates the results: take the first non-empty value across all email columns. This gives you a single "best email" column you can reference downstream. Then add another formula column for the source tag (which provider found it, or "not_found" if none did).
The LinkedIn profile scrape step deserves a note. When a provider finds an email through pattern matching ([email protected]), it tags it as "guessed" or gives it a lower confidence score. Treat these differently from verified addresses. A higher bounce rate on guessed emails can affect your sending domain reputation if you route them through the same infrastructure.
Step 3: Signal enrichment layers
Email is the floor, not the ceiling. Once the waterfall has run, add columns that answer the question: is this person a good fit right now, and is there something relevant happening at their company?
These signal columns run unconditionally on every row. They do not replace the email waterfall — they run in parallel or after it:
- →Recent LinkedIn activity: pull the contact's last 3 posts via a Clay LinkedIn enrichment step. Use this to understand what they care about, not just who they are. A VP of Marketing posting about pipeline efficiency is a different conversation than one posting about brand campaigns.
- →Job tenure: how long have they been in this role? Someone 6–18 months in is typically past the "new job honeymoon" phase and actively looking to prove results. Someone 3+ years in may be entrenched in existing tools.
- →Funding data from Crunchbase: did the company raise in the last 6 months? Fresh funding is one of the strongest buying signals for outbound-adjacent tools. Companies that just closed a Series B are building headcount and systems simultaneously.
- →Job change detection: did the contact recently start this role? If your ICP is VP-level buyers, a new VP at a target account is a higher-priority contact than an established one who may already have a vendor locked in.
- →Tech stack: Clay can pull tech stack data from BuiltWith or similar providers. Knowing that a company uses HubSpot but not a dedicated outbound sequencer tells you something meaningful about where they are in their GTM build.
Not all of these signal columns are worth running on every campaign. Funding data makes sense if you target growth-stage companies. Tech stack makes sense if your ICP qualification depends on what tools they already use. Job change is almost always worth adding — it is cheap and high signal.
These signals also feed your ICP scoring. Add a formula column that assigns a score (1–10 or a simple tier: A/B/C) based on how many positive signals a contact has. Route A-tier contacts to a priority sequence with a higher-effort touch pattern. Route C-tier contacts to a lower-volume sequence or skip them entirely.
Step 4: AI personalization
Clay's agent plugin system lets you run an LLM step inside the table. The most common use: read a prospect's recent LinkedIn post (pulled in the signal layer) and write a specific, relevant first line for the outbound email.
This is where most teams get it wrong. The prompt matters as much as the model. A bad prompt produces the same generic output at scale: "I saw your post about pipeline — really resonated." A good prompt produces something specific enough that the prospect wonders how you knew.
A prompt structure that works well for LinkedIn post-based personalization:
Prompt template
You are writing a cold email first line for a B2B sales email. The goal is to reference something specific from the prospect's recent LinkedIn post in a way that feels natural and relevant to what we sell.
Prospect name: {{first_name}}
Prospect title: {{title}}
Company: {{company}}
Their recent LinkedIn post: {{linkedin_post_text}}
What we do: [one sentence description of your product/service]
Write a single sentence (max 20 words) that references something specific from their post and connects naturally to the email body. Do not use filler phrases like "I loved your post about" or "Saw your thoughts on." Write it as if you are a peer who read the post and has something relevant to say. No em dashes.
For reference on what Clay agent plugins can do beyond first-line generation, see our post on Clay agent plugins. The same plugin system can research a company's job postings to infer their GTM priorities, summarize their last funding announcement, or score how closely they match your ICP criteria.
Credit cost for AI steps: a GPT-4o-mini step runs roughly 2–3 Clay credits per row. Claude Haiku is similar. The better models cost more per call. At 1,000 rows per week, that is $20–40/week in AI credits alone at a mid-tier model. Worth it for priority segments. Not worth it for a broad prospecting sweep.
One rule: only run the AI personalization step on contacts where the LinkedIn post column is populated and the post is recent (less than 30 days). A first line referencing a post from 8 months ago reads as lazy research.
Step 5: Export to sequencer
Once the waterfall is complete, push records to your sequencer. Clay has native integrations with Instantly and Smartlead. The integration creates a contact in the sequencer and adds them to a specific campaign.
Set up the export with these conditions:
- →Email tag is "verified" or "guessed" (exclude "not_found" rows entirely)
- →ICP score is A or B (skip C-tier depending on campaign goals)
- →LinkedIn post populated if you are using AI personalization (otherwise the first line step returns a generic output)
- →Contact has not been in any sequence in the last 90 days (check via a CRM lookup or a Clay deduplication step against your existing contact list)
Map Clay columns to sequencer variables. The first line, company name, title, and any relevant signal fields (recent funding, job tenure, tech stack signal) should all map to custom variables in the sequencer so they can be used in email copy.
For the sending infrastructure setup that the sequencer runs on, see our post on the GTM engineering stack.
Verified-email and guessed-email contacts should go to separate campaigns with separate sending pools if your bounce rate on guessed emails is above 3%. Most sequencers let you segment at the campaign level, which maps cleanly to the email tag from the Clay waterfall.
Common mistakes
- →Running expensive providers first: Clearbit at position 1 costs 6x more than Hunter at position 1 for the same result when Hunter has coverage. Always start cheap.
- →No fallback logic: forgetting to set the "run if previous column is empty" condition means every row runs every provider every time. This multiplies credit costs without improving coverage.
- →Skipping the email tag column: if you do not track which provider found the email (and at what confidence level), you cannot separate verified contacts from guessed ones downstream. Add the tag column before you run any campaigns.
- →Running AI personalization on every row: the first line step only adds value when there is something specific to reference. Contacts with no recent LinkedIn activity, no notable company events, and no signal data will generate generic output. Filter them out or use a simpler fallback template.
- →Exporting before signal enrichment is complete: if the signal columns are still processing when you push to the sequencer, your emails go out with empty personalization variables. Run the export as a separate manual step after the full table has finished processing.
- →Not deduplicating against existing contacts: pushing a contact who is already mid-sequence into a new campaign creates duplicate outreach. Always check against your CRM or sequencer contact list before exporting.
Frequently asked questions
What is a Clay enrichment waterfall?
A Clay enrichment waterfall is a sequence of conditional email verification steps. Each step only runs if the previous one returned no result, so you try the cheapest provider first and move to more expensive ones only when needed. This keeps credit costs predictable while maximizing overall email coverage.
Which email providers should I use in my Clay waterfall?
A common order for B2B outbound: Hunter first (cheap, good SMB coverage), Apollo enrichment second (cheap, different graph), Clearbit third (broader enterprise coverage), People Data Labs fourth (strong for technical and product roles). The right sequence depends on your ICP. Run a test batch of 200 contacts through each provider independently to see which has the best hit rate for your specific audience before finalizing the waterfall order.
How much does it cost to enrich a contact in Clay?
For a standard waterfall with email verification and basic signal enrichment, expect $0.10–$0.30 per contact when most emails are found in the first two providers. Adding AI personalization steps (LinkedIn post first line) adds roughly $0.05–$0.15 per row at mid-tier models. A full enrichment run on 1,000 contacts with AI personalization typically costs $150–$400 in Clay credits.
Should I run the AI personalization step on every contact?
No. The AI first-line step is most valuable for high-priority segments where the contact has a recent LinkedIn post with something relevant to reference. For broad list prospecting at high volume, the credit cost adds up and the quality degrades when there is nothing meaningful to pull from the profile. Filter to contacts where the recent post column is populated and the post is less than 30 days old.
How is Clay better than enriching directly in Apollo or ZoomInfo?
Clay gives you waterfall logic across multiple providers and the ability to combine signal enrichment with AI steps in one table. Apollo and ZoomInfo each have a single data source. Clay has dozens. For ICP-specific enrichment with intent signals, job change detection, and AI personalization layered on top, there is no equivalent in a single-provider tool. For more on this comparison, see our post on Clay vs Apollo.
For a comparison of Clay against its closest single-provider alternative, see Clay vs Apollo.
SortedGTM
We build and operate this workflow for you.
Clay enrichment waterfall design, signal layer setup, AI personalization, and sequencer integration. Built inside your accounts. You own everything.