You've registered a fresh sending domain, configured SPF/DKIM/DMARC, and written your first transactional email. But the moment you send 10,000 password reset emails on day one, half of them land in spam.
This is the cold-start problem. Email providers don't trust new domains. They need evidence that you're not a spammer—and that evidence takes time to build.
What is domain warm-up?
Domain warm-up is the deliberate, gradual process of building sender reputation with email providers by:
- Starting with a small daily send volume
- Increasing volume slowly over 4-8 weeks
- Maintaining high engagement rates (opens, clicks)
- Keeping bounce and complaint rates near zero
The goal: prove to Gmail, Outlook, Yahoo, and others that your domain sends legitimate, wanted email—not spam.
Why warm-up matters (even for transactional email)
Many founders skip warm-up for transactional email because "it's not marketing." But email providers don't care about your intent—they care about patterns.
A brand-new domain sending thousands of emails on day one looks identical to a compromised server or spam operation. The result:
- Inbox placement drops 40-70% in the first two weeks
- Password resets and verification emails land in spam or promotions tabs
- User complaints increase ("I never got the email"), triggering more filtering
- Sender reputation damage takes months to repair
The 4-week warm-up plan
This is a conservative warm-up schedule for a new transactional sending domain. Adjust based on your engagement rates and bounce/complaint metrics.
Week 1: 50-200 emails per day
Start small. Send only to your most engaged users:
- Target: Recent signups, active users, internal team members
- Email types: Welcome emails, verification emails (high open rates)
- Avoid: Bulk sends, cold lists, re-engagement campaigns
Week 2: 200-500 emails per day
Double your volume if week 1 metrics are clean. Continue targeting engaged users.
- Monitor: Bounce rate <2%, complaint rate <0.1%, open rate >30%
- Red flag: If bounce or complaint rates spike, pause and audit your list
Week 3: 500-2,000 emails per day
Expand to broader user segments if engagement remains strong:
- Password resets (highly engaged)
- Order confirmations and receipts
- Account notifications
Avoid: Marketing emails, promotional content, or anything that risks low engagement during warm-up.
Week 4: 2,000-10,000+ emails per day
By week 4, if your metrics are solid, you can scale to full production volume. Continue monitoring closely.
Automated warm-up services
If you're using a dedicated sending domain with Postmark, SendGrid, or AWS SES, consider using an automated warm-up service:
- Warmup Inbox (warmupinbox.com) – sends emails between your domain and a network of real inboxes, simulating engagement
- Mailwarm (mailwarm.com) – similar service with reputation monitoring
- Lemwarm (lemlist.com/lemwarm) – warm-up + deliverability testing
These services work by:
- Sending emails from your domain to a network of real inboxes
- Automatically opening, clicking, and marking messages as "not spam"
- Building positive engagement signals with major providers
Metrics to monitor during warm-up
Track these metrics daily during the first 4-6 weeks:
1. Bounce rate (target: <2%)
High bounce rates signal poor list quality. Providers interpret this as spam behavior.
- Hard bounces: Invalid email addresses (remove immediately)
- Soft bounces: Temporary issues (inbox full, server down). Retry 2-3 times, then remove
// Example: Remove hard bounces automatically
import { sendEmail } from '@/lib/email';
async function handleBounce(event: BounceEvent) {
if (event.bounceType === 'Permanent') {
await db.users.update({
where: { email: event.bouncedRecipient },
data: { emailValid: false, bounceReason: event.diagnosticCode }
});
console.log(`Hard bounce: removed ${event.bouncedRecipient}`);
}
}2. Complaint rate (target: <0.1%)
Users clicking "Report spam" is the fastest way to destroy sender reputation. Even 1 complaint per 1,000 emails is a red flag.
- Root cause: Usually means users don't recognize your sender name or didn't opt in
- Fix: Use a recognizable "From" name and ensure clear unsubscribe links
3. Engagement rate (target: >30% opens for transactional)
High open and click rates signal to providers that users want your email. Transactional emails should have 40-60%+ open rates.
5 warm-up mistakes that kill deliverability
1. Sending to purchased or scraped lists
Using third-party email lists during warm-up is sender reputation suicide. Bounce rates will spike, complaints will flood in, and your domain will be blacklisted within days.
Rule: Only send to opted-in users who expect email from your domain.
2. Inconsistent sending patterns
Sending 5,000 emails on Monday, zero for three days, then 10,000 on Friday looks suspicious. Providers prefer steady, predictable volume.
Fix: Distribute sends evenly across weekdays. Avoid weekend or late-night bursts.
3. Ignoring authentication (SPF/DKIM/DMARC)
Warm-up won't save you if authentication is broken. Before sending a single email:
- Publish SPF and DKIM records
- Set DMARC to
p=none(monitor mode) initially - Verify alignment with a tool like
mail-tester.com
4. Scaling too fast
Doubling volume every day feels efficient but destroys reputation. Stick to conservative growth (25-50% increases per week).
5. Not monitoring feedback loops
Gmail, Outlook, and Yahoo offer feedback loop programs that notify you when users report your email as spam. If you're not subscribed, you're flying blind.
- Gmail Postmaster Tools: postmaster.google.com
- Microsoft SNDS: sendersupport.olc.protection.outlook.com
- Yahoo Complaint Feedback Loop: help.yahoo.com/kb/postmaster
When you can skip warm-up
Not every use case requires manual warm-up:
- Using a shared ESP (Resend, SendGrid Cloud, Postmark Cloud) – they handle warm-up at the infrastructure level
- Low volume (<500 emails/month) – cold-start impact is minimal
- Only sending to opted-in users with 50%+ open rates – reputation builds organically
TL;DR: Domain warm-up checklist
- Week 1: 50-200 emails/day to engaged users only
- Week 2: 200-500 emails/day, monitor bounce/complaint rates
- Week 3: 500-2,000 emails/day, expand to broader segments
- Week 4+: Scale to full volume if metrics are clean
- Always: Keep bounce rate <2%, complaint rate <0.1%, open rate >30%
- Use automation: Consider Warmup Inbox or Mailwarm for dedicated domains
- Monitor daily: Subscribe to Gmail Postmaster Tools, Microsoft SNDS, Yahoo FBL
Domain warm-up feels slow, but it's the difference between reliable inbox placement and months of deliverability firefighting. Start conservative, monitor obsessively, and scale gradually.