The Cold Email
Deliverability Toolkit

Guaranteed 98%+ delivery, double your open rates, and generate more leads with Instantly, Smartlead, and other tools.

DNS Setup
Warmup Strategy
Spam Triggers
50+
Actionable Tips
9
FREE Tools
Scroll to explore

Free Tools

TL;DR — If You Read Nothing Else

Cold email deliverability fails in predictable ways. After analyzing hundreds of campaign post-mortems, the same five root causes account for roughly 90% of all deliverability failures:

#Root CauseFrequency
1Stale or unverified list data
~40%
2Broken DNS authentication (SPF/DKIM/DMARC)
~25%
3Premature sending before warmup completes
~15%
4Sending too fast, too soon
~10%
5Spam-trigger copy or excessive links
~10%

The single most misunderstood factor: Catch-all domains. Between 10-20% of B2B domains use catch-all mail server configurations that make standard email verifiers return false positives. Most senders don't know this is happening, but RevenueBase Email Verification can easily tell if these emails are Valid or Invalid. Section 5 explains this in full and shows how to fix it.

Three things to do right now if you're having deliverability problems:

Section 01

The Five Problems That Kill Cold Email Campaigns

Based on community discussion patterns across the cold email ecosystem

The deliverability failure landscape follows predictable patterns. Understanding these root causes is the first step to fixing them.

Cold Email Campaign Failure Modes by Root Cause

Data quality (stale lists, bad vendors)
~40%
Authentication failures (SPF/DKIM/DMARC)
~25%
Warmup skipped or incomplete
~15%
Volume ramp too aggressive
~10%
Content/spam trigger issues
~10%
The most-discussed topic in cold email communities by a wide margin. Senders follow the standard advice, complete their warmup, launch campaigns, and still land in Promotions or Spam. The warmup itself is almost never the problem. Real causes include:

• Broken DNS records (SPF/DKIM/DMARC failing silently)
• Sending to lists with high invalid or catch-all rates
• Wrong warmup-to-cold-send volume ratios (scaling cold sends too fast relative to warmup volume)
• Warmup pool with no genuine replies (one-way sends don't build reputation)
"Verified" B2B data from major vendors decays at 22–30% per year. Even freshly exported Apollo lists can reach 15–25% invalid emails when cold-sent without additional verification. One high-bounce campaign can permanently damage a sending domain. The hidden problem here is catch-all domains — see Section 5 for a full explanation.
Auto-pause rules in Smartlead and Instantly, Google's November 2025 hard 550 rejections, and Microsoft's April 2025 enforcement rules are catching senders off guard. Campaigns stop, accounts get flagged, and senders don't understand what triggered it. Section 6 covers every failure mode with diagnosis steps.
Secondary domains, mailbox-to-domain ratios, DNS record configuration, Google Workspace vs. Outlook trade-offs, warmup pools — the full setup stack is poorly documented in one place. Section 2 is the complete answer to this question.
Bounce codes feel like a foreign language. Senders don't know which to suppress, which to retry, and which signal infrastructure problems vs. data problems. Section 7 is a complete reference guide to every code.
Section 02

Cold Email Infrastructure Setup: The Master Checklist

Domain setup, DNS authentication, and mailbox configuration

Critical Rule

Never send cold email from your primary company domain. One bad campaign can destroy deliverability for your entire organization. Always use dedicated sending domains.

Choosing Your Sending Domains

Domain Setup Checklist

0/7

Choose Your Email Provider

FactorGoogle WorkspaceMicrosoft 365
Monthly cost$6/user (Starter)$6/user (Business Basic)
Daily send limit per mailbox2,00010,000
Warmup tool compatibilityExcellentGood — growing
Spam filter strictness (post-2024)More aggressiveMore forgiving
Setup complexitySimpleSlightly more complex
Best forTeams starting outHigh-volume teams (1,000+/day/mailbox)

2025–2026 Enforcement Update

Google (November 2025) and Microsoft (April 2025) now hard-reject emails that fail authentication with a 550 error — they are no longer just filtered to spam. Missing or broken SPF/DKIM/DMARC is now a sending blocker, not just a deliverability risk.

SPF Record

SPF Setup

0/5

DKIM Record

DKIM Setup

0/5

DMARC Record

DMARC Setup

0/6

Mailbox Setup

0/6

Non-negotiable Rule

Warm up before sending a single cold email from any new domain or mailbox.

Warmup Duration by Scenario

ScenarioRecommended Duration
Brand new domain (0 days old)45–60 days total (14-day aging + 30-day warmup)
New domain (14–30 days old)30 days of active warmup
Previously used domain (no bad history)14–21 days
Domain with prior spam complaints45+ days — consider registering a new domain instead
Existing mailbox on warmed domain7–14 days before scaling

Weekly Volume Ramp Schedule

Emails Per Mailbox Per Day:

Week 1 (warmup pool only)
~15%
Week 2 (warmup pool only)
~30%
Week 3 (begin cold sends)
~60%
Week 4 (scale gradually)
~100%
Month 2+ (full volume)
~135%

Warmup Best Practices

0/4
Section 03

Smartlead: Complete Setup Checklist

Account, warmup, and campaign configuration for Smartlead

Smartlead
smartlead.ai

Account Setup

0/4

Connection Setup

0/4

Warmup Configuration

0/6

Campaign Settings

0/7

Auto-Pause Setup

0/4
When Smartlead auto-pauses a campaign: do not just resume it. Diagnose the root cause first using Section 6 of this guide. Resuming without fixing the underlying issue will escalate the problem.

Lead Management

0/5
Section 04

Instantly: Complete Setup Checklist

Workspace, accelerator, and deliverability suite configuration

Instantly
instantly.ai

Account Setup

0/4

Connection Setup

0/5

Warmup Configuration

0/6

Campaign Settings

0/5

Auto-Pause Setup

0/5

Deliverability Tools

0/4

Lead Management

0/6
Section 05

Data Vendors, List Hygiene & The Catch-All Problem

Your data quality is the single biggest variable in your deliverability

The best infrastructure in the world cannot protect you from sending to 20% invalid addresses.

Annual B2B Email Data Decay Rate

Month 1 (freshly built)
100% valid
Month 3 (~6% decay)
94% valid
Month 6 (~15% decay)
85% valid
Month 9 (~22% decay)
78% valid
Month 12 (~28% decay)
72% valid
Month 18 (~40% decay)
60% valid

B2B contact data decays because:

  • People change employers — their work email becomes invalid
  • Companies are acquired, rebranded, or shut down
  • Small companies let domains lapse
  • Off-boarded employees' mailboxes are deleted, typically within 30-90 days

This is the most misunderstood concept in B2B email verification. Read carefully.

A catch-all domain is a mail server configured to accept every email sent to it — regardless of whether the specific mailbox exists.

When a standard email verifier tries to check if john.smith@bigcorp.comis valid, it uses SMTP to knock on the mail server and ask "does this mailbox exist?" A catch-all server answers "yes" to every knock — not just for John Smith, but for every possible address at that domain.

The result: a standard verifier cannot tell if any specific email at a catch-all domain is real. So it labels the address "catch-all," "unknown," "risky," or "accept-all."These are all the same thing: the verifier failed to get an answer and is reporting its uncertainty.

The "Black Hole" Problem

There's a more dangerous variant: catch-all servers that not only accept everything but silently discardmessages for addresses that don't exist. Your email shows "sent" in your platform. No bounce is returned. But the message never reaches a real person.

The impact:

  • Your bounce rate looks artificially low (no hard bounce returned)
  • Your open rate drops (nobody ever received the message)
  • You are burning sends and eroding your sender score simultaneously

Between 10-20% of B2B domains behave this way.

Catch-All Rate by Company Tier

SMB / Startups (Gmail/Outlook)
~7%
Mid-market (250-1,000 employees)
~20%
Enterprise (1,000+ employees)
~32%
F500 / Finance / Healthcare
~42%

Note: Accuracy figures reflect real-world cold email sending performance, not self-reported vendor claims.

VendorEst. AccuracyCatch-All HandlingBest For
RevenueBase95-98%Resolves catch-allsEnterprise-grade B2B accuracy, AI-ready data
Apollo78-87%SMTP-based — returns catch-all labelBroad prospecting, integrated sequences
Clay88-94%Depends on waterfall sourcesWaterfall enrichment from 75+ sources
Cognism85-92%SMTP-basedEuropean data, phone-verified contacts
Fullenrich82-90%Waterfall — inherits source limitationsWaterfall enrichment, good price/volume ratio
Hunter.io82-90%SMTP-basedDomain-level email finding, SMB
Lusha80-87%SMTP-basedEuropean contacts, phone data
Not all email verifiers are equal — especially on catch-all domains.
ToolMethodCatch-All HandlingBest Use Case
RevenueBaseDomain-level existence checkResolves catch-allsBest accuracy for enterprise B2B lists
NeverBounceSMTP pingReturns "unknown"Good bulk pricing, solid API
ZeroBounceSMTP pingReturns "catch-all" labelStrong on disposable/spam-trap detection
MillionVerifierSMTP pingReturns "risky"Best price-to-volume ratio
BouncerSMTP pingReturns "unknown"Strong European compliance features
DebounceSMTP pingReturns "catch-all" labelBudget-friendly for high volume
Post-Verification Invalid RateDecisionAction
Under 2%SendProceed — monitor bounce rate on launch
2-5%Proceed with cautionSend at reduced volume; monitor closely
5-10%Do not sendClean further or get new data
10%+Do not sendSource is too degraded — get fresh data
Over 15% catch-all (SMTP verifiers)Run through RevenueBase firstMany catch-alls may be valid
Any spam traps detectedDo not sendInvestigate source; remove all flagged addresses

Run this before every new campaign:

Pre-Campaign List Cleaning

0/7
Section 06

What Can Go Wrong: 12 Failure Modes & How to Fix Them

Diagnose and resolve every common deliverability issue

What happened:

Your sending platform hit a configured threshold. Common triggers: bounce rate exceeded 3%, spam complaint rate exceeded 0.08%, or consecutive delivery failures on multiple mailboxes.

Diagnose:
  • Check the pause reason in campaign settings (Smartlead: Logs tab; Instantly: Campaign > Insights)
  • Identify whether it was triggered by bounce rate, spam rate, or delivery failure
  • Pull the bounce report and check which addresses triggered bounces
  • Check whether bounces are concentrated in one email provider (all Gmail, all Outlook, etc.)
Fix:
  • If bounce-rate triggered: Remove all hard-bounced addresses; re-verify list before resuming
  • If spam-rate triggered: Review email copy for spam trigger words; check relevance of targeting
  • If delivery failure triggered: Check DNS records on the sending domain; verify SPF/DKIM/DMARC are passing
  • Run a deliverability test before resuming (Smartlead Spam Test or Instantly Inbox Checker)
What happened:

Your sending domain has been added to a commercial blocklist. Major blocklists include Spamhaus, Barracuda, SURBL, and MXToolbox.

Diagnose:
  • Check all sending domains at mxtoolbox.com/blacklists.aspx
  • Run a broader scan at multirbl.valli.org
  • Identify which blacklist(s) have listed your domain
Fix:
  • Stop all sending from the blacklisted domain immediately
  • Submit removal requests (each blacklist has its own process)
  • Remove the root cause: clean list, fix DNS, remove spam-trigger content
  • If blacklisted multiple times: retire the domain — don't try to rehabilitate it
  • Allow 24–72 hours for delisting to propagate before resuming
What happened:

Emails are delivered but not to Primary inbox. Gmail routes to Spam or Promotions; Outlook sends to Junk.

Diagnose:
  • Test inbox placement at glockapps.com or mail-tester.com
  • Check sender score at senderscore.org
  • Check Google Postmaster Tools at postmaster.google.com
  • Determine if the issue is provider-specific (only Gmail? only Outlook?) or universal
Fix:
  • Fix — Infrastructure: Verify SPF, DKIM, DMARC are all passing
  • Check domain age — domains under 60 days are inherently untrusted
  • Ensure warmup is active with healthy engagement
  • Fix — Content: Remove spam trigger words (free, guarantee, click here, limited time offer)
  • Remove all link shorteners (bit.ly, tinyurl.com) — strong spam signals
  • Reduce links per email (aim for zero or one in cold outreach)
  • Test without open tracking pixels — these can trigger spam filters
What happened:

Google Workspace or Microsoft 365 suspended or limited your sending account directly — not just a campaign pause in Smartlead/Instantly.

Diagnose:
  • Log into the mailbox directly (Gmail/Outlook web) to check for suspension notices
  • Check whether you can send manually from the mailbox
  • Review Google Admin console or M365 Admin Center for account flags or security alerts
Fix:
  • Google Workspace: Submit a review request via Admin console; explain you are a legitimate business
  • Microsoft 365: Contact Microsoft support directly; accounts can often be reinstated with verification
  • Reduce daily sending volume significantly before attempting to resume (start at 20–30/day)
  • Do not log in from unfamiliar IPs — this triggers additional security flags
  • If suspended repeatedly: Migrate affected domains to the other platform (Workspace <> M365)
What happened:

Bounce rate has crossed acceptable thresholds. Common causes: stale data, unverified list, domain-level rejection by a specific provider, or authentication failure.

Diagnose:
  • Export full bounce report; sort by error code
  • Group bounces by provider (Gmail vs. Outlook vs. corporate) and by code type (5xx vs. 4xx)
  • 550 5.1.1 codes concentrated: data problem — addresses are invalid
  • 550 5.7.x codes concentrated: authentication or policy problem
  • 421 / 4xx codes concentrated: temporary throttling
Fix:
  • Invalid addresses (5.1.1, 5.1.2): Remove; re-verify entire list before continuing
  • Policy rejection (5.7.x): Fix authentication records; check if IP/domain is blacklisted
  • Throttling (4xx): Reduce daily sending volume; spread sends over longer windows
  • If bounce rate stays above 5% after list cleaning: the data source is the problem — get new data
What happened:

Campaigns are sending but nobody is replying.

Diagnose:
  • Run an inbox placement test immediately — confirm emails are reaching Primary inboxes
  • Check open rate: if under 20%, emails are likely going to spam
  • If open rate is normal (30–50%) but reply rate is low (under 2%), this is a copy or targeting issue, not a deliverability issue
Fix:
  • If open rate is low: Focus on deliverability fixes from Failure Mode #3
  • If open rate is normal: Review email copy and targeting strategy
What happened:

Your email failed DMARC alignment. The receiving server is rejecting because SPF or DKIM is not passing in alignment with your DMARC policy.

Diagnose:
  • Check DMARC alignment at dmarcian.com/dmarc-inspector/
  • Ensure your From: domain matches the domain in your SPF and DKIM records
  • If using a third-party tool with custom domains, verify DKIM is set up for your sending domain (not the tool's domain)
Fix:
  • Temporarily set DMARC to p=none to diagnose without blocking email
  • Fix alignment issues in SPF and DKIM
  • Re-tighten DMARC policy after alignment is confirmed
What happened:

Your bounce report shows soft bounces or missing engagement from a significant portion of your list, but few hard 5xx codes. This is the classic catch-all "black hole" pattern.

Diagnose:
  • Filter bounce report for silent bounces or "no delivery record" entries
  • Check if affected domains are large corporate domains (Fortune 500, healthcare, finance)
  • Run affected addresses through RevenueBase verification — it will return Valid/Invalid/Unknown without the SMTP catch-all problem
Fix:
  • Run your entire list through RevenueBase verification before the next send
  • Remove Invalid results; evaluate Unknown based on your current reputation health
  • Do not simply discard all catch-all-labeled addresses from SMTP verifiers — many are valid enterprise emails that RevenueBase can resolve

Note

For complete bounce error code diagnosis, see Section 7 — The Bounce Error Code Toolkit.
Section 07

The Bounce Error Code Toolkit

Complete SMTP reference guide for every bounce code

Every failed email in your sending platform logs a bounce code. This section is the complete reference for what each code means, whether it is a data problem, infrastructure problem, or content/policy problem — and what to do.

Code TypeWhat It MeansAuto-Retry?
4xx (Soft Bounce)Temporary failure — receiving server says "not now, try later." Your mail server retries automatically over 24–72 hours.Yes — auto-retry
5xx (Hard Bounce)Permanent failure — receiving server says "no, never." Retrying produces the same result. Suppress the address.No — suppress immediately
CategoryTypeWhat It Means
DATAHard bounceInvalid or nonexistent email address
INFRAHard bounceYour DNS, authentication, or IP reputation
POLICYHard or softRecipient server content/spam policy
TEMPSoft bounceTemporary condition — retry automatically
CodeCategoryMeaningAction
550 5.1.1DATAMailbox does not exist — address is invalidRemove from list immediately
550 5.1.2DATADomain does not exist or has no MX recordRemove — domain is gone or expired
550 5.1.3DATAInvalid recipient address syntaxFix email format or remove; check for typos
550 5.1.6DATADestination mailbox deactivated — person left companyRemove from list
452 4.2.2DATARecipient mailbox full (over quota)Soft bounce — retry 24–48h; if recurring, remove
550 5.2.1DATAMailbox unavailable — user account disabledRemove from list
550 5.7.1INFRASPF failing or IP/domain on a blocklistCheck SPF record; check blacklists; fix authentication
550 5.7.9INFRADMARC failure — alignment check failedFix DMARC alignment; ensure From: domain matches DKIM/SPF domain
550 5.7.15INFRAMicrosoft hard rejection — SPF/DKIM/DMARC missingAdd/fix all three authentication records immediately
550 5.7.26INFRAGmail DMARC alignment failureRun dmarcian.com inspector; fix alignment
554 5.7.0INFRASending IP has poor reputation or is blacklistedCheck blacklists; request removal
554 5.7.1INFRAMessage blocked — spam content or sender policyReview email copy for spam triggers; verify DKIM signature
550 5.4.1INFRASending domain has no reverse DNS (PTR)Set up PTR record with your hosting provider
421 4.7.0TEMPServer temporarily unavailable / rate limitedReduce send speed; auto-retry will handle
421 4.7.28TEMPGmail temporary rate limit — sending too fastReduce daily volume; spread sends over longer windows
451 4.3.0TEMPMail server temporarily unable to accept messagesAuto-retry; temporary condition on recipient server
452 4.5.3TEMPToo many messages in a short period — throttledReduce send frequency; space out campaign sends
550 5.3.4POLICYMessage size exceeds limitReduce email size; remove large images or embedded content
550 5.6.11POLICYContent contains prohibited materialReview content for prohibited words or links
553 5.1.3POLICYEmail address syntax violationFix email format — common cause: extra spaces or invalid characters
554 5.6.0POLICYInvalid characters or encoding in messageFix character encoding in email template; check special characters

Major providers append human-readable strings to standard codes. These tell you exactly what triggered rejection:

Diagnostic StringProviderWhat It Means
"Your message was blocked because the sender is unauthenticated"GoogleDMARC failure — fix SPF/DKIM alignment
"Our system has detected that this message is likely unsolicited mail"GoogleSending reputation is low or content triggered spam classifiers
"The email account that you tried to reach does not exist"GoogleInvalid address — remove from list
"Mail rejected by Windows Live Hotmail for policy reasons"MicrosoftIP or domain on Microsoft's SNDS blocklist
"Message rejected due to sender's blocked status"MicrosoftIP is on Microsoft's blocklist — submit JMRP/SNDS removal
"Spam message rejected"BarracudaRecipient's Barracuda gateway blocked it — ask recipient to whitelist
"This message was classified as spam"SpamAssassinContent-based filter triggered — remove spam trigger words

Pro Tip

Bookmark this section. When you see a bounce code you don't recognize, come back here to understand exactly what went wrong and what action to take.
Section 08

Tolerances, Thresholds & Consequences

KPIs, provider enforcement rules, and emergency protocols

MetricHealthyWarningCriticalImmediate Action
Hard Bounce Rate< 1%1–2%> 2%Pause campaign; clean list; re-verify before resuming
Spam Complaint Rate< 0.05%0.05–0.1%> 0.1%Pause immediately; review targeting and copy
Cold Email Open Rate> 35%20–35%< 20%Likely in spam — run inbox placement test
Cold Email Reply Rate> 3%1–3%< 1%Inbox placement or copy issue — diagnose before scaling
Unsubscribe Rate< 0.5%0.5–2%> 2%List quality or relevance problem
Soft Bounce Rate< 3%3–7%> 7%Reduce volume; investigate throttling patterns
Daily Volume / Mailbox≤ 100100–150> 150Risk of ISP rate limits — spread across more mailboxes
Mailboxes / Domain2–33–4> 4Concentrates reputation risk — add domains
ProviderSpam Rate ThresholdAction at Threshold
Google (Gmail)> 0.1% sustained; > 0.3% spikeEmails filtered to spam or hard-rejected (550)
Google (Workspace)> 0.1% sustainedAccount review; potential sending suspension
Microsoft (Outlook/Hotmail)> 0.3%IP/domain listed in SNDS; hard-rejected
Microsoft (365 Tenant)> 0.3%Outbound spam policy triggers tenant-level block
Yahoo / AOL> 0.3%Emails filtered; domain on dynamic blocklist
Day 1-3

Campaign auto-paused; sending mailbox rate-limited

--- Emails route to Spam instead of Primary

--- Google Postmaster Tools sender score drops

Day 3-14

Domain appears on commercial blocklists (Spamhaus, Barracuda)

--- Google Workspace account flagged for abuse review

--- Microsoft SNDS listing — affects ALL senders from your IP range

Day 14+

Domain reputation permanently damaged

--- Inbox placement rates drop for all future sends from the domain

--- Best practice: retire domain, register new one

--- If Google Workspace account suspended: ALL mailboxes lose access

Key Insight

Domain reputation damage is cumulative and slow to recover. It takes months of clean, low-volume sends to rehabilitate a damaged domain. In most cases, retiring the domain and starting fresh is faster than trying to repair it.

Trigger Conditions

If your bounce rate spikes above 5% or spam complaint rate exceeds 0.1%:

Emergency Response Steps

0/7

Daily Health Check

0/6

Launch Readiness

0/9