A single subscriber endpoint receives every Resend webhook event for which it has been subscribed in the dashboard. The event kind is discriminated by the `type` field in the JSON envelope.
The receiving mail server accepted the message for delivery.
Content-Type: application/json
EmailDeliveryDelayed
The email could not be delivered due to a temporary issue. Resend will keep retrying.
Content-Type: application/json
EmailComplained
The email was delivered but the recipient marked it as spam.
Content-Type: application/json
EmailBounced
The receiving mail server permanently rejected the message.
Content-Type: application/json
EmailOpened
The recipient opened the email.
Content-Type: application/json
EmailClicked
The recipient clicked a tracked link in the email.
Content-Type: application/json
ContactCreated
A contact was created in an audience.
Content-Type: application/json
ContactDeleted
A contact was deleted from an audience.
Content-Type: application/json
ContactUpdated
A contact was updated.
Content-Type: application/json
DomainCreated
A sending domain was created.
Content-Type: application/json
DomainDeleted
A sending domain was deleted.
Content-Type: application/json
DomainUpdated
A sending domain was updated. This is also emitted as DNS records are verified and the domain status transitions.
Content-Type: application/json
About AsyncAPI
The AsyncAPI specification describes event-driven APIs the way OpenAPI describes request/response APIs. A channel is the named pipe — a webhook URL, a Kafka topic, a WebSocket route, an MQTT subject — that producers and consumers publish or subscribe to. Each channel carries one or more messages with structured payloads, and an operation declares whether a given party sends or receives on that channel.