Run through this checklist before every cold email campaign. Missing any of these items - especially the first seven - means some or all of your emails will fail to reach the inbox.
Critical - missing any of these means automatic spam filtering by Gmail and Outlook.
SPF record is configured - Check: dig TXT yourdomain.com | grep spf. Must return a valid v=spf1 record listing your sending servers. Maximum 10 DNS lookups.
DKIM is configured and the selector matches - Your sending platform generates the DKIM key. Verify: dig TXT [selector]._domainkey.yourdomain.com. Must return a v=DKIM1 record.
DMARC is configured at minimum p=none - Even p=none is enough to pass Google/Microsoft checks. Verify: dig TXT _dmarc.yourdomain.com.
DMARC rua address is active - The email address in your DMARC rua= tag must be a real, monitored inbox. DMARC reports from major ISPs go there - you need to read them.
SPF and DKIM alignment with DMARC - For DMARC to pass, either SPF or DKIM must align with the From: domain. Check using mail-tester.com or GlockApps inbox test.
One-time setup checks for each sending domain.
Domain is aged 30+ days - New domains registered today are automatically spam-filtered by major ISPs. Use domains aged at least 30 days; 60+ days is safer.
Domain warmup has run for 30+ days - Domain warmup builds sender reputation. Never skip to full-volume sends without warmup. Use Instantly Warmup, Mailreach, or Lemwarm.
Domain is not on any blacklist - Check: MXToolbox Blacklist Check. If your domain appears on any major blacklist (Spamhaus, Barracuda, SORBS), resolve the listing before sending.
Custom tracking domain is set up - Your ESP tracking links (open pixel, click tracker) should use a subdomain of your own domain (e.g. track.yourdomain.com) - not the ESP generic tracking domain, which may be blacklisted.
Unsubscribe link is present and working - Required by CAN-SPAM (US), GDPR (EU/UK), CASL (Canada). The link must work and route to a real suppression mechanism.
Physical mailing address is in the email footer - Required by CAN-SPAM. Use your company address or a registered virtual office address.
The most impactful deliverability factor. Never skip these.
List verified with BounceZero in the last 30 days - A verification result older than 30 days has accumulated new invalids (B2B decay is 2%/month). Always re-verify before every campaign send.
Invalid and catch-all addresses removed - BounceZero classifies addresses as valid, risky (catch-all), invalid, or disposable. Remove invalid and disposable. Remove risky/catch-all for cold email.
Role-based addresses removed - Remove info@, sales@, admin@, contact@, support@, hello@. These never reply, sometimes flag email as spam, and waste sends.
Suppression list applied - All previous hard bounces and unsubscribe requests must be removed from the import list before sending.
No purchased lists - Purchased lists average 30-50% invalid. If you cannot avoid them, verify them with BounceZero and expect to send to 50-70% of the raw count.
How you send is as important as what you send.
Daily send volume is within domain limits - New or recently warmed domains: max 50-100 cold sends/day. Established domains (90+ days): 200-500/day per sending account. Exceeding these triggers volume-based filtering.
Sending time is within business hours (recipient time zone) - Send 8am-6pm recipient local time. Emails sent at 3am look like automated spam.
Inbox rotation is set up (for multi-account sends) - If sending from multiple accounts, configure inbox rotation in your platform (Instantly, Smartlead) to distribute sends across accounts rather than blasting from one.
Follow-up delays are realistic (minimum 24h between touches) - Sending email 2 one hour after email 1 looks automated. Minimum 24-48 hour gap between sequence touches.
Email content checks that affect spam filter scoring.
No spam trigger words in subject or body - Avoid: FREE, URGENT, OFFER, DISCOUNT, GUARANTEE, all-caps words, multiple exclamation marks, percentage discounts.
Plain text or minimal HTML - Heavily HTML-formatted emails look like marketing blasts. Cold emails should be plain text or minimal HTML - no hero images, no heavy styling.
Single call-to-action - One clear ask per email. Multiple links and multiple CTAs are spam signals.
Personalisation is present - At minimum: use the first name. Better: company name, specific observation. Personalised emails receive lower spam scores.
No link shorteners - bit.ly and other shorteners are associated with spam. Use full URLs or your custom tracking domain.
List quality is the single highest-impact deliverability lever. 100 free credits, no card required, results in 8 minutes.
Ayoub built BounceZero's 5-stage validation pipeline, its dedicated BGP-announced IP infrastructure, and the Patroni HA PostgreSQL cluster behind every verification. Previously built high-volume email delivery infrastructure. Trained at 1337 Benguerir (École 42 network, 2019). Open-source: bgp_analyzer.
Strategy, writing, sequences, and lead generation
CAN-SPAM vs GDPR vs CASL - what is legal, what is required, compliance checklist
5-layer stack, spam word list, 20-point checklist - inbox every time
Retainer vs performance pricing, tool stack costs, and red flags to watch
Service model, pricing, tools, and first 5 clients
8 strategies ranked by ROI - with tool recommendations
8 methods ranked by cost and quality - verify before first send
Continue through related topics