---
title: "How we automated dedicated-IP warm-up without overloading reputation"
canonical: https://pulsepigeon.com/blog/per-ip-warmup-automation-engineering
last_updated: 2026-10-20
---

# How we automated dedicated-IP warm-up without overloading reputation

An engineering writeup of PulsePigeon's dedicated-IP warm-up automation: per-IP stage state, reputation gates, bounded evaluation, and fail-closed rollout controls.

Status: dedicated IPs are an operator-gated beta for eligible Scale and Enterprise tenants, available by request, not generally available and not self-serve. This post describes the warm-up automation built for them.

A new dedicated IP must earn reputation independently. PulsePigeon therefore stores warm-up state by tenant and IP address instead of assuming that a tenant's existing shared-pool history transfers to a new address.

The five stages are starter, ramp_250, ramp_500, ramp_1000, and mature. Each stage has a daily recipient cap and a minimum delivered-message count. Advancement also evaluates bounce, complaint, and deferred events from the current stage window.

Automatic advancement is disabled by default. An operator must enroll the dedicated IP and allowlist the exact `tenant_id:dedicated_ip` pair in `PULSEPIGEON_DEDICATED_IP_WARMUP_AUTOMATION_PAIRS`. The worker evaluates bounded batches under a database advisory lock and never changes IP assignments, routing policy, provider configuration, or hard spend caps. See the [developer API reference](/docs/developer) for application requests and the [transactional email guide](/transactional-email) for the sending context.

With the default configuration, every non-mature stage has a seven-day minimum dwell. A target advances only one stage per eligible evaluation, and automation enrollment time prevents old idle state from satisfying the dwell floor retroactively.

The rollback is deliberately small: disable the automation worker and restart the API. Existing stage state and sending caps remain intact, and operators can continue using the manual status and advancement path.
