Track Email
Every email you send gets an id, and comes back in the same shape wherever you see it: in API responses, in webhooks and in an email’s timeline. To be told when an email’s status changes instead of asking, use Email Events.
{ "id": "358120554712436736", "kind": "transactional", "sender": "hello@yourcompany.com", "recipient": "sam@example.com", "subject": "Your order has shipped", "content": { "html": null, "text": "Hi Sam, your order is on its way." }, "status": "delivered", "reason": null, "clientReference": "order-991", "clientTag": null, "openCount": 0, "createdAt": "2026-10-10T09:30:00Z", "scheduledAt": null, "sentAt": "2026-10-10T09:30:01Z", "deliveredAt": "2026-10-10T09:30:03Z", "openedAt": null, "updatedAt": "2026-10-10T09:31:00Z"}We don’t keep the HTML after sending, so content.html is always null. content.text is a plain text excerpt of the body. See GET /v2/email/{id} in the API reference for every field.
Status
Section titled “Status”| Status | Meaning |
|---|---|
queued | Accepted, or scheduled, and not yet sent |
sent | Handed to the recipient’s email server, with no result yet |
delivered | Accepted by the recipient’s email server |
failed | Not delivered. reason says why |
cancelled | A scheduled email you cancelled |
A soft bounce, such as a full inbox, leaves the email sent with a reason, as the recipient’s server may still accept it. A spam complaint leaves the email delivered with a reason.
Reason
Section titled “Reason”reason is null unless something went wrong:
| Category | Meaning |
|---|---|
hard_bounce | The address doesn’t exist or can’t receive email. The address is added to your suppression list |
soft_bounce | A temporary problem, such as a full inbox |
complaint | The recipient marked the email as spam |
suppressed | The recipient is on your suppression list |
rejected | The recipient’s server refused the email |
failed | The email could not be sent |
retryable is true when the problem wasn’t caused by the email or the recipient, so sending again later may work.
Looking up email
Section titled “Looking up email”GET /v2/email/{id}gets one email.GET /v2/emaillists your email, newest first. Filter bystatus,kind,recipient,clientReference,clientTagand time.GET /v2/email/{id}/eventslists the events for one email, oldest first, so you can see everything that happened to it. Events are kept for 7 days. After that the timeline is empty, but the email still has its status and times.