Automating email outreach is not a sending problem. Every sequencer on the market, Instantly, Smartlead, Outreach, Salesloft, Lemlist, or Clay's own, does the same core job: it sends messages on a schedule and follows up when no one replies. That part has been solved for a decade. The variable that decides whether your automation books meetings or burns your domain is the list you load into it: who is on it, whether their addresses resolve, and whether each message says something true about that specific person. A sequencer pointed at a generic, unverified list does not scale outreach. It scales bounces. This is how to build the list and the personalization that make turning the sequencer on worth doing.
What you need before you automate anything
A sequencer is the last mile, not the engine. Before you create a single campaign, you need three things in place: a list built around an actual ideal customer profile, contact data enriched deeply enough to write something specific, and email addresses verified so they clear the gate before a send ever fires. Skip any of these and you are not automating outreach, you are automating the act of getting marked as spam.
Most teams do this backwards. They buy a list, paste it into a sequencer, write one template with a first-name token, and hit send. The send works. The results do not, because the inputs were never built. The steps below build the inputs first, then hand them to the tool that sends.
Step 1: Build the list before you build the campaign
Start with a definition, not an export. A bought list of ten thousand VPs of Marketing is not a target list; it is a directory someone else sold to forty other teams this quarter. The list that converts starts from your ideal customer profile expressed as filters: industry, headcount band, region, tech in use, and a triggering signal that says now is the right time to reach this account.
In Clay, you source that list from the data marketplace and signal providers rather than a static CSV. You set the firmographic filters, layer a signal (a recent funding round, a new hire in the buying role, a job posting that implies a need), and pull the matching companies and people into a table. The signal is the part most teams skip, and it is the part that makes a cold email land as relevant instead of random.
Add ICP filters and a signal: watch the list shrink and the reply rate climb
Rows on the list
1,000
Bought list · VP, Marketing
Projected reply rate
0.9%
Illustrative values to show the relationship between targeting and reply rate, not a benchmark.
The point is not that 180 is the right number. The point is that every row in that smaller list has a reason to exist, and that reason is what your message gets to reference.
Step 2: Enrich every contact so the message can be specific
You cannot personalize what you have not enriched. A name and a guessed email address give you nothing to say. The enrichment step turns each row from an identifier into a person you can write to: their verified work email, their exact role and seniority, the company's size and stage, the tools they run, and the signal that put them on the list in the first place.
Clay runs this as a waterfall. For the work email, it queries one provider, and when that provider has no match it automatically tries the next, and the next, across the marketplace until something resolves. The same logic applies to firmographics and to the contextual fields you actually write from. The output is not more data for its own sake. It is the raw material every later step depends on: the personalization in Step 4 is only as good as the fields you fill here, and the verification in Step 3 only has something to check because you found the address here first.
“Automating mundane tasks with Clay allows revenue teams to focus on high intent, best fit accounts and prioritized selling, optimizing the limited hours available each day for more critical and impactful activities.”
The teams who get the most out of automation treat enrichment as the thing that makes the sequencer worth turning on, not as a box to check before sending.
Step 3: Verify addresses before they ever reach the sequencer
Automating sends on an unverified list only automates bounces. Mailbox providers track your bounce rate as a primary signal of whether you are a real sender or a spammer. A campaign that goes out to a list with even five percent dead addresses does not just lose those five percent; it lowers inbox placement for the entire send, including the valid addresses. One unverified batch can cost you the domain.
So the address gets a gate before it gets a send. Every email a sequencer would touch passes through a verification check first: valid and deliverable addresses move forward, catch-all and risky addresses get flagged for a lighter touch or a separate warmed domain, and undeliverable addresses are removed before the campaign ever sees them. This is the single step that protects everything you built in Steps 1 and 2.
Drag the strictness gate and watch the bounce rate the sequencer actually sees
896
addresses enter the sequencer
2.3%
bounce rate the sequencer sees · no-gate was 5.0%
Splits are illustrative of how a verification gate routes a batch, not a provider benchmark.
Run this on a schedule, not once. Addresses go stale as people change jobs, so a list verified three months ago is already decaying by the time you reuse it.
Step 4: Write personalized openers at scale with AI
Automation without personalization just scales a form letter. Hi {{first_name}}, I wanted to reach out is not personalization; it is a mail merge, and every prospect has seen ten of them this week. Real personalization references the signal that qualified the contact in Step 1: the funding round, the new role, the tool they just adopted. That reference is what separates a message that gets a reply from one that gets archived.
The reason this used to be impossible at scale is that a human had to research each prospect and write each opener. AI removes that constraint. You give a model the enriched fields you collected in Step 2 plus one specific signal, and it writes a one-sentence opener grounded in that fact, for every row, in a column that runs across the whole table.
Here is a personalization prompt you can paste into a Clay AI column or Claygent run:
You are writing the first sentence of a cold email to {{first_name}},who is {{job_title}} at {{company_name}}.Use this signal as the hook: {{signal_description}}(for example: "posted a senior demand-gen role 8 days ago" or"raised a Series B in the last 30 days").Write ONE sentence, under 25 words, that references the signalspecifically and naturally. No greeting, no compliment, no mentionof our product. Sound like a person who actually noticed, not atemplate. If the signal is vague or missing, return exactly: SKIP.
The SKIP fallback matters more than the prompt itself. It means a row without a real signal never gets a fake-personalized line; it either drops out of the campaign or routes to a lighter template, so you never send I saw your recent work to someone whose recent work you could not find.
Switch the signal and watch the personalized opener rewrite while the generic one stays frozen
Generic
Hi Sarah, I wanted to reach out about how we help marketing teams.
Could be sent to anyone
Signal-based
Hi Sarah, saw the demand-gen lead role you opened last week, usually a sign the pipeline target just got bigger.
Specific to this signal
Notice that the right-hand opener never names a product. Signal-based personalization earns the reply by proving you paid attention; the pitch comes after they respond.
Step 5: Push the list and copy to your sequencer
This is the step everyone thinks the whole job is, and it takes about ten minutes. Your enriched, verified, personalized table now has everything a campaign needs: the validated work email, the custom subject line, and the personalized email body, one row per prospect. Pushing it to a sequencer is a mapping exercise, not a creative one.
In Clay you add the enrichment for your sequencer of choice, select the campaign you created there, and map your table columns to the campaign's variables. The one rule that breaks more campaigns than any other: the custom variable names in your sequencer must match your column names exactly, wrapped in double curly braces like {{subject_line}} and {{email_body}}, or the sends go out with blank merge fields. Map the validated work email column specifically, not a generic email field, so you never push the address you found before you verified it.
Step through the handoff: where each stage passes its work to the next
Build list
Hands off to the next stage
180 qualified rows, each with a signal.
If you would rather not leave the platform, Clay's native Sequencer runs the campaign inside the same table. A Send Table Data action syncs your enriched rows into the campaign, AI snippets generate the personalized copy from your fields, and clean variables substitute safe fallbacks so a missing company name never breaks an email. Either path works; the upstream four steps are identical.
Rippling doubled the year-over-year performance of its cold email channel after building its outbound on Clay. (clay.com/customers/rippling)
Read the full storyThat kind of lift does not come from a better send button. It comes from a growth team feeding the sequencer a list that was enriched, verified, and personalized before a single email left the queue.
Step 6: Set the sequence structure and timing
A good list still needs a sane cadence behind it. The sequencer's actual job is the part you configure here: how many touches, how far apart, and what makes a follow-up stop. Three to five touches over two to three weeks is the range that works for most cold outreach; fewer leaves replies on the table, more reads as harassment.
Two settings protect deliverability inside the sequencer itself. First, send plain text rather than HTML for cold outreach: inline images and tracking pixels hurt inbox placement, and a plain message reads like it came from a person. Second, space your sends. Clay recommends roughly twenty minutes between emails, which lands you around twenty-four sends per day per inbox, slow enough to look human and to keep a new domain warm. Set business hours and a timezone so emails arrive when someone is at their desk, and let replies and unsubscribes automatically pull a contact out of the sequence so no one gets a follow-up after they have already answered.
Common failure modes
Most automated outreach fails for one of four reasons, and all four are upstream of the send. Knowing them is faster than learning them the expensive way.
Flip each failure mode to see the root cause and the upstream fix
0 / 4 flippedThe pattern is the lesson. When automated outreach underperforms, the instinct is to change the send tool or rewrite the template. The fix is almost always one step earlier: a cleaner list, a verified address, a real signal, or a slower cadence.