NewSee how
FirstSales
Automated pre-send checks for cold email campaigns

#Automated pre-send checks for cold email campaigns

Copy page
18 min read read

TL;DR: Automated pre-send checks are a rule and model layer that inspects every AI-drafted email before it queues for sending, catching bad domains, invalid personalization, missing unsubscribe links, and off-brand claims. Teams running this gate report far fewer bounces and spam flags than teams relying on a human skim. It replaces a slow, inconsistent human glance with a fast, consistent machine pass, then routes only the drafts that need judgment to a person.


#What a pre-send check actually is

A pre-send check is a rule that runs on a draft before it leaves the queue, not after a complaint arrives.

It sits between the writer, human or AI, and the send button.

Think of it as a series of gates, not one big filter.

Each gate tests one narrow thing: is this a real address, does this personalization field actually resolve, does this line make a claim nobody can back up.

A draft that fails any gate gets held, flagged, or routed to a person instead of firing straight to an inbox.

This is not a spam filter. Spam filters run on the receiving end and judge a message after the sending domain has already spent reputation on it.

A pre-send check runs on your end, before that reputation cost happens.

The distinction matters because the cold email deliverability checklist most teams use was built for a world where a person wrote every email by hand and read it back before sending.

AI drafting broke that assumption. Volume went up, review time per email went down, and the old habit of eyeballing a batch stopped catching what it used to catch.

#Why manual QA breaks down at AI drafting speed

Platform-wide cold email reply rates fell from 5.1% in 2024 to roughly 3.43% in 2026.

Systematised campaigns with real quality control still land 10-18% replies, and signal-based sends can hit 5-18%.

Generic, unchecked sends sit at 1-3%, and that gap is not really about copywriting talent anymore.

It is about whether a broken draft ever left the building in the first place.

A human reviewer can carefully read maybe 40-60 emails an hour if they are actually checking facts, not just skimming for typos.

An AI drafting system can produce that many emails in under a minute.

The math does not work. Once volume outpaces review capacity by 50x or more, a team has three choices: slow the AI down to match human review speed, stop reviewing at all, or automate the review itself.

Most teams that skip this decision end up quietly choosing option two, and they usually do not notice until a domain gets flagged.

One test of five AI personalization tools found that 85-95% of output billed as personalized was actually a template with three to five fields swapped in, and hallucinated details showed up in roughly 15% of drafts that attempted real research.

A wrong job title or a fabricated detail about a company is not a tone problem. It is a fact a prospect can check in ten seconds, and getting caught costs more than sending nothing at all.

This is also where the debate around AI slop in cold email gets it half right. The problem was never that AI writes email. The problem is that nobody built a gate to catch what AI gets wrong before it goes out.

Flowchart showing an AI-drafted cold email passing through automated pre-send validation gatesFlowchart showing an AI-drafted cold email passing through automated pre-send validation gates

#The five checks a machine can run before a human ever sees the draft

Not every check belongs in the same category. Some are pure data lookups. Some need a language model to reason about a sentence. Group them by what kind of failure they catch.

#1. Recipient and domain checks

Unverified prospect lists carry 10-30% invalid addresses, and another 5-15% typically come back as catch-all or unknown status on top of that.

A catch-all domain accepts every address whether it is real or not, so a bounce on that address costs you nothing in signal and everything in reputation if you send anyway.

For cold outreach specifically, the safest default is to exclude catch-all addresses from the primary send and route them to a smaller, isolated test batch. That way a bad guess never touches the domain carrying your main volume.

Google's bulk sender rules cap spam complaints at 0.1% and bounce rate under 2%, and a verification gate is the single highest-leverage way to stay under both ceilings before a single email fires.

This check has to run at send time, not just at list-upload time. Addresses decay. A valid address from three months ago can be dead today, and b2b data decay is not a one-time cleanup problem, it is a constant one.

#2. Personalization integrity checks

Every personalization token needs to resolve to a real, current value before the draft queues.

That means checking that {{first_name}} is not blank, that {{company}} matches the actual domain being emailed, and that any claim about a recent event (a funding round, a hire, a product launch) has a source timestamp attached that a human can verify in one click.

A model can flag drafts where a specific claim has no attached source as high-risk and route them for review rather than letting a plausible-sounding sentence through unchecked.

This is the single highest-value check in the whole stack, because personalization errors are the ones prospects notice fastest and remember longest.

Getting a name wrong is forgivable. Stating a fact about someone's company that is simply untrue reads as either lazy or dishonest, and neither impression is recoverable in that thread.

A pre-send gate should confirm the required unsubscribe mechanism is present and functional, that any state-specific disclosure language is included where the recipient's jurisdiction requires it, and that suppression lists (do-not-contact, previous unsubscribes, bounced addresses) are checked against the current send list, not a stale export from last week.

This is a rules engine, not a judgment call, which makes it one of the easiest checks to automate completely.

Skipping it is also one of the more expensive mistakes a team can make, and cold email compliance penalties have gotten sharper as regulators pay closer attention to bulk sending in 2026.

#4. Deliverability and authentication checks

Before a campaign launches, and ideally before every batch, the domain sending it needs SPF, DKIM, and DMARC alignment confirmed, not assumed.

Google and Microsoft both enforce this now for bulk senders, and a misconfigured record that worked fine at low volume can start failing silently as send volume climbs.

An automated check here is a lookup, not an opinion: query the DNS records, confirm alignment, and block the send if anything is missing. Teams that treat SPF, DKIM, and DMARC setup as a one-time setup task instead of an ongoing check are the ones who get blindsided by a record that silently broke after a DNS provider migration.

#5. Tone and claim checks

This is the one check that genuinely needs a language model, not a rules engine, because tone and factual overreach are judgment calls, not lookups.

A model pass can flag drafts that make unverifiable superlatives ("the fastest," "guaranteed results"), drafts that misrepresent the sender's relationship to the prospect ("following up" when there was no prior contact), and drafts whose reading level or formality mismatches the brand voice on file.

None of this replaces a human editor. It reduces the volume of drafts a human editor actually needs to look at, which is the entire point of the exercise.

#Building the guardrail sequence

The order these checks run in matters more than most teams assume. Running the expensive language-model pass first on every draft wastes compute on emails that would have failed a cheap domain lookup anyway.

Cheap, deterministic checks should run first and kill the obvious failures fast. Expensive, judgment-based checks should only see what survives.

Notice that a failed authentication check does not just kill one email, it holds the whole campaign. A DNS misconfiguration is not a per-email problem, it is a per-domain problem, and treating it like one saves a team from bleeding out slowly across a thousand sends before anyone notices the pattern.

This is also the point where human-in-the-loop cold email actually earns the name. The human only sees drafts that made it past four automated gates and got flagged by a fifth, which is a fraction of total volume, not the whole batch.

Platforms built around this pattern, FirstSales included, run the AI draft through exactly this kind of layered check before a human ever opens the approval queue, so the review step is fast because it is narrow, not because it is skipped.

FirstSales draft approval screen showing an AI-drafted email queued for human review after automated checksFirstSales draft approval screen showing an AI-drafted email queued for human review after automated checks

#What still needs a human

Automating four out of five checks is not the same as automating judgment.

A human still needs to decide whether a claim that technically passed the fact check is still tone-deaf given current events at the prospect's company.

A human still needs to catch the draft that is factually accurate and perfectly formatted but reads as creepy because it references something the prospect never made public.

A human still owns the final call on any message that a model routes as ambiguous rather than clearly pass or fail, because ambiguous is exactly the category where an automated system should not have the last word.

The goal was never zero human involvement. It was reducing the review load from every email to the small subset that actually needs a person's judgment, which is the same shift covered in human review rate for AI email.

#Automatable versus human-only, side by side

Check type✓ Machine can handle it✗ Needs a human
Address and domain validity✓ Deterministic lookup
Catch-all and bounce risk✓ Verification API
Personalization token resolution✓ Rules engine
SPF/DKIM/DMARC alignment✓ DNS lookup
Suppression list matching✓ Rules engine
Unverifiable superlative claims✓ Model flag, needs review
Recent-event fact sourcing✓ Model flag, needs review
Cultural or timing sensitivity✗ Judgment call
Brand voice edge cases✗ Judgment call
Ambiguous or borderline tone✗ Judgment call
Final sign-off on flagged drafts✗ Judgment call

#What happens when a team skips this

Skipping the gate does not fail loudly on day one. It fails quietly for weeks, then all at once.

A domain sending at 2,000 emails a day with a 4% invalid-address rate is bouncing 80 messages a day, every day, well past Google's 2% ceiling.

Reputation damage from bounce and complaint rates compounds. Mailbox providers do not reset the score every morning, they track a rolling window, and a domain that crosses the threshold once tends to sit in a degraded sending tier for weeks after the underlying problem gets fixed.

Roughly 40-60% of AI SDR pilots get paused or shut down within 90 days, and a domain reputation collapse from unchecked sends is one of the most common, least discussed reasons why. Teams blame the AI for writing bad copy when the actual failure was upstream: nothing caught the bad list, the broken token, or the missing authentication record before it went out at volume.

Compare that to teams running AI-supported human SDR workflows with real guardrails, which built 2.8x more pipeline than manual-only teams over the same period. The gap is not the AI itself. It is whether anything stood between the AI's output and the send button.

Dashboard mockup showing pass and fail states across five automated pre-send check categoriesDashboard mockup showing pass and fail states across five automated pre-send check categories

#Building the gate without buying a platform

A team with basic engineering resources can build the first four checks (domain, personalization, compliance, authentication) with existing tools and a few hundred lines of glue code.

Email verification is a solved problem with several vendor APIs, and DNS lookups for SPF, DKIM, and DMARC are a standard library call in most languages.

The tone and claim check is the harder one to DIY well, because it needs a model prompt tuned specifically to your brand voice and your actual failure modes, not a generic "review this email" prompt that catches nothing specific.

Teams that build this internally usually start narrower than they think they need to. A single check, catch-all exclusion or token resolution, catches the majority of the worst failures on its own, and every additional gate after that has diminishing but still real returns.

This is also where an internal eval set matters more than people expect. Without one, a team is guessing whether their check is actually working. Building an eval set for outbound AI out of your own won and lost threads gives the check something real to measure against, instead of trusting that it "feels right."

FirstSales runs this exact layered gate as a default part of its drafting pipeline, not an add-on a customer has to configure, which is the difference between a checklist a team means to build someday and a check that actually runs on every send.

#Common mistakes with pre-send gates

Teams building this for the first time tend to make the same handful of errors.

They build the tone check first because it feels like the sophisticated part, and skip the boring domain and compliance checks that would have caught 80% of real failures for a fraction of the engineering effort.

They run every check on every draft in a fixed order regardless of cost, which burns compute and adds latency for no benefit.

They treat a passed check as a permanent state instead of a point-in-time result, so a list that was clean at upload time sends unchecked three weeks later after it has decayed.

They build the gate but never log why a draft failed, which means nobody can tell whether the check is actually accurate or just rejecting things at random.

And they let the gate become a bottleneck instead of a filter, holding every borderline draft for review instead of building a clear enough rule for what counts as borderline in the first place.

#Metrics to track once the gate is live

The gate is only doing its job if you can measure the difference it makes.

Track bounce rate and spam complaint rate before and after the gate goes live, since those two numbers are the clearest proof the automated checks are catching what they claim to catch.

Track the percentage of drafts that get held or rejected by each individual check, not just the total rejection rate, because a single check catching almost everything usually means the others are miscalibrated or redundant.

Track how long a flagged draft sits in the human review queue before it gets a decision, since a growing queue means the gate is routing too much to people instead of resolving what it can resolve on its own.

And track reply rate segmented by whether a draft passed clean or needed a human override, because that split tells you whether the review step is actually improving quality or just adding delay.

Regular audits matter here too. Compliance review for AI email covers who should own the sign-off on flagged drafts and what needs to be logged for that review to hold up later.

#Conclusion

An automated pre-send check is not a nice-to-have layer bolted onto an AI drafting tool. It is the thing that makes AI drafting safe to run at volume in the first place.

Five checks cover almost everything: recipient validity, personalization integrity, compliance, authentication, and tone. Four of those five are pure automation, and the fifth needs a human only for the fraction of drafts a model correctly flags as ambiguous.

Teams that build this gate stop bleeding domain reputation to preventable mistakes. Teams that skip it discover the cost weeks later, usually as a reputation collapse they cannot trace back to a single bad send.

The reply rate numbers back this up plainly. Systematised, checked campaigns land 10-18% replies. Unchecked, generic volume gets 1-3%. That gap is not talent. It is whether anything stood between the draft and the inbox.

#FAQ

#What is a pre-send check in cold email?

A pre-send check is an automated rule or model pass that inspects a drafted email before it queues for sending, checking things like address validity, personalization accuracy, compliance elements, and tone before a human or the sending system ever fires it.

#How is a pre-send check different from a spam filter?

A spam filter runs on the receiving mailbox provider's side and judges a message after it arrives. A pre-send check runs on the sender's side before the email leaves the queue, so it prevents reputation damage instead of reacting to it.

#Can pre-send checks fully replace human review of AI drafts?

No. Automated checks handle deterministic problems well: bad addresses, broken tokens, missing compliance elements, and authentication failures. Judgment calls around tone, timing, and cultural sensitivity still need a person, though the volume needing review drops sharply once automation handles the rest.

#What percentage of a cold email list is usually invalid?

Unverified prospect lists commonly carry 10-30% invalid addresses, with another 5-15% coming back as catch-all or unknown status. That is why a verification check at send time, not just at list-upload time, matters.

#Why exclude catch-all addresses from cold email sends?

A catch-all domain accepts every address whether real or not, so a bounce there has full reputational cost with no signal in return. For cold outreach with no prior relationship, the safer move is to route catch-all addresses to a small isolated batch instead of the main send.

#What bounce rate puts a sending domain at risk?

Google's bulk sender rules cap bounce rate under 2% and spam complaints at 0.1%. Industry guidance generally treats anything over 3% bounce rate as a warning sign and over 5% as an active risk to sender reputation.

#How often should SPF, DKIM, and DMARC be checked, not just set up once?

They should be checked on an ongoing basis, ideally before every send batch, because a record that worked at setup time can silently break after a DNS provider migration or a configuration change elsewhere in the stack.

#What is the biggest personalization risk with AI-drafted cold email?

Hallucinated or stale facts about a prospect or their company. Testing on AI personalization tools found roughly 15% of drafts that attempted real research contained a fabricated or inaccurate detail, and that kind of error is the one prospects notice and remember fastest.

#Should every AI draft go through a tone and claim check?

Yes, because tone and unverifiable claims are the one category a rules engine cannot catch reliably. A model pass flags drafts with unverifiable superlatives or misrepresented relationships and routes only those for human review.

#What should happen when an authentication check fails?

The entire campaign should hold, not just the one email. A failed SPF, DKIM, or DMARC alignment check is a domain-level problem, and letting other emails from that domain send anyway risks compounding the reputation damage.

#How much does a pre-send gate reduce human review time?

It depends on how narrow the flagging logic is, but teams running a layered gate typically report human review dropping from every draft to a small flagged subset, since four of five check categories are fully automatable.

#Can a small team build pre-send checks without buying a platform?

Yes, for the deterministic checks. Email verification and DNS authentication lookups are solved problems with existing vendor APIs. The tone and claim check is harder to build well without tuning a model prompt to the brand's specific failure modes.

#What is the single highest-value check to build first?

Personalization integrity, because errors there are the ones prospects notice fastest and remember longest. A wrong name is forgivable. A confidently stated false claim about someone's company usually is not.

#How does a pre-send gate affect reply rates?

Indirectly but significantly. It does not write better copy, but it stops broken and inaccurate drafts from reaching an inbox and burning trust, which protects the domain reputation that reply rate depends on in the first place.

#Do compliance checks need to vary by jurisdiction?

Yes. Required disclosure language and consent requirements differ by region, and a pre-send gate should apply the correct rule set based on the recipient's jurisdiction rather than a single global template.

#What logging should a pre-send check keep?

Every rejection or flag should log which check failed and why, not just a pass or fail outcome. Without that log, a team cannot tell whether a check is accurately catching problems or just rejecting drafts at random.

#How does list decay affect pre-send checks?

An address that was valid three months ago can be dead today. A gate that only checks validity at list-upload time misses that decay, so verification needs to run again at send time, not just once.

#What is the risk of skipping pre-send checks at scale?

The damage compounds quietly. A domain sending thousands of emails a day with even a small invalid-address rate crosses bounce thresholds fast, and reputation recovery after a mailbox provider downgrades a domain takes far longer than the check would have taken to run.

#Is a pre-send gate the same thing as an eval set?

No, but they work together. A pre-send gate blocks bad drafts in real time. An eval set built from a team's own won and lost threads measures whether the gate's rules are actually calibrated correctly over time.

#Where does FirstSales fit into this pattern?

FirstSales runs a layered pre-send gate as a default part of its AI drafting pipeline, so the human approval step only sees drafts that already passed the deterministic checks and got flagged by the tone and claim pass, rather than every raw output.