Email Bounce Field Guide

Decode the bounce codes Bento surfaces, understand retry behavior, and keep your sending reputation healthy.

Last updated: October 30, 2025

Every bounce tells you why a mailbox provider refused a message. Learn how to read the codes, decide when to retry, and protect your sender reputation before throttling turns into a block.

Bounce taxonomy

  • Soft bounces (codes 20–29) – Temporary failures such as full inboxes, DNS hiccups, greylisting, or transient throttles. These usually clear after a short delay.
  • Hard bounces (code 10) – Permanent failures like nonexistent recipients or dead domains. Bento unsubscribes these contacts automatically and adds them to the global firewall.
  • Other bounces (codes 40–59) – Deliverability issues without a broken address, including spam filters, content blocks, connection problems, or auto-replies.

Real-world snapshot: Gmail once replied with 421 4.7.28 Gmail detected unusual rate of mail for a high-volume campaign. Pausing for a day let the retry queue finish at full speed the next morning.

Retry schedule

Soft bounces retry on an exponential cadence:

  • Attempt 1: immediately
  • Attempt 2: +15 minutes
  • Attempt 3: +30 minutes
  • Attempt 4: +1 hour
  • Subsequent attempts: every 2–4 hours up to ~72 hours (codes 120/121)

Mailbox providers can shorten or extend these windows, so expect slight variance, especially during seasonal peaks.

Common deferral scenarios

Temporary server issues (450/451)

  • Connection resets (code 29)
  • Servers under maintenance
  • DNS timeouts (code 21)
  • Typical resolution: within 24–48 hours

Greylisting

  • Providers intentionally reject the first attempt from unfamiliar senders
  • Usually clears on the very next retry
  • Rarely lasts beyond 24 hours

Rate limits and throttles

  1. Connection limits (codes 29/59) – Too many SMTP sessions opened at once.
  2. Volume caps – Hourly or daily ceilings (e.g., 1,000/hour). Bursts above these caps trigger forced cool-downs.
  3. Recipient/domain saturation – Multiple workflows hammering the same address or domain simultaneously.

Bento automatically batches sends to minimize these spikes, but if you stack newsletters, flows, and transactional traffic at once, expect mailbox providers to slow you down.

Another case file: A year-end blast hit Gmail’s rate limit, dropping output to 10 emails/hour. Splitting the list into paced batches restored normal delivery.

Best practices we follow

  • Hard bounces are immediately unsubscribed.
  • Soft bounces only unsubscribe if long-term signals say the address is truly dead.
  • Reputation-related bounces stay subscribed so you can remediate the domain.
  • Spam complaints (not spam blocks) trigger auto-unsubscribes.

Authentication is non-negotiable

Since February 2024, Gmail and Yahoo require SPF, DKIM, and DMARC for any sender breaching 5,000 messages/day—and you should configure them regardless of volume.

  • SPF lists which servers may send for your domain.
  • DKIM signs each message so providers can verify authenticity.
  • DMARC instructs receivers what to do when SPF or DKIM fails.

Fix that saved a launch: A sender’s DKIM record vanished, tanking opens to 3%. Restoring the keys pushed engagement back above 20%.

Keep delivery boring—in a good way

Monitor bounce reports, cleanse cold segments, authenticate domains, and pace large sends. Steady, predictable delivery always beats “send it all now.” If you need help interpreting a stubborn bounce code, swing by the Bento Discord and we’ll walk through logs with you.

Need the original Markdown? Open raw file