Skip to main content
IntermediateEmail Engine

Email Warmup

How NimbusOS warms up sending inboxes through a five stage engine, what the stage-based resume gate actually checks, and why day counts alone do not clear a fleet for cold outreach.

11 min read
Updated April 23, 2026
2,500 words

Warmup is the process of teaching ISPs that your inbox is a real human with a real conversation pattern, not a cold email blast waiting to happen. In NimbusOS, warmup is a stage engine. An inbox moves from stage 0 (brand new) to stage 5 (fully cleared for production cold outreach) through a combination of cumulative send history and reputation health signals. This article explains the stages, the resume gate that reads them, and the failure modes that get fleets stuck.

What Warmup Is Not

Before the walkthrough, three misconceptions worth killing.

Warmup is not a timer. Most outreach tools will tell you an inbox is warm after 14 days. NimbusOS does not. The stage engine checks cumulative warmup sends and health signals. A 14 day old inbox with only 40 warmup sends under its belt will stay in stage 2, because 40 sends is not enough signal for the ISPs to form a reputation.

Warmup is not a guarantee. A perfectly warmed inbox can still land in spam if the cold outreach copy is bad or the target list is dirty. Warmup earns you the right to send; it does not earn you the right to be read.

Warmup is not silent. The warmup engine writes ReputationEvent rows on every warmup action. The deliverability dashboard is where you see progress and where a stuck warmup surfaces.

The Five Stages

Every EmailAccountHealth row carries a current_stage integer from 0 to 5. The stage is computed live by get_inbox_stage(days_warming, cumulative_warmup_sends, reputation_health).

Stage 0: Brand new

A freshly provisioned inbox. No sends out, no replies in. The inbox is in stage 0 until the first warmup send lands without a bounce.

Typical duration: hours. Risk: domain not yet propagated, DKIM not yet published, DMARC misaligned. Fixing DNS is priority one.

Stage 1: Initial conversation

Small daily volume. Five to ten warmup sends per day. The warmup engine picks partner addresses and generates conversational two or three line messages. Partners open, read, and reply. The inbox both sends and receives.

Typical duration: 2 to 4 days. The goal of stage 1 is a non zero reputation signal at Gmail Postmaster and Microsoft SNDS. Below stage 1, the ISPs have no opinion of the inbox yet.

Stage 2: Building trust

Daily volume increases to 15 to 25 warmup sends. Reply partners rotate. Conversational threads extend over multiple days. The inbox is now building a multi domain reputation across hundreds of recipient domains.

Typical duration: 3 to 7 days. Stage 2 completion requires cumulative warmup sends over 100 and 7 day bounce rate under 1 percent.

Stage 3: Cold outreach gate

The big threshold. Stage 3 is the first stage where an inbox is eligible to serve a cold outreach campaign. The campaign resume gate checks that 20 or more inboxes have hit stage 3 and that at least 25 percent of the fleet is at stage 3 or higher.

Stage 3 entry requires cumulative warmup sends over 300, 7 day bounce rate under 1 percent, 7 day complaint rate under 0.1 percent, and a healthy reputation indicator from at least one of Gmail Postmaster or Microsoft SNDS.

Once at stage 3 the inbox can split volume between warmup and cold outreach. Warmup does not stop; it runs at a reduced rate as a maintenance signal.

Stage 4: Scaling

Production cold outreach volume. Daily send limit climbs to 80 to 120 per day. Warmup drops to 5 to 10 per day as maintenance.

Stage 4 requires sustained performance in stage 3 over a rolling period. Specifically, no more than one health degradation event in the last 14 days.

Stage 5: Full clearance

Maximum production volume. Daily send limit at 150 plus per day. Warmup at 2 to 5 per day.

Stage 5 is the steady state for a mature inbox. The reputation signal is strong enough that the ISPs treat the inbox as a known business sender.

The Resume Gate

The resume gate is the most important part of the warmup story. It is not a warmup feature per se; it is the check that every cold outreach campaign runs before launch.

The gate lives in deliverability/management/commands/check_campaign_readiness.py. It fires on three conditions that must all be true.

Condition one: 20 inboxes at stage 3 or higher. Raw count. A fleet of 5 inboxes cannot pass even if all 5 are at stage 5. The count of 20 is the practical floor for a cold outreach campaign to rotate enough to avoid burning any single inbox.

Condition two: 25 percent of the fleet at stage 3 or higher. Proportion. A 200 inbox fleet with only 30 at stage 3 does not pass even though the count is satisfied. The proportion rule prevents the user from launching a large cold campaign against a fleet that is mostly immature.

Condition three: 7 day bounce rate under 2 percent. Fleet level bounce rate across all recent sends. Above 2 percent signals list hygiene problems. The gate blocks the launch so the user does not amplify the damage.

warmup_progress is a cosmetic field on the inbox for dashboard display. It is not used by the gate. The gate reads current_stage directly.

What Happens During Warmup

Inside a single warmup cycle, three things happen.

Send. The warmup engine picks a partner address from the rotation, renders a conversational message, and sends from the inbox through its configured transport (ReachInbox, native, SMTP).

Receive. The partner inbox (also running through the warmup network) receives the message. A responder picks it up, opens, reads, and either replies or marks important.

Signal. The received email contributes to the sending inbox's reputation on the recipient's ISP. The engine then writes a ReputationEvent row with the outcome.

The rotation logic avoids sending to the same partner more than once every few days, so the reputation signal is distributed across many recipient domains rather than concentrated on a few.

Reading the Warmup Dashboard

The Email Warmup dashboard at /email-warmup shows every inbox in the fleet with its stage, cumulative warmup sends, daily sends today, 7 day bounce and complaint rates, and next stage transition criteria.

Three views worth knowing.

Fleet overview. Aggregate stage distribution. A healthy fleet in steady state looks like 60 percent at stage 4 or 5, 25 percent at stage 3, 15 percent at stages 1 and 2 as new inboxes mature in.

Inbox detail. Per inbox history of ReputationEvent rows, with filter by event type: warmup_sent, warmup_received, bounce, complaint, spam_folder, paused, resumed.

Blocked inboxes. Inboxes currently paused. Each has a reason code visible on click. Common reasons: DNS misalignment, blacklist hit, bounce rate breach, complaint rate breach, shared IP neighborhood degradation.

Common Stuck States

Five failure modes show up most often.

Stuck at stage 0

The inbox never got past its first warmup send. Almost always a DNS problem: SPF missing, DKIM key not published, DMARC policy not aligned. Check DomainHealth for the domain. check_domain_readiness returns a score under 80 when DNS is incomplete.

Stuck at stage 1 with rising bounce rate

The warmup rotation is hitting invalid partner addresses. This is usually a transient issue in the partner network. If bounce rate climbs above 1 percent during stage 1, the inbox is paused and the engineering team is paged. As a user, contact support if you see this persist for more than 48 hours.

Stuck at stage 2 with flat cumulative sends

The warmup engine is throttling because of a shared IP neighborhood signal. Another sender on the same IP is behaving badly. The fix is either to wait for the neighbor to clean up or to request a different IP from ReachInbox.

Gets to stage 3 then regresses to stage 2

Usually a cold outreach campaign sent before the inbox was fully ready, burning reputation. The regression rule is: if reputation health drops two levels within 7 days, the inbox steps back one stage. The fix is to pause the cold outreach campaign, let the warmup continue at full rate, and re enter stage 3 after 10 to 14 more days.

Stage 4 inbox with suddenly high bounce rate

A list hygiene event. The target list for a running campaign is dirtier than assumed. Pause the campaign, run email verification on the remaining contacts, and resume once the bounce rate decays.

Warmup for BYOSMTP Inboxes

When you connect an inbox through custom SMTP (not ReachInbox), warmup still works but uses NimbusOS's native warmup engine rather than ReachInbox's. The partner network is smaller, so stage progression is slower. Expect 40 to 50 percent longer in stages 1 through 3 compared to a ReachInbox hosted inbox.

Custom SMTP inboxes also carry higher risk: the IP, the hosting, and the reputation are entirely under your control. The platform can warm them but cannot fix a poisoned IP or a misconfigured MX record. Bring clean infrastructure.

Warmup and the Growth Brain

The Growth Brain ingests anonymized warmup outcomes from every fleet on the platform. Patterns that work, like specific message tones or reply timings, are surfaced as recommendations for fleets that are stuck. The recommendations are workspace level, not per inbox, so the signal applies across the agency.

Frequently Asked Questions

How long does a full warmup take?

Rough planning: 2 weeks to stage 3, 4 weeks to stage 4, 6 to 8 weeks to stage 5. A fleet of 30 inboxes typically has 20 plus inboxes at stage 3 by week two, enough to clear the resume gate for a small cold campaign.

Can I speed up warmup by sending more warmup emails per day?

No. The stage engine caps daily warmup sends per inbox because pushing higher too early is counter productive. A sudden spike in volume from a cold inbox looks like a spam campaign to ISPs, which is the opposite of what you want.

Does warmup continue after stage 5?

Yes, at low volume. Stage 5 inboxes run 2 to 5 warmup sends per day as a maintenance signal. Dropping warmup entirely causes reputation drift over time.

What if I only have 10 inboxes?

The resume gate requires 20 at stage 3 for cold outreach. With 10 inboxes you cannot clear the gate. You can still run warmup and nurture campaigns against consented contacts. For cold outreach, add more inboxes.

Can I see why an inbox is at a specific stage?

Yes. The inbox detail page shows the exact criteria the engine used to compute the stage. Cumulative warmup sends, bounce rate, complaint rate, days warming, and reputation indicators are all visible. This is the easiest way to diagnose "why is this inbox still at stage 2".

Does pausing an inbox preserve stage?

Yes. Paused inboxes keep their current stage but stop accumulating warmup sends. When resumed, the stage is re evaluated against the health signals. If too much time has passed without warmup activity, the inbox may regress.

After you have warmup set up correctly, the next most useful pages are Deliverability Overview for how warmup feeds into the NDS score, ISP Monitoring for the Gmail Postmaster and Microsoft SNDS signals that the stage engine reads, and Creating Your First Campaign to see the resume gate from the launch side.

Related articles

Still stuck?

Our team answers every support ticket. If the answer is not in the docs, open a ticket and we will write the missing page.