# email.bounced

A delivery failure report for mail the mailbox sent arrived: the receiving server refused it for a recipient. Fires for every send from the mailbox, once per failed recipient. Delayed-delivery warnings and out-of-office replies do not fire it.

Act on `recommendedAction`: `remove` means the address does not take mail. Refusals on the sending side (`auth_failure`, `blocklisted`, `spam_blocked`, `policy_blocked`) never say `remove`. The report also arrives as `message.received`, and it does not count as a reply for `email.thread_replied`.




**Payload for `email.bounced`:**

- **id** (required) `string`: No description
- **profiles**: `WebhookProfiles` - See schema definition
- **test** `boolean`: Always true when present: only a sample sent by POST /v1/webhooks/test with an event carries it. Real deliveries never do.
- **event** (required) `string`: No description - one of: email.bounced
- **account** (required) `object`: 
  - **accountId** `string`: No description
  - **profileId** `string`: No description
  - **platform** `string`: No description
  - **username** `string`: No description
  - **displayName** `string,null`: No description
- **email** (required) `object`: The mail that bounced. `messageId`, `trackingId` and `metadata` are set when it was sent with tracking; otherwise match on `threadId`, `internetMessageId` or `subject`.
  - **messageId** `string,null`: Provider id of the sent mail.
  - **threadId** `string`: No description
  - **internetMessageId** `string,null`: The RFC 5322 Message-ID of the mail that bounced.
  - **trackingId** `string,null`: No description
  - **metadata** `object,null`: No description
  - **subject** `string,null`: From the headers the report quotes.
  - **sentAt** `string,null` (date-time): From the headers the report quotes.
- **bounce** (required) `object`: 
  - **recipient** `string`: The address that refused the mail.
  - **type** `string`: `hard`: 5.x.x, the address does not take mail. `soft`: 4.x.x, a temporary refusal the sending server gave up on. `undetermined`: the report gave no status. - one of: hard, soft, undetermined
  - **category** `string`: No description - one of: user_unknown, mailbox_full, domain_not_found, policy_blocked, spam_blocked, blocklisted, message_too_large, content_rejected, auth_failure, rate_limited, other
  - **status** `string,null`: RFC 3463 enhanced status, such as 5.1.1.
  - **smtpCode** `integer,null`: The SMTP reply code, such as 550. Always a number.
  - **diagnostic** `string,null`: The receiving server's answer.
  - **recommendedAction** `string`: `remove` only for an address that does not take mail. Sender-side refusals (authentication, blocklists, spam filters) are `fix_configuration` or `review`, never `remove`. - one of: remove, retry, review, fix_configuration
  - **reportingMta** `string,null`: No description
  - **detection** `string`: `dsn`: a standard delivery report with the bounced Message-ID. `ndr`: a non-standard report read from its headers and text. - one of: dsn, ndr
  - **bounceMessageId** `string`: Provider id of the bounce report in the mailbox.
  - **bouncedAt** `string` (date-time): When the report arrived in the mailbox.
  - **detectedAt** `string` (date-time): When Zernio read it. Reports can arrive minutes to days after the send.
- **timestamp** (required) `string` (date-time): No description