Sequence Warmup
Sequence-level warmup controls the ramp curve a sequence follows when it first goes live. Distinct from per-account Smart Warmup (which warms a mailbox by exchanging emails with peer accounts), sequence warmup throttles real outbound to your prospect list — start at a low daily volume and step up over days/weeks so ESPs don't see a sudden cold blast and tank your reputation.
Sequence warmup endpoints require the Starter plan or higher. They configure ramp behavior on a single sequence; the warmup schedule is enforced by the sequence worker every time it picks the next batch to send.
When to use which
| Scenario | Endpoint family |
|---|---|
| Brand-new mailbox with no sending history | Smart Warmup — peer-to-peer warmup pool, AI-generated content. |
| Established mailbox, new prospect sequence at 200/day | This page — start at 10, ramp to 200 over ~2 weeks. |
| Both | Run them concurrently. The smart-warmup pool consumes warmup quota; the sequence worker respects sequence-level ramp on top. |
Get Warmup Dashboard
The complete view of where this sequence sits on its ramp curve plus reputation estimate, recent volume chart, and 30-day funnel rollups.
Endpoint
GET /v1/sequence-warmup/{sequence_id}/dashboard
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
sequence_id | integer | Yes | Target sequence. |
Example Request
curl -X GET \
-H "Authorization: Bearer cdb_your_api_key_here" \
"https://api.crondb.com/v1/sequence-warmup/41/dashboard"
Response
{
"warmup_enabled": true,
"warmup_started_at": "2026-04-22T08:00:00Z",
"warmup_paused_at": null,
"warmup_start_volume": 10,
"warmup_increment": 5,
"daily_send_limit": 80,
"current_effective_limit": 75,
"days_since_start": 13,
"days_until_full_volume": 1,
"warmup_phase": "ramping",
"warmup_preset": "moderate",
"warmup_progress_pct": 93,
"reputation_estimate": 96,
"estimated_inbox_rate": 91,
"delivered_count_30d": 1042,
"opened_count_30d": 488,
"daily_volume_chart": [
{ "date": "2026-05-05", "sent_count": 75, "bounce_count": 1, "complaint_count": 0, "effective_limit": 75 },
{ "date": "2026-05-04", "sent_count": 70, "bounce_count": 0, "complaint_count": 0, "effective_limit": 70 }
]
}
Response Fields
| Field | Description |
|---|---|
warmup_enabled | Whether the ramp is active on this sequence. |
warmup_phase | not_started, ramping, at_limit, or paused. |
current_effective_limit | The cap the worker uses today (min(daily_send_limit, start_volume + days × increment)). |
days_until_full_volume | At the current increment, how many more days until daily_send_limit is reached. |
reputation_estimate | 0–100 score derived from recent bounce + complaint rates (100 − bounce_rate × 5 − complaint_rate × 20). |
estimated_inbox_rate | Best-guess inbox placement rate based on the reputation estimate. null until the sequence has sent something. |
daily_volume_chart | One entry per day (last 30) — chart-ready time series. |
Apply a Preset
Three baked-in ramp curves, plus custom to free the parameters.
Endpoint
POST /v1/sequence-warmup/{sequence_id}/preset
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
preset | string | Yes | conservative, moderate, aggressive, or custom. |
Preset values
| Preset | start_volume | increment | daily_limit | Reaches limit in |
|---|---|---|---|---|
conservative | 5 | 2 / day | 30 | ~13 days |
moderate | 10 | 5 / day | 50 | ~8 days |
aggressive | 25 | 10 / day | 200 | ~18 days |
custom | — | — | — | Use /adjust. |
Example Request
curl -X POST \
-H "Authorization: Bearer cdb_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"preset": "moderate"}' \
"https://api.crondb.com/v1/sequence-warmup/41/preset"
Response
{
"message": "Warmup preset 'moderate' applied",
"warmup_start_volume": 10,
"warmup_increment": 5,
"daily_send_limit": 50,
"warmup_preset": "moderate"
}
Adjust Parameters
Override the start volume, increment, or daily cap independently. Sets the preset to custom automatically.
Endpoint
POST /v1/sequence-warmup/{sequence_id}/adjust
Body Parameters
| Parameter | Type | Range | Description |
|---|---|---|---|
start_volume | integer | 1–1000 | Day-1 ceiling. |
increment | integer | 1–100 | Sends added to the cap each day. |
daily_limit | integer | 1–10000 | The post-ramp steady-state cap. |
All three fields are optional; pass only what you want to change.
curl -X POST \
-H "Authorization: Bearer cdb_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"increment": 8}' \
"https://api.crondb.com/v1/sequence-warmup/41/adjust"
Pause / Resume / Reset
| Method | Path | Effect |
|---|---|---|
POST | /v1/sequence-warmup/{id}/pause | Sets warmup_enabled=false, stamps warmup_paused_at. The sequence keeps sending at the current effective limit, but the ramp stops climbing. |
POST | /v1/sequence-warmup/{id}/resume | Re-enables and shifts warmup_started_at forward by the pause duration so the curve picks up where it left off (vs. counting paused days). |
POST | /v1/sequence-warmup/{id}/reset | Wipes warmup_started_at and the warmup log table. Use after fixing reputation issues to start the ramp over from day 1. |
pause returns 400 if warmup is already inactive; resume returns 400 if warmup was never started (use the create/update sequence flow instead).
Domain Health Check
A quick yes/no on whether the sequence's from_email domain is properly configured for cold outreach.
Endpoint
GET /v1/sequence-warmup/{sequence_id}/health
Returns SPF, DKIM, and DMARC presence + records, plus a recommendation. The DKIM check probes a list of common selectors (default, google, selector1, mandrill, k1, mail, etc.) — a false result doesn't guarantee no DKIM, just that none of the well-known selectors are publishing.
Blacklist Check
Check the sender domain against a curated list of DNSBLs (Spamhaus, SpamCop, SORBS, Barracuda, Composite, Invaluement). Cached for 24 hours per domain to avoid hammering the providers.
Endpoint
GET /v1/sequence-warmup/{sequence_id}/blacklist
Response
{
"domain": "yourcompany.com",
"ip": null,
"cached": false,
"results": [
{ "list": "Spamhaus ZEN", "listed": false },
{ "list": "SpamCop", "listed": false },
{ "list": "SORBS", "listed": false }
],
"listed_count": 0,
"total_checked": 6,
"checked_at": "2026-05-05T08:14:02Z"
}
cached: true indicates the result was served from today's earlier check.
DNS Setup Guide
Returns a tailored guide for setting up SPF / DKIM / DMARC for the sequence's from_email domain — including the exact records to add at your registrar, given the detected provider (Google Workspace, Microsoft 365, Resend, generic SMTP).
GET /v1/sequence-warmup/{sequence_id}/dns-guide
Useful for showing prospects "fix these three DNS records before sending" inline in your dashboard, instead of pointing them at provider-specific docs.
Deliverability Snapshot
Combined report: domain health + blacklist + 30-day delivery stats + recent reputation trend. The "show me one number that says how my sequence is doing" endpoint.
GET /v1/sequence-warmup/{sequence_id}/deliverability
The response merges the contents of /health, /blacklist, and /dashboard into a single payload, plus surfaces actionable recommendations (e.g. "DMARC missing — add a p=none record to start collecting reports").
Notes
- Sequence warmup operates at the sequence level. If a sequence rotates across multiple mailboxes via Mailbox Pool, the effective daily cap is divided round-robin across the pool.
- Reputation estimates are heuristics, not measurements. The
reputation_scorereturned by Send Account Reputation History uses real send-side data — prefer it when you need a hard number. - Blacklist checks run a TXT lookup per list; transient DNS failures show up as
listed: false(not an error). Re-check tomorrow if a result looks suspicious. - The DNS-guide endpoint is read-only — it doesn't create records, only generates the snippets you need to add.
Next Steps
- Sequences — Configure the sequence whose warmup you're tuning.
- Smart Warmup (per-account) — Pool-based mailbox warmup, complementary to sequence ramp.
- Send Accounts → Reputation History — Hard reputation data per mailbox.