A new mailbox earns the inbox before it sends a campaign.
A new mailbox has no sending reputation, so mail providers are cautious with it. Warm-up builds that reputation with a few real emails a day and measures where every one of them lands.
Every new WarmHawk mailbox starts in warm-up. It emails your other mailboxes and test inboxes a few times a day (2 on day 1, growing 20% a day up to 20), WarmHawk checks whether each email reached the inbox, spam or Gmail’s Promotions tab, and the mailbox moves to Active only once at least 90% of its checked emails in the last 7 days reached the inbox, from day 14 on. No shared network: partners are only inboxes you own.
Who a mailbox emails
A partner is any inbox WarmHawk can read over IMAP afterwards: another of your connected mailboxes, or a test inbox you add under Seed Accounts (/v1/seed-accounts). Partners on another domain come first. A mailbox needs at least one partner; with none, warm-up waits and the dashboard says to add a second mailbox or a test inbox.
- One at a time per inbox. No inbox gets two warm-up emails within 5 minutes, so several of your mailboxes never hit one inbox in the same minute.
- Mailboxes take turns. The order is random each round, so no mailbox always goes first.
- No repeated subjects. A subject an inbox saw in the last 3 days isn’t sent to it again.
- Spread through the day. Sends are spaced across a 16-hour day rather than in a burst, through the same connection your campaigns use, with no tracking code and no footer.
The daily ramp
| When | How many |
|---|---|
| Day 1 | 2 warm-up emails |
| Each day after | 20% more than the day before, up to 20 a day |
| After graduation | 3 warm-up emails a day, to keep measuring health |
| Campaign emails after graduation | Start at 5 a day, grow 20% a day, never above the mailbox’s dailyCap |
A warm-up day is the 24 hours from the mailbox’s first warm-up send, not a calendar day, so each day sends exactly its target. Warm-up emails don’t count against the mailbox’s campaign dailyCap.
Where each email landed
A few minutes after a send, WarmHawk opens the receiving mailbox and looks in the inbox, every spam folder and, in Gmail, the Promotions tab. Each email gets one result:
| Result | Meaning | Health score |
|---|---|---|
| INBOX | Reached the inbox. | Counts as inbox |
| PROMOTIONS | Reached Gmail’s Promotions tab. | Checked, not inbox |
| SPAM | Landed in spam, then moved to the inbox (rescued). | Checked, not inbox |
| MISSING | Not in the inbox or spam 2 hours after sending. | Checked, not inbox |
| BOUNCED | The mail server sent it back. | Checked, not inbox |
| PENDING | Sent, waiting for the check. | Not yet |
| UNCHECKED | The receiving mailbox couldn’t be opened for 6 hours. | Not counted |
| FAILED | It never left; the send log has the reason. | Not counted |
The health score is the share of checked emails in the last 7 days that reached the inbox. A rescued email still counts as spam: it landed there, and moving it doesn’t change that. Checked emails are marked read and filed under “WarmHawk warmup” so they don’t fill your inbox.
Graduating, and falling back
- Graduate to Active on day 14 or later, with at least 20 checked emails in the last 7 days and a health score of 90 or more.
- Back to warm-up if an Active mailbox’s health drops below 70 over at least 10 checked emails. The 3 warm-up emails a day it keeps sending are what make this measurable.
- Campaigns wait. A warming mailbox can be ticked on a campaign and joins its rotation once it graduates, then ramps up as in the table above.
Graduation is never on a calendar alone: a mailbox that keeps landing in spam stays in warm-up until the numbers say otherwise. See Sending safely & domain health for the DNS and blocklist checks that usually explain a low score.
The warm-up API
API details (Tier 0 / self-hosters) · GET /v1/warmup — one row per mailbox▸
curl https://app.yourcompany.com/v1/warmup -H "Authorization: Bearer YOUR_API_KEY"
# summary: { warming, graduated, averageHealth, savedFromSpam, sent }
# mailboxes[]: mailboxId, email, stage, day, todayTarget, sentToday, health, checked,
# counts { inbox, promotions, spam, missing, bounced, pending, ... },
# partnerCount, campaignCapToday, dailyCap, lastBounce, nextStepAPI details (Tier 0 / self-hosters) · GET /v1/warmup/:mailboxId/messages — the send log▸
curl "https://app.yourcompany.com/v1/warmup/mbx_a1b2c3/messages?result=promotions&period=7d&page=1" \
-H "Authorization: Bearer YOUR_API_KEY"
# result: inbox | promotions | spam | moved | missing | bounced | pending | unchecked | failed
# period: 24h | 7d | 30d | all — newest first, { messages, total, page, pageSize }API details (Tier 0 / self-hosters) · POST /v1/warmup/:mailboxId/send-now — send one right away▸
curl -X POST https://app.yourcompany.com/v1/warmup/mbx_a1b2c3/send-now \
-H "Authorization: Bearer YOUR_API_KEY"
# 201 { "status": "sent", "messageId": "...", "to": "partner@yourcompany.com" }
# 409 no partner to send to · 422 mailbox paused or not fully connected · 502 the send failedmoved filters to emails that landed in spam and were moved to the inbox; spam includes them. Turn warm-up off or on for one mailbox with PATCH /v1/mailboxes/:id { "warmupEnabled": false }.
Questions
Warm-up: questions worth answering up front
Does WarmHawk use a shared warm-up network?+
No. A mailbox only emails your own other mailboxes and the test inboxes you add under Seed Accounts. There is no pool shared with other customers, so nobody else’s mail affects your reputation and your warm-up emails never land in a stranger’s inbox.
How long does warm-up take?+
At least 14 days. A mailbox moves to Active only when it is on day 14 or later, has at least 20 checked emails in the last 7 days, and 90% or more of them reached the inbox. A mailbox that keeps landing in spam stays in warm-up for as long as that takes.
Does a Promotions-tab landing count as the inbox?+
No. A warm-up email found in Gmail’s Promotions tab is recorded as PROMOTIONS. It counts as checked but not as inbox, so it lowers the health score the same way spam does.
Do warm-up emails clutter my inbox?+
No. Once WarmHawk has checked where a warm-up email landed, it marks it read and files it under a “WarmHawk warmup” folder (a label in Gmail). One found in spam is starred and moved to the inbox first, which is what a person does with mail they wanted.
Can I pause warm-up for one mailbox?+
Yes. PATCH /v1/mailboxes/:id with { "warmupEnabled": false } stops its warm-up sends; set it back to true to resume. Pausing the mailbox itself (status PAUSED) stops warm-up too.