MailLandDocs

IP Warmup

Gradually increase sending volume on new domains to establish sender reputation

When you start sending from a new domain, mailbox providers have no history to judge your reputation. Sending too much too fast triggers spam filters. IP warmup gradually increases your daily sending volume over multiple stages, giving providers time to build trust in your domain.

How Warmup Works

MailLand tracks warmup status per domain. Each domain progresses through stages with increasing daily limits:

Start sending

When you verify a new domain and send your first email, MailLand automatically begins the warmup process for that domain.

Daily limits enforced

Each stage has a maximum number of emails allowed per day. MailLand enforces this limit: emails exceeding the daily cap are rejected with a 429 WARMUP_LIMIT_EXCEEDED error.

Advance through stages

After meeting the minimum days at each stage, the domain advances to the next stage with a higher daily limit. Advancement happens automatically.

Warmup completes

Once all stages are completed, the domain has no daily limit and can send at your plan's full capacity.

Warmup Stages

The exact stage configuration depends on your plan. A typical warmup schedule:

Free plan (30 days total):

StageDaily LimitMinimum Days
1505
21005
32505
45005
57505
61,0005

Pro plan (14 days total):

StageDaily LimitMinimum Days
15002
21,0002
32,5002
45,0002
510,0003
625,0003

Max plans skip warmup entirely: there is no daily limit from the first send.

After the final stage, the warmup is complete and no daily limit applies.

Stage limits and minimum days are plan defaults (seeded, editable by the Owner). Contact support if you need a custom schedule.

Warmup Status

Check the warmup status for all your domains through the subscription policy summary endpoint:

GET https://api.mail.land/v1/account/subscription/policy-summary

Authenticate with Authorization: Bearer <token> or X-API-Key: <api key>.

Get policy summary
curl https://api.mail.land/v1/account/subscription/policy-summary \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

The response includes a domainWarmup array with each domain's current warmup state:

Domain warmup status
{
  "domainWarmup": [
    {
      "domainId": "k3v9x2m8q1w7z4",
      "domainName": "yourdomain.com",
      "currentStage": 3,
      "totalStages": 6,
      "todaySentCount": 450,
      "dailyLimit": 1000,
      "progressPercent": 50,
      "completed": false,
      "bypassed": false,
      "authoritativeUsedToday": 460,
      "authoritativeRemainingToday": 540
    },
    {
      "domainId": "n7p2q9x4m8w1z3",
      "domainName": "notifications.yourdomain.com",
      "currentStage": 6,
      "totalStages": 6,
      "todaySentCount": 12500,
      "dailyLimit": 50000,
      "progressPercent": 100,
      "completed": true,
      "bypassed": false,
      "authoritativeUsedToday": 12520,
      "authoritativeRemainingToday": 37480
    }
  ]
}
FieldTypeDescription
domainIdstringDomain's public id
domainNamestringDomain name
currentStageintCurrent warmup stage (1-based)
totalStagesintTotal number of stages in the plan
todaySentCountintA lower bound on today's consumption, kept for compatibility and the progress bar. It advances only after a batch commits, so it can lag behind what has actually been admitted. Not what the gate enforces on, and not a fallback for the authoritative fields below.
dailyLimitintMaximum emails allowed today
progressPercentintOverall warmup progress (0–100)
completedboolWhether warmup is finished
bypassedboolWhether warmup was manually bypassed
authoritativeUsedTodaylong or nullToday's consumption as the admission gate's per-domain Redis counter records it. null when warm-up does not apply to this domain or the counter could not be established.
authoritativeRemainingTodaylong or nullThe governing stage's daily limit less authoritativeUsedToday, floored at zero: the same arithmetic the admission gate applies. null on the same terms as authoritativeUsedToday.

Daily Counter Reset

Both the lower-bound todaySentCount and the authoritative Redis counters reset at midnight UTC each day. Use authoritativeRemainingToday for what is left today; todaySentCount can lag behind in-flight sends.

Exceeding the Limit

When you attempt to send beyond the daily warmup limit, the API returns:

429 Too Many Requests
{
  "code": "WARMUP_LIMIT_EXCEEDED",
  "message": "Warmup limit reached for stage 3. Daily limit: 1000",
  "details": {
    "stage": 3,
    "dailyLimit": 1000,
    "remainingToday": 0
  }
}

Separately, 429 WARMUP_POOL_BUDGET_EXCEEDED and 429 WARMUP_POOL_EMPTY mean the platform's own daily sending capacity is limiting new sends; they are not caused by your usage and need no action. The message says sending is paused and resumes automatically, and Retry-After points at the next 00:00 UTC. The SMTP relay returns a transient 421 with the same text for the same refusal. See Platform Capacity.

Warmup limits are enforced across all sending methods. API and SMTP sends over the limit are refused immediately (not queued). Campaigns and automations are not rejected the same way: they are paced/deferred to the next day instead.

Bypassing Warmup

If you are migrating from another email provider and already have established reputation on the IP/domain, you can request warmup bypass through support. When bypassed, the bypassed field is true and no daily limits apply.

Best Practices

  • Start with transactional emails: password resets and order confirmations have high engagement rates, which builds reputation faster.
  • Send to your most engaged recipients first: during early stages, prioritize recipients who regularly open and click your emails.
  • Don't send to old or unverified lists: high bounce rates during warmup severely damage reputation. Validate your lists before importing.
  • Monitor deliverability daily: check your sender score and bounce rates during warmup. A spike in bounces or complaints may require pausing and cleaning your list.
  • Maintain consistent volume: sudden spikes trigger spam filters. Spread your sending evenly throughout the day.
  • Authenticate your domain first: ensure SPF, DKIM, and DMARC are all properly configured before starting warmup.

Warmup Timeline

A warmup from 0 to full volume takes 14–30 days depending on your plan: 14 days on Pro, 30 days on Free. Max plans skip warmup entirely.

PlanApproximate Daily Volume Over TimeFocus
Free (~30 days)50 → 100 → 250 → 500 → 750 → 1,000Transactional emails, highest-engagement recipients first
Pro (~14 days)500 → 1,000 → 2,500 → 5,000 → 10,000 → 25,000Expand to broader transactional + engaged marketing
MaxNo warmupFull volume, all message types from day one

Next Steps

On this page