Docs navigationBrowse documentation216
OverviewStart here

OpenSend docs

Event Types

OpenSend accepts the following webhook subscription event types.

Raw markdown
EventEmitted byNotes
email.sentSES/SNS send lifecycle ingestionProvider accepted or sent notification.
email.deliveredSES/SNS delivery lifecycle ingestionFinal delivery confirmation from the provider.
email.bouncedSES/SNS bounce lifecycle ingestionCan also refresh suppressions for bounced recipients.
email.complainedSES/SNS complaint lifecycle ingestionCan also refresh suppressions for complained recipients.
email.delivery_delayedSES/SNS delivery-delay lifecycle ingestionIndicates provider-side delay after provider acceptance, not final failure.
email.scheduledSend API scheduled delivery acceptanceEmitted after a future scheduled_at send is persisted.
email.delayedQueue worker provider retry stateEmitted when provider handoff failed but retry attempts remain.
email.suppressedSend API suppression policy checkEmitted when suppressed recipients block a send before email-row creation.
email.openedOpen tracking pixel routeRequires tracking token and image load.
email.clickedClick tracking redirect routeRequires rewritten tracked links.
email.failedSES reject/rendering failure or provider retry exhaustionUse for operator alerts and support triage.
contact.createdContact create APIEmitted after contact persistence succeeds.
contact.updatedContact update APIEmitted only when at least one field changes.
contact.deletedContact delete APIEmitted after contact deletion succeeds.
domain.createdDomain create APIEmitted after domain persistence succeeds.
domain.updatedDomain update, verify, or reconcile pathsIncludes verification-state changes when available.
domain.deletedDomain delete APIEmitted after domain deletion succeeds.

Inbound receiving

email.received is emitted after the OpenSend ingester commits an inbound email row for a receiving-enabled domain. Its webhook payload is metadata-only; retrieve content and attachments through the received-email APIs.

Payload shape

All deliveries use the same outer envelope:

json
{
  "id": "whd_delivery-id_1",
  "type": "contact.created",
  "created_at": "2026-05-10T00:00:00.000Z",
  "data": {}
}

The data shape depends on the event source. Email lifecycle events usually carry provider or tracking payloads. Contact and domain events carry OpenSend-owned DTOs described in their event pages.