Email activity
Follow each delivery from queued to delivered, understand every status, and read engagement.
Every recipient of every email has a delivery: a record of where the message is and what happened to it. Use it to answer "did my email arrive?" for any user.
Delivery statuses
| Status | Meaning |
|---|---|
queued | Accepted by the API and waiting to be sent. |
sending | Being handed to the sending infrastructure. |
accepted | Accepted for delivery; on its way to the recipient's mail server. |
delivered | The recipient's mail server accepted the message. |
bounced | The address permanently rejected the message. Future sends to it are suppressed. |
complained | The recipient reported the message as spam. Future sends to it are suppressed. |
failed | The message could not be sent. |
suppressed | Not sent, because the address previously bounced, complained, or unsubscribed. |
When a delivery did not succeed, delivery_reason and status_message explain why in plain language, for example "Email could not be delivered to this address."
Engagement
When open tracking is on, deliveries record first_opened_at and open_count; tracked links record first_clicked_at and click_count. Treat engagement as a trend rather than an exact count: privacy features and security scanners can open emails and follow links automatically.
Read activity
Open Email → Email logs to search and filter deliveries by status, recipient, and date, and to see each delivery's full timeline.
Delivery and message IDs
A send returns one messageId and one delivery ID per recipient. Store the delivery IDs if you need to look up a specific recipient's status later; webhook events reference both.