$ man clay-wiki/on-demand-enrichment
Playsintermediate
On-Demand Contact Enrichment
The practitioner core play — enrich contacts as they arrive
What This Play Does
On-demand enrichment is the reactive counterpart to TAM list building. Instead of building a universe upfront, you enrich contacts as they arrive — from web reveals, form fills, CRM imports, or manual adds. A contact lands in the table. Clay enriches it. By the time a human looks at it, the record is complete: email validated, persona qualified, company scored, routing decided. This is the workflow that runs 24/7 in every production Clay setup I manage.
When to Use It
Use on-demand enrichment when contacts arrive in real-time or near-real-time. Web reveal fires and a company is identified — enrich the contacts at that company immediately. A sales rep manually adds a prospect to HubSpot — Clay picks it up and fills in the gaps. A form submission comes in — enrichment runs before the lead hits the queue. The trigger varies. The enrichment flow is the same.
PATTERN
Single-Provider Email Enrichment
I used to run a 6-provider email waterfall — Apollo, Hunter, Clearbit, RocketReach, Prospeo, Dropcontact. I stopped. Once I layered in MX-based routing (Google → Instantly, non-Google → HeyReach), the waterfall logic made no sense. I was burning 8-12 credits per contact for marginal coverage gains on emails that bounced anyway.
Now every on-demand table runs a single email provider — Prospeo or LeadMagic. One provider finds the email. MX record check validates the domain. Routing formula decides: Google → Instantly, non-Google → HeyReach, no email → HeyReach for LinkedIn. Simpler. Cheaper. Same deliverability. Don't stack providers — pick one good one and validate with MX records instead.
PATTERN
Table Architecture
The on-demand table is a contact table, not an account table. But it should always have a lookup column that connects back to your account table (if you have one). When a new contact arrives:
1. CRM lookup runs (does this person already exist in HubSpot/Salesforce?)
2. If CRM match → skip enrichment, flag as existing
3. Persona qualification prompt runs (match title to tier)
4. If persona NOT_MATCHED → skip email lookup, save credits
5. Single-provider email lookup runs (Prospeo or LeadMagic)
6. Company lookup runs (pull account-level data — ICP score, industry, employee count)
7. MX record check runs (Google vs non-Google)
8. Routing formula runs (Instantly vs HeyReach vs skip)
All steps trigger automatically when a new row is added. No manual work. The contact arrives incomplete and leaves the table fully enriched and routed.
PRO TIP
Credit Efficiency
On-demand enrichment uses more credits per contact than batch enrichment because every contact gets enriched immediately. That is fine. If the contact came from a web reveal or form fill, they have active intent. Spending 2-4 credits to fully enrich an intent signal is always worth it. If time spent avoiding credits exceeds the credit cost, use the credits. Where you save credits: the persona qualification prompt should run before the email lookup. If the persona does not match (wrong title, wrong department), skip the lookup entirely. Do not waste credits finding an email for someone you will never contact. Single-provider is cheaper than a waterfall and gets the same result once MX routing is in play.
ANTI-PATTERN
Common Mistakes
Running on-demand enrichment without a CRM lookup first. Before any enrichment runs, check if this contact already exists in HubSpot or Salesforce. If they do, pull their existing data instead of re-enriching. Sending leads already in pipeline is the fastest way to lose trust with a partner or sales team. The CRM lookup column should be the first thing that fires — before the email lookup, before persona qual, before anything.
Another mistake: enriching every contact equally. If the persona doesn't match your buyer tiers, don't run the email lookup. Qualify the person before you spend credits finding their email.
related entries