Self-hosted email marketing with full source code. Pay once, own forever. Get AcelleMail — $74 →

IP Warmup Schedule for New Sending Servers

A 6-week IP warmup schedule that builds sender reputation without ISP throttling — tested against Gmail, Yahoo, and Microsoft postmaster guidance, with rollback recipes.

A new sending IP arrives at every major ISP — Gmail, Yahoo, Microsoft, AOL — with zero reputation. If you blast 100,000 emails the day you bring it online, the inbox-placement rate will not be 100 % minus a small bounce rate; it will be single-digit percent, and your IP will be deferred or rejected for weeks. The fix is not magic — it is patience and a numerically-precise schedule.

This article is the schedule, the monitoring stack, the AcelleMail configuration, and the three red flags that mean "stop and investigate" rather than "push harder." Every number is grounded in the published guidance from Gmail Postmaster Tools, Microsoft SNDS, and Yahoo's Sender Hub, plus first-hand AcelleMail customer warmups against Amazon SES + dedicated IP allocations.

Why warmup is non-negotiable

Inbox providers operate per-IP reputation models. Each IP has a per-ISP reputation score (and, increasingly, a per-IP-per-domain pair). A new IP starts at "unknown." For Gmail, "unknown" means inbox placement falls back to content + engagement signals from your authenticated domain — but engagement signals require deliveries to land in inboxes, which requires reputation, which requires warmup. The deadlock breaks only if you start small enough that the engagement-from-known-domain signal carries you while the IP is being graded.

Concretely, here is what happens if you skip warmup on a new IP:

  • Day 1: sending 50,000 emails to a 60 %-Gmail mailing list. ~30,000 messages enter Gmail.
  • Hour 0-2: Gmail's anti-abuse layer detects an unfamiliar sender at high volume. Throttles to ~500/hour.
  • Hour 6: if engagement (opens, clicks) on the trickle is high, throttle eases. If engagement is unknown (because the messages went to spam, where opens are rare), throttle tightens.
  • Day 2: retry the deferred 25,000 emails. Reputation is now scored as "high-volume sender, low engagement" — worst possible position. Throttle drops further.
  • Day 7: IP is effectively useless for Gmail until you stop, wait 30 days, and warm up correctly.

That is what the schedule below prevents.

The 6-week schedule (proven against Gmail, Yahoo, Microsoft)

Use this for a new dedicated IP serving 100k+ emails per month. Lower-volume programs (< 50k/month) can use a 3-week compressed schedule (skip rows 1-7, start at row 8).

Week Day Daily volume Cumulative Suggested checkpoint
1 1 50 50 First send at noon recipient TZ — measure deferral % at 18:00
1 2 50 100 Check Google Postmaster Tools (24-48h delay)
1 3-4 100 300 Watch bounce rate (must stay < 2 %)
1 5-7 250 1,050 Verify SPF/DKIM/DMARC pass on every message (dig + Postmaster)
2 8-10 500 2,550 First reputation reading on Postmaster Tools — must be "Medium" or above
2 11-14 1,000 6,550 If "Low" reputation, halve the next-day volume + investigate engagement
3 15-18 2,500 16,550 Review per-ISP defer rate; Microsoft SNDS should show GREEN
3 19-21 5,000 31,550 Domain reputation in Postmaster should be "High" by now
4 22-25 10,000 71,550 If anything is still "Low," PAUSE, hold volume for 3 days, resume from previous step
4 26-28 25,000 146,550 Feedback-loop (FBL) handler must be receiving complaint reports
5 29-35 50,000 496,550 Cross-check inbox placement using a seed-list test (Litmus or Glock Apps)
6+ 36+ Full volume Maintain consistent daily volume — do NOT spike

The arithmetic is intentional: each row roughly doubles the previous, never more than 2.5×. Sudden volume spikes — even within a "warming-up" sender — are the most reliable way to lose reputation.

AcelleMail configuration

Per-server sending limits enforce the schedule from the application side. The relevant model field is SendingServer::sending_quota and the quota_period (daily is what you want for warmup).

Admin → Sending Servers → Edit → Sending Limit
  Sending quota:  50          (Day 1-2)
  Quota period:   1 day
  Throttle:       1 every 2 minutes  ← spread the day's volume evenly

Then bump weekly:

Day 3-4:   100/day, 1 every 60s
Day 5-7:   250/day, 1 every 30s
Day 8-10:  500/day, 1 every 15s
Day 11-14: 1,000/day, 1 every 10s
…

The throttle line is critical: an unthrottled sender that bursts the day's quota in 30 minutes looks identical to a spammer to most ISPs. Spread the volume across the working day in the recipient timezone — a 1 every 30s setting gives Gmail's adaptive throttling room to learn your reputation incrementally.

For multi-server warmups (rotating across 3+ IPs), use AcelleMail's per-server quota + list-server-domain assignment so each IP only handles a slice of the day's volume.

Monitoring stack — what to watch hourly, daily, weekly

Hourly during the first 14 days

  • Defer rate in AcelleMail's per-campaign log. Anything > 5 % is a stop-and-investigate.
  • Bounce rate — anything > 2 % is a stop-and-investigate.

Daily

  • Google Postmaster Tools (postmaster.google.com) — IP reputation + Domain reputation graphs. Warmup target: Medium by Day 7, High by Day 21.
  • Microsoft SNDS (sendersupport.olc.protection.outlook.com) — green status = good, red = stop.
  • Yahoo — no public dashboard, but Yahoo's complaint feedback loop will arrive at your AcelleMail FBL handler if complaints are above the floor.
  • AcelleMail bounce logAcelle\Model\BounceLog. Look for sudden new bounce types (e.g. unknown user jumping while everything else stays flat → list hygiene problem, not IP problem).

Weekly

  • Blacklist sweep:
    # Spamhaus, Barracuda, SORBS — the three that materially affect inbox
    for bl in zen.spamhaus.org b.barracudacentral.org dnsbl.sorbs.net; do
      REVERSED=$(echo YOUR.IP.HERE | awk -F. '{print $4"."$3"."$2"."$1}')
      echo -n "$bl: "
      dig +short "$REVERSED.$bl"
    done
    
    Empty results = clean. A returned IP (e.g. 127.0.0.2) means listed.
  • Seed-list test: send a representative campaign to 30+ seed addresses across the major ISPs; record inbox vs. spam vs. missing rate.
  • AcelleMail's per-server stats — open rate per server should be stable or rising during warmup. A sudden drop signals a reputation event before the dashboards catch up.

Three red flags that mean PAUSE (not push harder)

A common operator mistake during warmup is to interpret poor signals as "the IP needs more reputation, send more" — which makes it dramatically worse. The corrective action when any of these fire is to hold the previous day's volume for 3 days and only proceed if the metric recovers.

  1. Bounce rate ≥ 5 % over a 24-hour window. This is almost never an IP-reputation signal — it is a list-hygiene signal. Stopping the warmup is correct, but the fix lives in cleaning the list, not in the IP.
  2. Gmail Postmaster IP reputation drops from Medium → Low. This is a reputation event. Pause, hold volume at half the previous step for 3 days, do not introduce any new sending domain or template during the hold.
  3. Sudden "user complaint" spike (FBL > 0.3 %). Almost always content-driven. Pause, audit the most recent campaign for misleading subject lines, missing unsubscribe links, or content that doesn't match the original opt-in promise.

When to deviate from the schedule

The schedule is the starting point, not a contract. Two situations justify deviation:

  • You're warming a replacement IP for an existing program. The recipient list already has engagement signals on your authenticated domain, so you can compress the schedule by ~30 %. Drop rows 1-3, start at Day 4 (250/day).
  • You're warming a shared IP (e.g. a small SES account). The shared-IP pool already has reputation; AWS warms IPs centrally. Use the schedule only as a per-account quota — don't worry about the per-IP graph.

Conversely, slow down further if any of these are true:

  • The list has been dormant > 90 days — re-engagement is harder than warmup-from-fresh, and the engagement signal you're trying to build will be poor.
  • The from-domain is new (< 30 days). Domain reputation is now weighted more heavily than IP reputation by Gmail. Do domain warmup in parallel — see the linked article below.

Beyond warmup — keeping reputation high

Warmup is the on-ramp. Steady-state reputation maintenance is the highway. Three rules:

  1. Volume consistency. A sender that does 50,000/day for a month then 200,000/day on Black Friday triggers reputation throttling on the spike. Plan promotional spikes by warming higher headroom 2 weeks in advance.
  2. Engagement-first segmentation. AcelleMail segments by last_opened_at and open_count — use them. Sending only to the engaged 50 % of the list lifts engagement signals to all ISPs simultaneously.
  3. Hygiene cycles. Every 30 days, suppress subscribers with zero opens in 90 days. Every 90 days, run a re-engagement campaign before pruning. The list-management category has a full hygiene playbook.

Related reading

FAQ

How long does IP warmup take?

The full schedule is 6 weeks for a new dedicated IP at 100k+/month. Lower-volume programs can compress to 3 weeks. Replacement IPs for established programs take 2-3 weeks.

Do I need to warm up on shared IPs (Amazon SES, SendGrid)?

Shared IPs are warmed centrally by the provider. You only need to respect the provider's per-account ramp (SES production-access ramp is a separate concept). The schedule above applies to dedicated IPs.

Can I warm two IPs in parallel?

Yes. Split the schedule's daily volume across the IPs (so on Day 1, 25 emails per IP if you have 2 IPs). Warm each ISP separately if you can — Gmail might be ready before Microsoft.

What if Postmaster Tools shows "Low" reputation on Day 21?

Stop adding volume. Hold at the previous day's level for 3 days. If reputation does not recover to "Medium," investigate: (a) authentication is failing on a subset of messages, (b) the list has hygiene problems, or (c) the from-domain has poor reputation independent of the IP.

How do I know my warmup is "done"?

Postmaster Tools shows "High" reputation for both IP and Domain for 7 consecutive days, and your seed-list test shows ≥ 95 % inbox placement at major ISPs. After that, maintain consistent volume — reputation can decay if you stop sending for > 30 days.

Implementation in AcelleMail's WarmupStrategy

AcelleMail ships a first-class warmup strategy resource, not just per-server quotas. Field model (from app/Dto/WarmupStrategyData.php):

Field Used for
preset Starter template (balanced, aggressive, conservative)
growthStrategy linear (constant daily increment) or exponential (daily × factor)
startingVolume Day 1 volume
dailyIncrement Linear bump per day
exponentialFactor Multiplier for exponential ramp
limitType per_day_cap / target_volume / stop_after_days
limitPerDayCap Hard ceiling — never exceed this/day
limitTargetVolume Stop ramping when reached
limitStopAfterDays Stop ramping after this many days
sendOnWeekends Whether weekends count
enableSafetyChecks Toggle for the safety system below
pauseOnNegativeSignals Auto-pause on bounce/complaint thresholds
maxBounceRate Default 0.05 (5%) — auto-pause threshold
maxComplaintRate Default 0.003 (0.3%) — auto-pause threshold

Configure at Admin → Warmup Strategies → New. Then attach the strategy to a sending server in Admin → Sending Servers → Edit → Warmup Strategy.

The "Balanced" preset implements the schedule above: linear growth from 50/day, doubling roughly weekly, capped at the per-day target. Don't disable safety checkspauseOnNegativeSignals is what saves you from a runaway-failure cascade during warmup.

What "completion" looks like in metrics

Three metrics indicate warmup is genuinely complete (not just calendar-complete):

  1. Postmaster IP + Domain reputation: High for 7+ consecutive days.
  2. Microsoft SNDS Filter Result: GREEN with Complaint Rate < 0.30 % consistently.
  3. Seed-list inbox placement: ≥ 95 % across the four-ISP panel (Gmail, Outlook, Yahoo, AOL).

Hit all three, hold for 7 days, then graduate. Don't graduate on calendar alone — Day 42 with Medium reputation means "warmup didn't take," not "warmup done." Repeat the last week's volume for another 7 days, investigate why engagement signals didn't lift the reputation, and only then graduate.

More in Sending & Deliverability