You registered the domain. You set up Apollo or Instantly. You loaded 400 prospects and hit send.
Two weeks later you find out you have been sending into spam folders the entire time. Your domain is flagged in Google Postmaster Tools. Your sequence never reached a single inbox.
This is not a rare edge case. It is the default outcome for any founder who launches cold outbound without a domain warmup protocol.
The Problem: New Domains Have Zero Reputation
Email service providers (ESPs) like Gmail and Outlook evaluate every sending domain against a reputation score. A freshly registered domain has no score — and no score reads as suspicious.
When you send 400 emails from a zero-reputation domain on day 3, the ESPs see:
- High volume from an unknown sender
- No prior reply history
- No established relationship with recipients
The result: your emails go to spam. If enough recipients mark them as junk, your domain gets flagged. Once flagged, even your legitimate emails — password resets, receipts, onboarding sequences — start failing.
The worst version of this mistake: using your primary company.com domain for cold outreach. One burned cold-email domain contaminates your entire transactional email reputation.
Why Warmup Tools Alone Are Not Enough
Tools like Instantly, Lemlist, and Mailreach include built-in warmup modules. These are useful — but founders consistently make the same mistake: they activate the warmup module and assume the job is done.
The warmup module handles volume ramp. It does not set up your DNS records.
Before any warmup can work, you need:
- SPF record — tells ESPs which servers are authorized to send from your domain
- DKIM key — cryptographically signs outgoing messages (use 2048-bit minimum)
-
DMARC policy — tells ESPs what to do with unauthenticated mail; start with
p=none, move top=quarantineafter 30 days of clean sending - MX records — your domain must be able to receive replies, not just send
If any of these are missing or misconfigured, warmup fails at the infrastructure level regardless of volume ramp.
The 4-Week Warmup Protocol
Once DNS is configured and verified (use MXToolbox to confirm), you are ready to ramp.
Week 1: Send 5 emails per day. Use your warmup seed list only (see next section). Target reply rate: above 30%.
Week 2: Increase to 10 emails per day. Mix in a small number of real prospects (no more than 20% of daily send). Watch bounce rate closely.
Week 3: Increase to 25 emails per day. Real prospect ratio can move to 40%. If bounce rate stays below 2%, you are on track.
Week 4: Increase to 50 emails per day. By day 28, your domain has a 4-week reply history, a low complaint rate, and a growing reputation score. You are now safe to run standard cold sequences.
Key rule: Never double volume in a single day. The ramp must be gradual. A sudden jump from 10 to 100 emails is a signal that triggers automated spam filters.
Using Apify to Build Your Warmup Seed List
The warmup protocol requires a list of "warm" inboxes — email addresses belonging to active users who will open, read, and reply to your seed messages. A stale list or a list of inactive accounts defeats the purpose.
This is where Apify solves a specific, concrete problem.
Using Apify's HTTP Actor, you can pull structured data from publicly available professional directories and profile sources to build a list of currently active Gmail and Outlook users. The filter criteria:
- Professional email domain (Gmail Workspace, Outlook for Business)
- Profile last updated or active within 30 days
- Not a role-based address (info@, support@, noreply@)
Here is a minimal implementation using Apify's HTTP Actor:
import { Actor } from 'apify';
await Actor.init();
const input = await Actor.getInput();
const { urls } = input;
const results = [];
for (const url of urls) {
const response = await fetch(url, {
headers: { 'User-Agent': 'Mozilla/5.0' }
});
const data = await response.json();
// Filter for active professional inboxes
const activeUsers = (data.users || []).filter(user => {
const lastActive = new Date(user.last_active_at);
const cutoff = new Date();
cutoff.setDate(cutoff.getDate() - 30);
return lastActive > cutoff && user.email && !user.email.startsWith('info');
});
results.push(...activeUsers.map(u => ({ email: u.email, name: u.name })));
}
await Actor.pushData(results);
await Actor.exit();
Run this actor, export the results to a CSV, and load the list into your warmup tool as the seed audience for weeks 1–2.
The Apify free tier provides enough compute to build an initial seed list of 200–500 contacts — enough for a full warmup cycle.
Daily Monitoring: What to Watch
Check these metrics every morning during the warmup period:
Bounce rate: If your bounce rate exceeds 5%, pause immediately. Do not send another email until you have identified the cause (stale addresses in seed list, DNS misconfiguration, or flagged domain). If bounce rate exceeds 2% but is below 5%, slow down — reduce daily send volume by 50% and hold for 3 days before increasing again.
Complaint rate (Google Postmaster Tools): If complaint rate rises above 0.1%, your seed list contains addresses that are marking you as spam. Remove those contacts and replace with fresher sourcing.
Reply rate: Warmup seed messages should generate replies. If reply rate drops below 15%, your messages are landing in spam even during warmup. Check DNS records again and verify your DKIM signature is valid.
Cost Framing
A professional email warmup service costs $30–$100/month. A deliverability consultant charges $150–$300/hour. Recovering a burned domain — if it is recoverable at all — takes 4–8 weeks of restricted sending.
The Apify free tier covers the inbox list build at $0. The warmup tool of your choice handles the ramp. Total out-of-pocket cost for the infrastructure piece: zero.
The cost of skipping this: your domain reputation, your outbound pipeline, and potentially your transactional email deliverability if you made the mistake of using your primary domain.
Before You Send a Single Email
- Register a dedicated sending domain (not your primary
company.com) - Configure SPF, DKIM (2048-bit), and DMARC (
p=noneto start) - Verify DNS with MXToolbox
- Build warmup seed list with Apify HTTP Actor (200–500 active professional inboxes)
- Load seed list into warmup tool, set daily limit to 5
- Run 4-week ramp following the schedule above
- Monitor bounce rate and complaint rate daily
- Move to real prospect sequences only after 28 days of clean warmup data
Every step before step 8 exists to protect step 8. Skip any of them and you are back at day one — with a domain that may never fully recover.
If your bounce rate has already spiked and you are in recovery mode: pause all sending, check Google Postmaster Tools for domain reputation status, and start the warmup protocol from the beginning with a fresh sending domain. Do not attempt to repair a burned domain with additional volume.
Top comments (0)