Webhook events
email.bounced
The recipient's mail server rejected the email.
When it fires
email.bounced fires when Amazon SES reports that a recipient's mail server rejected the email. Opensend emits one event per bounced recipient; data.to holds only that recipient. A Permanent bounce also adds the address to the team's suppression list and emits suppression.added. Transient and Undetermined bounces do not suppress the address.
Payload
{
"type": "email.bounced",
"created_at": "2026-09-29T10:00:00.000Z",
"data": {
"created_at": "2026-09-29T09:59:59.000Z",
"email_id": "YOUR_EMAIL_ID",
"message_id": "SES_MESSAGE_ID",
"from": "hello@example.com",
"to": ["you@example.net"],
"subject": "Welcome",
"tags": {},
"bounce": {
"type": "Permanent",
"subType": "General",
"message": "smtp; 550 5.1.1 user unknown"
}
}
}bounce.type is Permanent, Transient, or Undetermined. bounce.subType is the SES bounce subtype, such as General, NoEmail, or MailboxFull. bounce.message holds the diagnostic codes in the SES bounce notification, joined with ; , and is empty when there were none. The other data fields are the common email fields described in email.sent.
Handle the event
Verify the signature and deduplicate by svix-id.