RavenRelayDocs
Dashboard ↗

Delivery

Delivery events

Track recipient outcomes and keep provider acceptance separate from actual delivery.

Understand the states

Understand the states
StateMeaning
queued / processingStored and waiting, or claimed by the worker.
sentSES accepted the message.
deliveredThe recipient mail server accepted the message.
delayedDelivery is delayed; this is not a final bounce.
soft_bouncedA transient bounce; no automatic suppression.
hard_bouncedPermanent bounce; the address is suppressed.
complainedSpam complaint; the address is suppressed.
rejected / failedProvider rejection or processing failure. Inspect the failure code.
suppressedBlocked before sending.
simulatedTest-mode processing; no external delivery.

Recipient outcomes are tracked individually. A hard bounce or complaint survives later or out-of-order delivery events. Delivery cannot confirm inbox placement or that the email was read.

Inspect the timeline

Open an email in the dashboard to inspect its chronological events and per-recipient outcomes. Duplicate SNS notifications are handled without duplicating the business event. Webhooks use a stable event ID, so receivers must also deduplicate and tolerate out-of-order events.

Configure SES notifications (operators)

  1. Create a standard SNS topic in the same region as SES and set SignatureVersion to 2.
  2. Restrict the topic policy to SES publication from your AWS account.
  3. Set the exact topic ARN as SES_SNS_TOPIC_ARN in the backend API.
  4. In the SES configuration set used by the worker, add an SNS destination for Send, Delivery, Bounce, Complaint, Reject and DeliveryDelay.
  5. Subscribe the public API's HTTPS /v1/events/ses endpoint. Keep raw message delivery disabled.
  6. Run the API and worker. Valid signed subscription confirmations for the configured topic are confirmed automatically.
RavenRelay documentation. Examples describe the current implementation.