Skip to content

Statuses and events

Every email has a status and a timeline of events. See both with GET /emails/{id}.

Status Meaning
queued Accepted, about to be sent.
scheduled Waiting for its scheduledAt time.
sending Being handed to the mail servers.
sent Accepted by Amazon SES for delivery.
delivered The recipient’s mail server accepted it.
delivery_delayed The recipient’s server is temporarily refusing it (for example a full mailbox). Delivery is retried.
bounced Permanently rejected: the address doesn’t exist or refuses mail.
complained The recipient marked it as spam.
suppressed Not sent: every recipient is on a suppression list.
failed Rejected before delivery. The error field says why.
canceled A scheduled email you canceled.

A status only ever moves forward. For example, a late delivered event never hides an earlier complaint. For emails with several recipients the status reflects the most serious outcome; the events show each recipient.

Event When
sent Handed to SES.
delivered Accepted by the recipient’s server (per recipient).
delivery_delayed A temporary problem, with delayType or the bounce details in data.
bounced A permanent bounce, with the bounce type and diagnostic code in data.
complained A spam report, with the feedback type in data.
suppressed A recipient was skipped because it is suppressed, with the reason in data.
rejected SES refused the email, with the reason in data.
Example timeline
"events": [
{ "type": "sent", "recipient": null, "data": { "messageId": "0109..." }, "occurredAt": "2026-10-28T05:00:00.120Z" },
{ "type": "delivered", "recipient": "[email protected]", "data": { "smtpResponse": "250 OK" }, "occurredAt": "2026-10-28T05:00:01.480Z" }
]

Open and click tracking are not enabled yet. Login codes and password resets should never carry tracking.

Getting events pushed to your own server is coming with webhooks.