How-To Guide

How to Set Up a Clay Enrichment Workflow

From empty table to production-ready enrichment pipeline. Every step, with the logic behind each decision.

What You Will Build

By the end of this guide, you will have a working Clay table that takes a list of company domains, enriches them with firmographic and contact data from multiple providers, verifies emails, scores leads against your ICP, and pushes qualified records to your CRM. The whole pipeline runs automatically for every row you add.

This is the foundational Clay table pattern. Every GTM Engineer builds some version of it. Once you understand the structure, you can customize it for any ICP, any set of enrichment providers, and any downstream tool.

Prerequisites

You need a Clay account (Explorer plan or above for waterfall features). You need API access to at least one enrichment provider. Apollo's free tier works for initial setup. You need a CRM to push results to. HubSpot's free tier is fine for testing.

Optional but recommended: a verification service (NeverBounce, ZeroBounce, or MillionVerifier) and a second enrichment provider (FullEnrich, Clearbit, or Cognism) for waterfall coverage.

Step 1: Define Your ICP Filters

Before opening Clay, write down your qualification criteria. Company size (employee count range), industry, geography, tech stack signals, and funding stage. These become your filter columns.

Example ICP: SaaS companies with 50-500 employees, based in the US, using HubSpot, Series A through Series C. That gives you five filter dimensions.

Skipping this step is the most common mistake. Engineers jump into Clay, build enrichment columns, and then realize they have 5,000 enriched records with no way to prioritize them. Define your filters first. Enrichment is expensive. Don't enrich records you will discard.

Step 2: Create the Table and Import Source Data

Create a new Clay table. Your first column is the company domain. This is your primary key. Every enrichment step references it.

Import source data. Common sources: a CSV export from LinkedIn Sales Navigator, a list scraped from a directory, or a manually curated list of target accounts. Start with 50-100 rows for testing. Do not import your full list until the workflow is validated.

Add a "Status" column (text type) and set it to "New" for all rows. You will use this to track which records have been processed, qualified, or pushed to CRM.

Step 3: Add Firmographic Enrichment

Add your first enrichment column. Use Clay's built-in Clearbit integration or Apollo Company Enrichment. Map the input to your domain column. The output gives you employee count, industry, annual revenue, tech stack, and headquarters location.

Create filter columns that reference the enrichment output. Employee count column with a formula: IF the employee count is between 50 and 500, return "Pass." Otherwise, return "Fail." Do the same for industry and geography. These filters run automatically for every row.

Add a compound filter column: IF all individual filters pass, return "ICP Match." This single column tells you whether to continue enriching this record or skip it. Set conditional logic on downstream columns to only run when ICP Match equals "Pass." This saves credits on records that don't qualify.

Step 4: Build the Contact Enrichment Waterfall

This is where waterfall enrichment earns its keep. You need to find the right person at each qualifying company. Add a People Search column using Apollo (find contacts by title at the company domain). Filter for your target titles: VP of Sales, Head of Revenue, Director of Sales Operations.

Apollo won't find everyone. Add a second enrichment column using a different provider (FullEnrich, Cognism, or Lusha). Set a condition: only run this column if Apollo returned no results. This is the waterfall. Provider A first, Provider B only on misses.

For email enrichment, chain the same way. Apollo for email first. If no email, try FullEnrich. If still no email, try Hunter.io's domain search. Each step only fires when the previous one failed, keeping costs minimal.

Step 5: Verify Emails

Never push unverified emails to your outbound sequences. Add a verification column using NeverBounce, ZeroBounce, or MillionVerifier. Map the email from the previous step as input.

Create a filter column: IF verification result is "valid" or "catch-all," return "Sendable." If "invalid" or "disposable," return "Skip." Catch-all domains require judgment. Some teams send to them; others skip them to protect sender reputation. Start conservative: skip catch-alls until your sending domain is fully warmed.

Step 6: Score and Prioritize

Add a lead scoring column. You can use a simple formula (weighted points for company size, title seniority, tech stack match) or an LLM-powered scoring column that reads the prospect's LinkedIn bio and company description to assign a 1-10 score.

The formula approach is faster and cheaper. A sample scoring model: 3 points for ICP industry match, 2 points for target title, 2 points for company size sweet spot, 1 point for tech stack signal, 2 points for recent funding. Total possible: 10. Set a threshold of 6+ for outbound, 4-5 for nurture, below 4 for discard.

The LLM approach costs ~$0.01 per row (using Clay's GPT or Claude integration) but catches nuances that formulas miss. "This company's LinkedIn posts indicate they're expanding their sales team" is something an LLM catches that a formula can't.

Step 7: Push to CRM and Sequences

Add a CRM push column. Clay integrates natively with HubSpot and Salesforce. Map your enriched fields: first name, last name, email, company, title, employee count, lead score, and any custom fields you want for segmentation.

Set the push to only trigger when: ICP Match is "Pass," email verification is "Sendable," and lead score is above your threshold. This ensures only qualified, verified contacts enter your CRM.

For outbound sequence enrollment, add a second push column to Instantly or your sequencing tool. Map the same contact data plus the personalization variables your sequence templates require (company name, recent news, mutual connection).

Step 8: Test with 50 Records

Run the full pipeline on your 50-row test batch. Check every column for errors. Common issues: API rate limits on enrichment providers, malformed domains that cause lookup failures, and filter logic that's too aggressive (filtering out good prospects) or too loose (qualifying junk).

Manually review 10 records end-to-end. Confirm the enrichment data is accurate, the email is correct, the lead score makes sense, and the CRM record was created properly. Fix any issues before scaling.

Step 9: Scale to Full Volume

Once validated, import your full source list. Clay processes rows in parallel, but enrichment API rate limits may throttle throughput. A 5,000-row table typically takes 2-4 hours to fully process depending on how many enrichment steps you chain.

Set up a recurring import if your source data refreshes. Clay supports scheduled imports from Google Sheets, CSV URLs, and webhooks. For signal-based workflows, configure a webhook trigger that adds rows to the table whenever a new target account appears in your system.

Common Mistakes

Enriching before filtering. Running expensive enrichment on records that will fail ICP filters wastes credits. Always filter on cheap data (company size, geography) before running contact lookups.

Single-provider dependency. Relying on one enrichment source means you accept that provider's coverage gaps. Apollo might cover 75% of your targets. Adding a second provider in waterfall mode pushes coverage to 85-90%.

Skipping email verification. Sending to unverified emails damages your sender reputation. A 5% bounce rate triggers spam filters. Verification costs $0.003-0.005 per email. There is no valid reason to skip it.

No test batch. Importing 10,000 records before validating the workflow means 10,000 records of potential garbage in your CRM. Always test with a small batch first.

Frequently Asked Questions

How long does it take to set up a Clay enrichment workflow?

A basic enrichment table takes 30-60 minutes to build. A production workflow with waterfall logic, error handling, and CRM integration takes 2-4 hours for your first build. Subsequent workflows go faster because you reuse column templates. Most GTM Engineers maintain a library of pre-built table structures they customize per campaign.

How much does a Clay enrichment workflow cost per lead?

Cost depends on how many enrichment providers you chain together. A basic workflow (one provider + email verification) costs $0.03-0.05 per lead. A full waterfall with 3-4 providers, LLM scoring, and verification runs $0.10-0.25 per lead. At 1,000 leads/month on Clay's Explorer plan ($349), your total cost is roughly $450-600/month including credits.

Can I build enrichment workflows without Clay?

Yes. n8n and Make can replicate Clay's enrichment logic using API nodes. Python scripts calling enrichment APIs directly give you the most flexibility and lowest per-record cost at high volume. Clay's advantage is speed of setup and visual debugging. For under 5,000 records/month, Clay is usually the right choice. Above that, consider a hybrid approach with custom scripts handling the bulk and Clay for ad hoc research.

Source: State of GTM Engineering Report 2026 (n=228). Salary data combines survey responses from 228 GTM Engineers across 32 countries with analysis of 3,342 job postings.

Get the Weekly Pulse

Salary shifts, tool intel, and job market data for GTM Engineers. Weekly Clay workflows and enrichment strategies for GTM Engineers.