/email-for-startups providers ↗
guide

Email Event Streams

Every production email program needs a record of what happened after send. Providers expose that record through webhooks, exports, activity APIs, or stream-style feeds. The ingestion design has to handle duplicates, late arrivals, terminal states, and different retention windows.

last updated 2026-05-07 4 sections
section 01

Event types and state

Delivery events are not all equal. Delivered, bounced, complained, unsubscribed, opened, and clicked should not overwrite each other blindly. Terminal events such as hard bounce and complaint should win over later engagement noise.

eventstate effectterminal
deliveredMailbox provider accepted the message.No
deferredTemporary delivery delay.No
hard_bounceAddress should be suppressed.Yes
complaintRecipient marked mail as spam.Yes
unsubscribeRecipient opted out of marketing.Yes for that stream
open or clickEngagement signal if tracking is enabled.No
section 02

Push, pull, and export patterns

Webhooks provide low latency but require a public endpoint and retry handling. Pull APIs simplify firewall rules but add polling lag and retention risk. Exports work for audits and backfills, not live suppression.

patternfitmain risk
Webhook pushLive delivery state and suppression updates.Endpoint outage causes retry backlog.
Activity API pullSmall teams and periodic sync.Missed records when retention is short.
Bulk exportAudit, warehouse backfill, and reporting.Too slow for operational suppression.
section 03

Ordering and dedupe

Email events can arrive out of order. A click can arrive before delivered. A bounce can be retried several times. The consumer should dedupe by provider event ID when available, then apply state transitions with precedence rules.

  • ok Store raw events before applying message state.
  • ok Use a unique event key to make retries harmless.
  • ok Define terminal state precedence before launch.
  • ok Allow late events to enrich history without changing terminal state.
section 04

Downstream uses

Event streams feed suppression, support debugging, customer timelines, deliverability monitoring, and revenue reporting. Each use has different latency needs. Suppression should be near-real-time. Analytics can tolerate batch sync.

uselatency needminimum fields
SuppressionMinutes or less.recipient, event type, stream, timestamp
Support timelineNear-real-time.message ID, template, status, provider response
Deliverability alertingHourly or faster.bounce rate, complaint rate, domain, stream
Revenue reportingBatch is usually fine.campaign, recipient, click, conversion join key

related startup email pages