WarmHawk
Blog / Warmup

Self-hosted email warmup: how it actually works

Self-hosted warmup means your own mailboxes exchange warmup mail with each other while a small, real-send ramp layers in on top — no vendor’s shared network of other customers’ accounts involved. Track inbox placement over a rolling 7-day window and treat a sustained 90%+ rate as the graduation signal, not a fixed number of days on the calendar.

What “self-hosted” actually changes about warmup

Warmup needs real traffic to exchange — sends, opens, replies, and the occasional rescue-from-spam, on a schedule that reads as ordinary human email behavior rather than a script. That traffic has to come from somewhere, and the “somewhere” is exactly what changes when you self-host: instead of a vendor enrolling your mailbox in a network of every other customer’s accounts, your own mailboxes provide it. A small team with 5-10 mailboxes across a couple of domains already has enough sending pairs to exchange warmup traffic internally, with nothing routed through infrastructure you don’t control.

Two things run in parallel, not in sequence. First, mailbox-to-mailbox exchange builds a baseline sending and receiving history without ever touching a real prospect — this is what most people picture when they think “warmup.” Second, a real-send ramp layers a small, deliberately controlled number of genuine outbound sends on top once baseline engagement looks healthy, so the mailbox’s history isn’t 100% synthetic traffic by the time it needs to carry real volume. See the full warmup mechanics and 2-4 week timeline for how that ramp curve is shaped week to week.

Why shared pools are a fragile bet

Receivers don’t only score individual mailboxes in isolation — they also look for patterns across related sending infrastructure. A large group of mailboxes that consistently email each other, on correlated IP ranges or through the same shared sending platform, can read as exactly that kind of related cluster. When one participant in that cluster trips a spam-complaint spike or lands on a blocklist, the negative signal isn’t necessarily contained to that one domain — it can shape how the receiver treats the pattern the whole pool represents. See the actual mechanism, including a documented case of a warmup vendor’s own shared network getting a customer’s brand-new domains reputation-blocked through no fault of that customer’s own sending behavior.

Self-hosting doesn’t make a mailbox immune to reputation problems — authentication gaps, bad list quality, and aggressive sending still hurt exactly as much. What it removes is one specific, avoidable variable: reputation risk imported from other customers you’ve never interacted with, sharing infrastructure you have no visibility into and no ability to audit.

What to actually measure: rolling 7-day inbox rate

A single day’s placement result is noisy — a handful of test sends landing in spam on one day doesn’t necessarily mean the ramp is failing, and a perfect day doesn’t mean it’s safe to jump volume. The useful number is a rolling window:

This is the same principle behind seed-inbox placement sampling as a first-party signal rather than a vendor’s self-reported “heat score” — a score measures the warmup network’s internal traffic, while a real seed-inbox check measures where your mail actually lands.

A practical ramp schedule

WindowMailbox-to-mailbox exchangeReal-send layerGate to advance
Week 1Low, steady volume between your own mailboxes onlyNone yetBounces near zero, nothing flagged as spam
Week 2Volume roughly doubles if week 1 stayed cleanA handful of real sends per day begin layering inRolling 7-day inbox rate trending upward
Weeks 3-4Continues stepping up toward baseline targetReal-send volume steps up on the same cadenceRolling 7-day inbox rate holding at 90%+
GraduatedTapers off as real volume takes overFull target cold-send volume for that mailboxKeep sampling placement — a graduated mailbox can still regress

Compressing this defeats the purpose: reputation is built from a pattern over time, not raw send count, so a mailbox that jumps straight to full volume reads to a receiver as exactly the anomaly this whole process exists to avoid creating.

What self-hosting changes structurally

WarmHawk’s core sending engine is source-available under the Business Source License (BSL 1.1) — a non-compete grant that converts to Apache 2.0 after four years, not an OSI open-source license, but code you can read, run, and self-host on your own server today. Tier 0 is free and gives you the full sending/queueing engine via direct API access — no dashboard, no SLA, nothing metered — which is enough to run the mailbox-to-mailbox exchange and real-send ramp described above entirely on infrastructure you control. Tier 1 adds the operator dashboard, domain health alerts, and a founder-staffed support SLA for $199/mo flat, with unlimited mailboxes, domains, and users on that same fee — the mailbox count you’re warming doesn’t change what you pay. Every account runs on its own containers, database, and network, with nothing shared at the application layer with any other WarmHawk customer, which is what makes the shared-pool exposure described above a non-issue by construction rather than a policy promise.

Run warmup on infrastructure you actually control

Tier 0 is free, self-hosted, and API-only — install it and check the first domain in under 10 minutes.

Questions

Self-hosted warmup: questions worth answering up front

Do I need separate mailboxes just for warmup, or can real mailboxes warm each other?+

Real sending mailboxes can warm each other — that is the whole mechanic of a self-hosted setup. A small team running 5-10 mailboxes across a few domains has enough mailboxes to exchange warmup traffic between them; a solo sender with one mailbox has nothing to exchange with locally and either needs a second mailbox to pair with or a real-send ramp from day one.

Can I self-host warmup without self-hosting the rest of my cold-email infrastructure?+

Not cleanly — warmup needs to run on the same sending infrastructure it is protecting, since the point is building a track record for the exact mailbox and sending pattern that will later carry real volume. Bolting a separate warmup-only tool onto a different sending platform reintroduces the shared-network question this whole approach is trying to avoid.

How many mailboxes do I need before self-hosted warmup makes sense?+

There's no hard floor, but the mechanic gets easier with more mailboxes to pair across. Two mailboxes can warm each other in a basic loop; a handful across 2-3 domains gives you enough variety in send/receive pairs that the traffic doesn't look like a closed two-node loop, which is itself a pattern receivers can notice.

What happens if my inbox rate drops below 90% partway through the ramp?+

Slow or pause the ramp at the volume it was at, not the volume you were about to move to. A dip usually means the mailbox needs another week at the same level before receivers extend more trust — pushing volume up anyway compounds the exact behavior (a low-reputation address suddenly sending more) that triggered the caution in the first place.