Solutions
Email Warmup Service — Built Into Mails.ai, No Separate Tool Needed
An email warmup service on Mails.ai is not a separate subscription — it is built into the sending infrastructure. When you add a custom sending domain, SES manages the reputation ramp automatically: sends route through the established shared pool until your domain builds its own clean history, no seed lists, no manual volume schedule, and no third-party warmup tool required. New domains are typically warm within 14 days while real transactional sends go out from day one.
What a standalone email warmup service does — and why you can skip it here
A standalone email warmup service solves a single problem: a fresh sending domain or IP has no sending history, so spam filters treat its first messages with suspicion. Traditional warmup services address this by sending your domain mail to their own managed seed inboxes, marking the messages as legitimate, and building an artificial engagement record over four to eight weeks. You pay a monthly subscription, configure your sending identity inside their platform, and wait before you can send real mail at real volume.
Mails.ai routes around the problem architecturally. The shared sending rail already has an established reputation — real transactional sends, low complaint rates, verified domain authentication, per-sender reputation scoring. When you send through it, your mail inherits that track record from message one. New custom domains join the rail and ramp via the SES configuration set, not a seed network.
Automatic email warmup service — how the ramp works
When you add and verify a custom sending domain, SES creates a reputation context for it and begins routing sends through two channels simultaneously: your domain context and the established shared pool. As your domain accumulates clean sending history — low bounces, no spam complaints, consistent authentication — the balance shifts toward your domain context. The ramp completes when your domain has enough of its own track record to stand alone. You do not configure this; SES manages the routing split per-message throughout the ~14-day window.
Progress is visible at /dashboard/domains. The status moves from warming to active when the ramp is done. Sends never fail or queue during the warmup period — the shared pool backstop ensures delivery while the domain builds its reputation.
Send during warmup — bidirectional API from day one
You do not wait for warmup to finish before sending. Your domain starts sending real mail immediately after DNS verification, and the warmup happens in parallel. The API is identical before, during, and after the ramp:
# Add your sending domain — warmup starts automatically after DNS passes
curl https://api.mails.ai/v1/domains \
-H "Authorization: Bearer $MAILS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "notifications.yourapp.com"}'
# Check warmup progress
curl https://api.mails.ai/v1/domains/notifications.yourapp.com \
-H "Authorization: Bearer $MAILS_API_KEY"
# {
# "domain": "notifications.yourapp.com",
# "status": "warming", // warming → active after ~14 days
# "reputation": 0.62, // 0.0–1.0, builds over the ramp period
# "dns_verified": true
# }
# Send immediately — no need to wait for warmup completion
curl https://api.mails.ai/v1/messages \
-H "Authorization: Bearer $MAILS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "hello@notifications.yourapp.com",
"to": "user@example.com",
"subject": "Welcome to YourApp",
"body_text": "Your account is ready. Head to https://yourapp.com to get started."
}'import Mails from "@mailsai/sdk";
const mails = new Mails({ apiKey: process.env.MAILS_API_KEY });
// One-time setup: add your domain — warmup begins after DNS verification
await mails.domains.create({ domain: "notifications.yourapp.com" });
// Check warmup status programmatically
const domain = await mails.domains.get("notifications.yourapp.com");
// domain.status → "warming" | "active"
// domain.reputation → 0.0–1.0 (builds during ramp)
// domain.dns_verified → true
// Send during warmup — same call, no changes needed when warmup completes
await mails.messages.send({
from: "hello@notifications.yourapp.com",
to: "user@example.com",
subject: "Your report is ready",
body_text: "Your weekly report is attached. Reply here with any questions.",
});
// → 202 Accepted — SES routes through shared pool + your domain during warmup,
// then purely through your domain context once active.
// Listen for warmup-complete event — no polling required
mails.events.on("domain.warmup_complete", (event) => {
console.log(`${event.domain} is fully warm — reputation: ${event.reputation}`);
});Email warmup service vs. standalone warmup tools
The table below summarises the practical differences between a standalone email warmup service subscription and the built-in warmup on Mails.ai:
- Reputation signal: Standalone tools use seed inboxes — managed addresses that open and mark your mail as not-spam to manufacture engagement. Mails.ai uses real transactional sends; the reputation signal comes from your actual recipients, not a simulated network.
- Cost: Standalone warmup services typically cost $15–$50/mo per domain on top of your ESP. Mails.ai includes warmup in all tiers — Metered starts at $0/mo with no monthly minimum.
- Setup: Standalone tools require you to configure your sending identity inside their dashboard and run sends through their relay during the ramp. On Mails.ai, DNS verification is the only step — warmup starts automatically.
- Risk: Manufactured seed-network engagement can be detected by mailbox providers; some treat sudden warmup-service patterns as a signal of low-quality mail. Real-traffic warmup via SES carries no such pattern.
Monitoring warmup status in your dashboard and via API
Warmup progress is surfaced in two places. The /dashboard/domains view shows a live warmup indicator per domain with the current reputation score and estimated days remaining. The same data is available on the GET /v1/domains/:domain endpoint, and the domain.warmup_complete event fires when status transitions to active — useful for triggering a volume ramp-up in your application or alerting your deliverability dashboard.
You do not need to act on warmup status. All sends go out normally during the ramp — you are never asked to throttle volume or hold mail until warmup finishes.
Custom domain vs. shared address — warmup applies to both
If you send from a shared Mails.ai address (e.g. agent@workspace.mails.ai) rather than your own custom domain, no warmup period applies — the shared rail is already warm and sends from day one at full reputation. Custom domains need the 14-day ramp because mailbox providers have no prior history for your domain specifically.
Most teams start on the shared address — especially AI email agents that need an inbox immediately — and move to a custom domain once they want their brand in the from address. The transition is seamless: add the domain, verify DNS, and the warmup service takes over automatically.
Pricing — warmup included, no extra subscription
The Metered tier starts at $0/mo — $0.001 per outbound message, $0.002 per inbound. Email warmup is included at every tier: no warmup surcharge, no per-domain warmup fee, and no separate warmup tool subscription to manage. If you need fully isolated reputation on your own IP, the automated dedicated IP warm-up add-on ($50/mo) gives you a dedicated IP with the same automatic SES-managed ramp. For teams that want warmup without committing a custom domain first, the free email warmup page covers how the shared rail works for zero-cost starts.
Frequently asked questions
Do I need a separate email warmup service with Mails.ai?
No. Email warmup is a built-in part of the sending infrastructure, not an add-on. When your domain goes live, SES manages the reputation ramp alongside real sends — no seed network, no warmup CSV, and no warmup subscription to purchase or cancel. The process is automatic from the moment DNS verification completes.
How does the built-in warmup service differ from Warmbox, Lemwarm, or Warmup Inbox?
Standalone warmup services simulate engagement by sending your domain mail to their own seed inboxes and marking it as not-spam. Mails.ai builds reputation from real transactional sends — SES routes traffic through both your domain and the established shared pool during the ramp, so the track record reflects actual mail rather than manufactured signals. There is no seed network and no artificial engagement pattern that mailbox providers can detect.
How long does the email warmup take?
New custom sending domains typically warm up over roughly 14 days. The exact window depends on your sending volume during that period — higher consistent volume shortens the ramp. You can monitor status at /dashboard/domains or by calling GET /v1/domains/:domain. No action is required; sends go out normally throughout the ramp.
Does the warmup service work for dedicated IPs too?
Yes. If you add a dedicated IP ($50/mo, Scale tier or above), the same SES-managed warmup applies: the IP ramps automatically alongside the shared pool without a manual schedule. See the automated dedicated IP warm-up page for details on that flow.
Can I use this email warmup service for cold outreach?
No — cold outreach is prohibited by the acceptable-use policy and blocked at the API. The warmup service here is for transactional and agent-initiated email: notification sends, support threads, billing alerts, and AI-agent-to-human communication. That constraint is part of why the shared sending rail stays deliverable for everyone on it.
Explore the product
Built for agents.
Self-serve in minutes.
The API is live and self-serve. Drop ~6 lines into your agent and ship.
$ npm install @mailsai/sdk