Pause on a change in signal, not on a calendar date

A warmup plan should contain a pause condition before it contains the next increase. The clearest reason to stop is a material change in something that was previously stable: authentication starts failing, hard bounces appear in a verified segment, temporary deferrals cluster at a receiver, complaints appear, or the queue produces more traffic than planned. A fixed calendar cannot distinguish those conditions from a healthy day. If the schedule says 31 messages tomorrow but today's 26-message batch produced four permanent failures and a DKIM mismatch, tomorrow's correct volume is not 31. It is zero new campaign traffic until the cause is understood.

Use raw counts when batches are small

Percentages are useful for reporting but can hide the urgency of a small-sender problem. Four hard bounces in a twenty-message batch are only four events, yet they expose four known bad recipients and potentially a bad list source. Record the exact addresses, enhanced status codes, recipient domains and verification history. If all four failures came from one imported file, the first action is list hygiene. If failures are policy-related and concentrated at one receiver, the diagnosis is different. A pause gives you enough space to preserve this evidence before another batch adds noise.

Authentication errors justify an immediate stop

Do not keep sending through a known authentication failure just to see whether delivery improves. If SPF, DKIM or DMARC behavior changed after DNS work, capture a fresh message, inspect Authentication-Results, and query the authoritative records referenced by the actual message. Google documents authentication-related temporary and permanent failures for senders, including DKIM-specific rejection classes. Lowering volume cannot repair a missing key, wrong selector or misaligned domain. A small controlled test after the repair is useful; continuing normal warmup while the identity layer is broken is not.

Separate transient deferrals from permanent failures

A 4.x.x enhanced status code signals a different operational problem from a 5.x.x permanent failure. Temporary deferrals may justify holding the next increase and retrying later according to provider behavior; a permanent invalid-address failure should enter suppression state and should not be retried from another mailbox. Do not collapse both into a single bounce percentage. During a pause, group failures by class and recipient domain. This often reveals whether the warmup itself is too aggressive, the list is stale, or a receiver-specific condition is affecting only part of the traffic.

Do not change three things during the pause

A pause is a diagnostic window, not an invitation to rewrite copy, rotate domains and switch providers at the same time. Preserve the last known-good configuration. If list quality is the suspected cause, fix and re-verify the affected segment while leaving authentication and send behavior unchanged. If DNS is the suspected cause, repair it and test with a tiny known recipient set. The more variables that remain fixed, the more useful the next result becomes. Otherwise, even a successful recovery leaves the operator unable to say which change solved the problem.

Resume from below the failed step

After the cause is corrected, do not automatically continue with the next number on the original ramp. Use the last known-good level or a smaller diagnostic batch. For example, if 18 messages behaved normally, 26 produced an unexplained spike, and the list was later cleaned, retest around the 18-message range before trying 26 again. The purpose is to prove the correction under comparable conditions. One clean message is not enough; a clean batch that repeats the earlier working behavior is much better evidence.

Document the incident so the rule gets better

Warmup becomes more useful over time when every pause improves the operating rule. Record what triggered the stop, what evidence identified the cause, what was changed, and what result justified resuming. A small agency may discover that its most common stop condition is stale list data; another may find queue retries are responsible for accidental bursts. These are local operational facts, not universal sender limits. Keeping them in the ramp sheet prevents the same incident from being rediscovered during every new domain launch.

Treat 4xx and 5xx outcomes differently during a pause

A pause is more useful when the operator preserves the distinction between temporary and permanent receiver responses. RFC 5321 describes 4yz replies as transient negative completions: a retry may succeed without changing the command or the sender. A 5yz reply is permanent and should not be retried as though time alone will fix it. During warmup, this means a 4.7.28 unusual-rate response can justify holding volume and waiting for the sender state to stabilize, while a 5.1.x invalid-recipient failure should immediately suppress that address and trigger a hygiene review. Combining both under a generic “bounce rate” hides the corrective action. Keep the enhanced status code and raw provider text whenever possible, then decide whether the problem is recipient-specific, authentication-specific, or traffic-pattern related before the next batch leaves the queue.

Resume with a falsifiable test, not optimism

Before resuming, write down what should be different if the suspected cause is fixed. If the incident was caused by a malformed DKIM configuration, a fresh message should now show a passing DKIM result and no authentication rejection. If it was a stale list segment, the next tranche should contain only recently verified recipients and no previously bounced address. If it was a scheduler burst, actual send timestamps should now match the intended pacing. Resume with a batch small enough to inspect manually. That batch is a test of the hypothesis, not a ceremonial restart. If the same failure appears, stop again and revise the diagnosis; do not increase volume to “push through.” A warmup process becomes reliable when every resume step can prove or disprove the explanation for the previous pause.

Field checklist

  • Pause immediately on unexplained authentication failure or unplanned volume spikes.
  • Classify 4.x.x and 5.x.x outcomes separately before taking action.
  • Inspect raw failure counts when the total batch is small.
  • Change only the suspected layer during the diagnostic pause.
  • Retest at or below the last known-good volume before increasing again.
  • Write the trigger, cause, fix, and resume evidence into the operating log.

Primary sources

Standards and provider policies can change. These links are the reference points used for this field note.

  1. Email sender guidelinesGoogle Gmail HelpAuthentication, TLS, DNS, spam-rate and bulk-sender requirements.
  2. RFC 3463 — Enhanced Mail System Status CodesIETF / RFC Editor2.x.x, 4.x.x and 5.x.x delivery status code classes.
  3. RFC 5321 — Simple Mail Transfer ProtocolIETF / RFC EditorSMTP reply classes, retry semantics, envelopes and mail transport behavior.
  4. Gmail SMTP errors and codesGoogle Gmail HelpTemporary and permanent Gmail SMTP errors, including authentication and unusual-rate failures.