
Retry policies for outbound mail: backoff and give-up times
How long should a sender keep retrying a deferred message? Exponential backoff with jitter, sensible give-up windows and what to tell users meanwhile.
4 min read
Blog · Email API
Transactional email engineering: sending APIs, SMTP relays, webhooks, retries, idempotency, templates and testing.

How long should a sender keep retrying a deferred message? Exponential backoff with jitter, sensible give-up windows and what to tell users meanwhile.
4 min read

Respect Retry-After, smooth bursts with a token bucket and keep retries idempotent. A practical guide to living within an email API's rate limits.
4 min read

Store email delivery events in an append-only table, derive message status from it, and keep the history you need to answer support questions.
5 min read

Validate signup addresses with syntax checks, domain and MX lookups and typo suggestions, but skip SMTP probing. A layered approach with code.
4 min read

Turn bounce and complaint events into suppressions, user-facing flags and alerts. A worked pipeline from webhook receipt to updated account state.
5 min read

SaaS platforms that send as their customers need domain verification, per-tenant DKIM and isolated reputation. The architecture and the onboarding flow.
5 min read

Sending email inside a web request couples your latency to someone else's SMTP server. A queue-based design with workers, retries and dead letters.
4 min read

Decisions that make an email-sending API pleasant for years: async acceptance, idempotency, explicit errors, stable fields and a clean event model.
4 min read

Trace a message from API call to SMTP response. What to log, which metrics to emit and how to correlate IDs so 'did it send?' takes seconds.
4 min read

A 5xx is not always permanent and a 4xx is not always harmless. Build bounce classification on reply codes and enhanced status codes, with exceptions.
4 min read

Gmail, Outlook and Yahoo each defer differently when you send too fast. Build per-destination queues and adaptive concurrency that respond to 4xx replies.
4 min read

The text/plain alternative helps accessibility, privacy-minded readers, smartwatches and some filters. How to generate a good one rather than a strip.
5 min read