Skip to content
Browse the docs

Event catalogue

51 event types. Each is an envelope with id, type, occurred_at, account_id and data, snake_case on the wire, and each can be subscribed to on a webhook endpoint.

Under each type: when it fires, and the keys its data always carries. Other keys appear on some payloads and new ones can be added at any time, so ignore what you do not recognise. Signing, retries and replay are in the webhooks guide.

Email

email.queued
A send is accepted for delivery now, or a scheduled send reaches its time; a second one carrying the content scan’s warnings follows when the scan raised any.
dataemail_idtagsresource_typeresource_id

email.queued data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idstringnoThe same message. email_id is the name a webhook subscriber reads.
fromstringnoThe From address on the message.
toanynoThe To addresses on the message. One address, or a list.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether a bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesnumbernoThe size of the received message, in bytes.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1
}
email.sent
AgentiSend hands the message off for delivery, or a send to a simulator address is answered without leaving AgentiSend.
dataemail_idtagsresource_typeresource_id

email.sent data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idstringnoThe same message. email_id is the name a webhook subscriber reads.
fromstringnoThe From address on the message.
toanynoThe To addresses on the message. One address, or a list.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether a bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesnumbernoThe size of the received message, in bytes.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1
}
email.delivered
The receiving mail server accepts the message.
dataemail_idtagsresource_typeresource_id

email.delivered data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idstringnoThe same message. email_id is the name a webhook subscriber reads.
fromstringnoThe From address on the message.
toanynoThe To addresses on the message. One address, or a list.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether a bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesnumbernoThe size of the received message, in bytes.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1
}
email.delivery_delayed
A delivery attempt is deferred by the receiving server, a temporary sending error or a pause on all sending, and the message will be tried again.
dataemail_idtagsresource_typeresource_id

email.delivery_delayed data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idstringnoThe same message. email_id is the name a webhook subscriber reads.
fromstringnoThe From address on the message.
toanynoThe To addresses on the message. One address, or a list.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether a bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesnumbernoThe size of the received message, in bytes.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1
}
email.bounced
The receiving server rejects the message for a recipient, during delivery or in a bounce report mailed back afterwards.
dataemail_idtagsresource_typeresource_id

email.bounced data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idstringnoThe same message. email_id is the name a webhook subscriber reads.
fromstringnoThe From address on the message.
toanynoThe To addresses on the message. One address, or a list.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether the bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesnumbernoThe size of the received message, in bytes.
diagnostic_codeanynoThe reply from the receiving server, or null when it gave none.
bounce_typestringnoPermanent, Transient, or Undetermined, when bounce is not set yet.
bounce_sub_typestringnoThe finer bounce reason, when bounce is not set yet.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1,
  "diagnostic_code": "example",
  "bounce_type": "example",
  "bounce_sub_type": "example"
}
email.complained
A recipient marks the message as spam and their mailbox provider reports it back.
dataemail_idtagsresource_typeresource_id

email.complained data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idstringnoThe same message. email_id is the name a webhook subscriber reads.
fromstringnoThe From address on the message.
toanynoThe To addresses on the message. One address, or a list.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether a bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesnumbernoThe size of the received message, in bytes.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1
}
email.opened
The tracking image in the message loads, which needs open tracking on for the sending domain.
dataemail_idtagsresource_typeresource_iduser_agent

email.opened data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idstringnoThe same message. email_id is the name a webhook subscriber reads.
fromstringnoThe From address on the message.
toanynoThe To addresses on the message. One address, or a list.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether a bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesnumbernoThe size of the received message, in bytes.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1
}
email.clicked
A recipient follows a tracked link in the message, on its way to the original address.
dataemail_idtagsresource_typeresource_idurl

email.clicked data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idstringnoThe same message. email_id is the name a webhook subscriber reads.
fromstringnoThe From address on the message.
toanynoThe To addresses on the message. One address, or a list.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether a bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesnumbernoThe size of the received message, in bytes.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1
}
email.failed
The message will never be delivered: it hit a permanent error or ran out of retries, expired before it could go out, was a scheduled send to a blocked recipient, or lost its sending domain.
dataemail_idtagsresource_typeresource_id

email.failed data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idstringnoThe same message. email_id is the name a webhook subscriber reads.
fromstringnoThe From address on the message.
toanynoThe To addresses on the message. One address, or a list.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether a bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesnumbernoThe size of the received message, in bytes.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1
}
email.scheduled
A send is accepted with a future send time, or a scheduled or canceled send is given a new one.
dataemail_idtagsresource_typeresource_idscheduled_at

email.scheduled data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idstringnoThe same message. email_id is the name a webhook subscriber reads.
fromstringnoThe From address on the message.
toanynoThe To addresses on the message. One address, or a list.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether a bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesnumbernoThe size of the received message, in bytes.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1
}
email.canceled
A scheduled or queued send is canceled, on its own or in a bulk cancel.
dataemail_idtagsresource_typeresource_idprevious_status

email.canceled data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idstringnoThe same message. email_id is the name a webhook subscriber reads.
fromstringnoThe From address on the message.
toanynoThe To addresses on the message. One address, or a list.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether a bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesnumbernoThe size of the received message, in bytes.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1
}
email.suppressed
One recipient is dropped from a send because the address is suppressed, failed address verification or unsubscribed from the send’s topic, one event per dropped address.
dataemail_idtagsresource_typeresource_idemailorigin

email.suppressed data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idstringnoThe same message. email_id is the name a webhook subscriber reads.
fromstringnoThe From address on the message.
toanynoThe To addresses on the message. One address, or a list.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether a bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesnumbernoThe size of the received message, in bytes.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1
}

Domain

domain.created
A sending domain is added to the account.
dataresource_typeresource_idnameregion

domain.created data

FieldTypeRequiredNotes
domain_idstringnoThe domain this event is about.
namestringnoThe domain name.
regionstringnoThe region recorded on the domain.
statusstringnoThe domain status after the change.
reasonstringnoWhy the domain event was recorded.
recordsanynoThe DNS records observed, when the event includes them.
click_trackingbooleannoWhether click tracking is on after the change.
open_trackingbooleannoWhether open tracking is on after the change.
tracking_subdomainstringnoThe tracking host label after the change.
inbound_policystringnoWhether anyone may write to this domain, or only senders on the allow list.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "domain_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "region": "example",
  "status": "example",
  "reason": "example",
  "records": "example",
  "click_tracking": false,
  "open_tracking": false,
  "tracking_subdomain": "example",
  "inbound_policy": "example",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
domain.verified
A verification check finds every required record in place and the domain moves to verified.
dataresource_typeresource_idnameregionstatusreasonrecords

domain.verified data

FieldTypeRequiredNotes
domain_idstringnoThe domain this event is about.
namestringnoThe domain name.
regionstringnoThe region recorded on the domain.
statusstringnoThe domain status after the change.
reasonstringnoWhy the domain event was recorded.
recordsanynoThe DNS records observed, when the event includes them.
click_trackingbooleannoWhether click tracking is on after the change.
open_trackingbooleannoWhether open tracking is on after the change.
tracking_subdomainstringnoThe tracking host label after the change.
inbound_policystringnoWhether anyone may write to this domain, or only senders on the allow list.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "domain_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "region": "example",
  "status": "example",
  "reason": "example",
  "records": "example",
  "click_tracking": false,
  "open_tracking": false,
  "tracking_subdomain": "example",
  "inbound_policy": "example",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
domain.failed
A verification check moves the domain to failed because required records are missing or wrong.
dataresource_typeresource_idnameregionstatusreasonrecords

domain.failed data

FieldTypeRequiredNotes
domain_idstringnoThe domain this event is about.
namestringnoThe domain name.
regionstringnoThe region recorded on the domain.
statusstringnoThe domain status after the change.
reasonstringnoWhy the domain event was recorded.
recordsanynoThe DNS records observed, when the event includes them.
click_trackingbooleannoWhether click tracking is on after the change.
open_trackingbooleannoWhether open tracking is on after the change.
tracking_subdomainstringnoThe tracking host label after the change.
inbound_policystringnoWhether anyone may write to this domain, or only senders on the allow list.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "domain_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "region": "example",
  "status": "example",
  "reason": "example",
  "records": "example",
  "click_tracking": false,
  "open_tracking": false,
  "tracking_subdomain": "example",
  "inbound_policy": "example",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
domain.updated
A domain’s tracking settings change, or a verification check moves it to partially verified or partially failed.
dataresource_typeresource_idname

domain.updated data

FieldTypeRequiredNotes
domain_idstringnoThe domain this event is about.
namestringnoThe domain name.
regionstringnoThe region recorded on the domain.
statusstringnoThe domain status after the change.
reasonstringnoWhy the domain event was recorded.
recordsanynoThe DNS records observed, when the event includes them.
click_trackingbooleannoWhether click tracking is on after the change.
open_trackingbooleannoWhether open tracking is on after the change.
tracking_subdomainstringnoThe tracking host label after the change.
inbound_policystringnoWhether anyone may write to this domain, or only senders on the allow list.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "domain_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "region": "example",
  "status": "example",
  "reason": "example",
  "records": "example",
  "click_tracking": false,
  "open_tracking": false,
  "tracking_subdomain": "example",
  "inbound_policy": "example",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
domain.deleted
A domain is removed from the account, and any send still waiting on it fails with its own email.failed.
dataresource_typeresource_idnameregion

domain.deleted data

FieldTypeRequiredNotes
domain_idstringnoThe domain this event is about.
namestringnoThe domain name.
regionstringnoThe region recorded on the domain.
statusstringnoThe domain status after the change.
reasonstringnoWhy the domain event was recorded.
recordsanynoThe DNS records observed, when the event includes them.
click_trackingbooleannoWhether click tracking is on after the change.
open_trackingbooleannoWhether open tracking is on after the change.
tracking_subdomainstringnoThe tracking host label after the change.
inbound_policystringnoWhether anyone may write to this domain, or only senders on the allow list.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "domain_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "region": "example",
  "status": "example",
  "reason": "example",
  "records": "example",
  "click_tracking": false,
  "open_tracking": false,
  "tracking_subdomain": "example",
  "inbound_policy": "example",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
domain.blocklisted
The daily blocklist check finds a verified domain newly listed on a domain blocklist (Spamhaus DBL); it fires again only after a check has found the domain clean on that list.
dataresource_typeresource_idnamelistlist_namelisted_sincedelisting_url

domain.blocklisted data

FieldTypeRequiredNotes
namestringnoThe domain name.
liststringnoThe list key, e.g. spamhaus_dbl.
list_namestringnoThe list as people name it, e.g. Spamhaus DBL.
listed_sincestringnoWhen the daily check first found this listing, in UTC.
delisting_urlstringnoThe list’s own page for checking and removing a listing.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe domain this event is about.
{
  "name": "example",
  "list": "example",
  "list_name": "example",
  "listed_since": "example",
  "delisting_url": "example",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
inbound.refused_by_rule
Mail for this domain is not stored because a block rule matched the envelope sender or the From header, or because the domain accepts only senders on its allow list and neither address matched.
datanamereasonmatchedmail_fromheader_fromresource_typeresource_id

inbound.refused_by_rule data

FieldTypeRequiredNotes
namestringnoThe domain the message was addressed to.
reasonstringnoWhy the message was not stored.
matchedstringnoWhich address matched: envelope, from_header, both, or none.
mail_fromstringnoThe envelope sender, lower-cased, or empty when there was none.
header_fromstringnoThe address in the From header, lower-cased, or empty when there was none.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe domain this event is about.
{
  "name": "example",
  "reason": "example",
  "matched": "example",
  "mail_from": "example",
  "header_from": "example",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}

Suppression

suppression.added
An address or domain is added to the suppression list through the API, the console or an agent tool; addresses suppressed automatically after a bounce or complaint do not fire it.
dataresource_typeresource_idemaillevel

suppression.added data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe suppression row this event is about.
emailstringnoThe suppressed address, or the domain for a domain-level row.
levelstringnoaddress, domain or global.
originstringnoHow it was added: manual, bounce or complaint.
streamanynoThe stream it applies to, or absent for every stream.
batchbooleannoTrue when the row came from a batch call.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "stream": "example",
  "batch": false
}
suppression.removed
A suppression is lifted, one at a time or in a batch.
dataresource_typeresource_idemaillevel

suppression.removed data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe suppression row this event is about.
emailstringnoThe suppressed address, or the domain for a domain-level row.
levelstringnoaddress, domain or global.
originstringnoHow it was added: manual, bounce or complaint.
streamanynoThe stream it applies to, or absent for every stream.
batchbooleannoTrue when the row came from a batch call.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "stream": "example",
  "batch": false
}

Limit

limit.warning
A key’s budget, or the plan’s included emails, passes 80% for the current period, once per period.
dataresource_typeresource_idapi_key_idusedbudgetfractionperiod_started_at

limit.warning data

FieldTypeRequiredNotes
api_key_idanynoThe key whose budget moved, or null for the plan inclusion.
usednumbernoHow much of the budget is spent.
budgetnumbernoThe budget for the period.
fractionnumbernoThe fraction of the budget that raises a warning.
period_started_atstringnoWhen the current period started, in UTC.
periodstringnohourly, daily or monthly.
resets_atstringnoWhen the budget starts again, in UTC.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "api_key_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "used": 1,
  "budget": 1,
  "fraction": 1,
  "period_started_at": "2026-09-04T09:14:00.000Z",
  "period": "example",
  "resets_at": "2026-09-04T09:14:00.000Z",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
limit.exceeded
A key’s budget refuses a send, once per key per period, on the first refusal.
dataresource_typeresource_idapi_key_idusedbudgetperiodperiod_started_atresets_at

limit.exceeded data

FieldTypeRequiredNotes
api_key_idanynoThe key whose budget moved, or null for the plan inclusion.
usednumbernoHow much of the budget is spent.
budgetnumbernoThe budget for the period.
fractionnumbernoThe fraction of the budget that raises a warning.
period_started_atstringnoWhen the current period started, in UTC.
periodstringnohourly, daily or monthly.
resets_atstringnoWhen the budget starts again, in UTC.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "api_key_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "used": 1,
  "budget": 1,
  "fraction": 1,
  "period_started_at": "2026-09-04T09:14:00.000Z",
  "period": "example",
  "resets_at": "2026-09-04T09:14:00.000Z",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}

Agent

agent.approval_requested
A send is held for a person to approve, because loop detection stopped it or an agent asked for approval.
dataresource_typeresource_idaction_idapi_key_idreason

agent.approval_requested data

FieldTypeRequiredNotes
action_idstringnoThe held action a person decides.
message_idstringnoThe message the decision is about, when one was created.
email_idstringnoThe same message, under the name a webhook subscriber reads.
reasonanynoWhy the action was rejected, when a reason was given.
affected_key_idsarray<string>noKeys the kill switch paused.
api_key_idanynoThe key whose send was held.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "action_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "reason": "example",
  "affected_key_ids": [
    "customer@example.com"
  ],
  "api_key_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
agent.approved
A person approves a held send and it is accepted as a new email.
dataresource_typeresource_idaction_idmessage_idemail_id

agent.approved data

FieldTypeRequiredNotes
action_idstringnoThe held action a person decides.
message_idstringnoThe message the decision is about, when one was created.
email_idstringnoThe same message, under the name a webhook subscriber reads.
reasonanynoWhy the action was rejected, when a reason was given.
affected_key_idsarray<string>noKeys the kill switch paused.
api_key_idanynoThe key whose send was held.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "action_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "reason": "example",
  "affected_key_ids": [
    "customer@example.com"
  ],
  "api_key_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
agent.rejected
A person rejects a held send, with their reason when they gave one.
dataresource_typeresource_idaction_idreason

agent.rejected data

FieldTypeRequiredNotes
action_idstringnoThe held action a person decides.
message_idstringnoThe message the decision is about, when one was created.
email_idstringnoThe same message, under the name a webhook subscriber reads.
reasonanynoWhy the action was rejected, when a reason was given.
affected_key_idsarray<string>noKeys the kill switch paused.
api_key_idanynoThe key whose send was held.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "action_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "reason": "example",
  "affected_key_ids": [
    "customer@example.com"
  ],
  "api_key_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
agent.killed
The account-wide kill switch pauses every key at once; pausing a single key, pressing it again while engaged, or resuming does not fire it.
dataresource_typeresource_idreasonaffected_key_ids

agent.killed data

FieldTypeRequiredNotes
action_idstringnoThe held action a person decides.
message_idstringnoThe message the decision is about, when one was created.
email_idstringnoThe same message, under the name a webhook subscriber reads.
reasonanynoWhy the action was rejected, when a reason was given.
affected_key_idsarray<string>noKeys the kill switch paused.
api_key_idanynoThe key whose send was held.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "action_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "reason": "example",
  "affected_key_ids": [
    "customer@example.com"
  ],
  "api_key_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}

Audience and campaigns

contact.created
Declared; nothing emits it today.

contact.created data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}
contact.updated
A contact is created or changed, or unsubscribes from all broadcast mail; a new contact fires this, not contact.created.
dataresource_typeresource_id

contact.updated data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}
contact.deleted
A contact is deleted through the API.
dataresource_typeresource_id

contact.deleted data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}
segment.joined
A contact matches a segment’s rules on a contact write and enters it.
dataresource_typeresource_idsegment_idsegment_namecontact_idemail

segment.joined data

FieldTypeRequiredNotes
segment_idstringnoThe segment the contact entered or left.
segment_namestringnoThe segment name at the time of the change.
contact_idstringnoThe contact.
emailstringnoThe contact address.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "segment_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "segment_name": "example",
  "contact_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "email": "customer@example.com",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
segment.left
A contact stops matching a segment’s rules on a contact write and leaves it.
dataresource_typeresource_idsegment_idsegment_namecontact_idemail

segment.left data

FieldTypeRequiredNotes
segment_idstringnoThe segment the contact entered or left.
segment_namestringnoThe segment name at the time of the change.
contact_idstringnoThe contact.
emailstringnoThe contact address.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "segment_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "segment_name": "example",
  "contact_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "email": "customer@example.com",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
segment.created
A segment is created.
dataresource_typeresource_idnamerules

segment.created data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}
segment.updated
A segment’s name or rules change.
dataresource_typeresource_id

segment.updated data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}
segment.deleted
A segment is deleted.
dataresource_typeresource_id

segment.deleted data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}
broadcast.scheduled
A broadcast is created, edited or sent with a future time, and its status becomes scheduled.
dataresource_typeresource_idstatusscheduled_at

broadcast.scheduled data

FieldTypeRequiredNotes
scheduled_atstringnoWhen the broadcast will send, in UTC.
statusstringnoThe broadcast status after the change.
namestringnoThe broadcast name.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
{
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "status": "example",
  "name": "example",
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
broadcast.sent
A broadcast finishes sending and reached at least one contact.
dataresource_typeresource_idstatussentskipped

broadcast.sent data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}
broadcast.updated
A broadcast is created, edited, canceled back to a draft, held for review by AgentiSend, or ends failed because it reached no contact.
dataresource_typeresource_id

broadcast.updated data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}
automation.triggered
A named event is posted for a contact; fired is how many automations it started.
dataresource_typeresource_idevent_namefired

automation.triggered data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}
email.received
A message addressed to one of your domains arrives and is stored for you to read. data.inbound_verdict is the label.
dataemail_idresource_typeresource_idcreated_atfromtoccbccreceived_formessage_idsubjectsize_bytesattachmentsextracted_textextracted_htmlinbound_verdict

email.received data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idanynoThe arriving message's own Message-ID header, or null when it had none.
fromstringnoThe sender's bare address, from the message's From header.
toarray<string>noAddresses in the message's To header.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether a bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe received message.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesintegernoSize of the message as received, in bytes.
ccarray<string>noAddresses in the message's Cc header.
bccarray<string>noAlways empty: a received message carries no Bcc list.
received_forarray<string>noThe address on your domain this copy was delivered to (the SMTP envelope recipient).
attachmentsarray<object>noAttachment metadata. The bytes are read through the received-email API.
extracted_textanynoThe reply with quoted history, signatures and footers removed. Null when extraction produced nothing; read the message for the full text.
extracted_htmlanynoThe same cut, in HTML. Null when the message had no HTML or extraction produced nothing.
inbound_verdictobjectnoThe label stored with the message.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1,
  "cc": [
    "customer@example.com"
  ],
  "bcc": [
    "customer@example.com"
  ],
  "received_for": [
    "customer@example.com"
  ],
  "attachments": [],
  "extracted_text": "example",
  "extracted_html": "example",
  "inbound_verdict": {
    "verdict": "clear",
    "reasons": [
      "customer@example.com"
    ]
  }
}
email.received.held
A message labeled review arrived on a domain that holds suspect mail, and the arrival webhook waits until a person releases it.
dataemail_idresource_typeresource_idcreated_atfromtoccbccreceived_formessage_idsubjectsize_bytesattachmentsextracted_textextracted_htmlinbound_verdict

email.received.held data

FieldTypeRequiredNotes
email_idstringnoThe message this event is about.
message_idanynoThe arriving message's own Message-ID header, or null when it had none.
fromstringnoThe sender's bare address, from the message's From header.
toarray<string>noAddresses in the message's To header.
subjectstringnoThe subject on the message.
created_atstringnoWhen the message was accepted, in UTC.
recipientanynoThe recipient this event is about, when the event is about one address. Null when the report hid it.
tagsobjectnoTags stored on the message.
template_idanynoThe template the message was rendered from, when it used one.
template_versionanynoThe template version the message was rendered from, when it used one.
scheduled_atstringnoWhen a scheduled message will send, in UTC.
scananynoContent-scan findings recorded with the queued event, when the scan warned.
headersanynoHeaders stored on the message.
recipientsarray<string>noAddresses this event is about, when it names more than one.
responseanynoThe receiving server reply, when one was recorded.
reasonstringnoWhy the event happened, when the emitter recorded a reason.
emailstringnoThe address this event is about, when it names one.
levelstringnoaddress or domain, on a suppression.
originstringnoWhy the address was suppressed: bounce, complaint, or an account list.
codestringnoA machine token recorded with the event, when there is one.
addressesarray<string>noAddresses named by this event.
simulatedbooleannoTrue when every recipient was a simulator address.
topic_idanynoThe subscription topic, when the event is about one.
clickanynoThe link, time, address and client, on email.clicked.
review_sandboxbooleannoTrue when the event is from the review sandbox.
mail_systemstringnoThe receiving system that asked for a later try.
retry_atstringnoWhen a delayed delivery will be tried again, in UTC.
provider_message_idstringnoThe mail server id for this message, when one was assigned.
refused_recipientsarray<object>noRecipients the mail server refused at hand-off while it took the others, on email.sent. They were not sent and not charged.
urlstringnoThe link that was followed, on email.clicked.
ip_addressstringnoThe client address recorded with a click or open.
user_agentstringnoThe client recorded with a click or open.
bounceobjectnoWhy the message bounced.
permanentbooleannoWhether a bounce is permanent.
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe received message.
bounce_classstringnohard, soft or block: how the bounce was classed, on a bounce or a delay.
block_causeanynoOn a block: sender when the receiver refused the message or its content, infrastructure when it named our sending address or signing. Null on other bounces.
bounce_classificationstringnoThe receiving side’s own class for the bounce, as reported.
diagnosticanynoThe receiving server reply text, on a bounce.
peer_namestringnoThe receiving mail server that answered.
sitestringnoThe receiving site the message was queued for.
queuestringnoThe delivery queue the message was in.
egress_poolstringnoThe pool of sending addresses that carried the message.
egress_sourcestringnoThe sending address that carried the message.
smtp_responsestringnoThe receiving server reply, when the delivery report carried one.
attemptnumbernoHow many tries have been made, on email.delivery_delayed.
complaint_typestringnoWhat kind of complaint it was, when known.
complaint_feedback_typeanynoThe mailbox provider’s feedback type for the complaint, such as abuse.
feedback_typeanynoThe feedback type in the complaint report.
sourcestringnoWhere the complaint came from, such as feedback_loop.
reported_byanynoThe mailbox provider that sent the complaint report.
source_ipanynoThe sending address named in the complaint report.
received_atstringnoWhen the report reached us, in UTC.
viastringnoHow the event was recorded.
previous_statusstringnoThe message status before this change.
bulkbooleannoTrue when this message was canceled together with others.
size_bytesintegernoSize of the message as received, in bytes.
ccarray<string>noAddresses in the message's Cc header.
bccarray<string>noAlways empty: a received message carries no Bcc list.
received_forarray<string>noThe address on your domain this copy was delivered to (the SMTP envelope recipient).
attachmentsarray<object>noAttachment metadata. The bytes are read through the received-email API.
extracted_textanynoThe reply with quoted history, signatures and footers removed. Null when extraction produced nothing; read the message for the full text.
extracted_htmlanynoThe same cut, in HTML. Null when the message had no HTML or extraction produced nothing.
inbound_verdictobjectnoThe label stored with the message.
{
  "email_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "from": "billing@yourdomain.com",
  "to": [
    "customer@example.com"
  ],
  "subject": "Your receipt",
  "created_at": "2026-09-04T09:14:00.000Z",
  "recipient": "billing@yourdomain.com",
  "tags": {},
  "template_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "template_version": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "scan": "example",
  "headers": [],
  "recipients": [
    "customer@example.com"
  ],
  "response": "example",
  "reason": "example",
  "email": "customer@example.com",
  "level": "example",
  "origin": "example",
  "code": "example",
  "addresses": [
    "customer@example.com"
  ],
  "simulated": false,
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "click": "example",
  "review_sandbox": false,
  "mail_system": "example",
  "retry_at": "2026-09-04T09:14:00.000Z",
  "provider_message_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "refused_recipients": [],
  "url": "example",
  "ip_address": "example",
  "user_agent": "example",
  "bounce": {
    "type": "Permanent",
    "sub_type": "example",
    "diagnostic_code": "example"
  },
  "permanent": false,
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "bounce_class": "example",
  "block_cause": "sender",
  "bounce_classification": "example",
  "diagnostic": "example",
  "peer_name": "example",
  "site": "example",
  "queue": "example",
  "egress_pool": "example",
  "egress_source": "example",
  "smtp_response": "example",
  "attempt": 1,
  "complaint_type": "example",
  "complaint_feedback_type": "example",
  "feedback_type": "example",
  "source": "example",
  "reported_by": "example",
  "source_ip": "example",
  "received_at": "2026-09-04T09:14:00.000Z",
  "via": "example",
  "previous_status": "example",
  "bulk": false,
  "size_bytes": 1,
  "cc": [
    "customer@example.com"
  ],
  "bcc": [
    "customer@example.com"
  ],
  "received_for": [
    "customer@example.com"
  ],
  "attachments": [],
  "extracted_text": "example",
  "extracted_html": "example",
  "inbound_verdict": {
    "verdict": "clear",
    "reasons": [
      "customer@example.com"
    ]
  }
}
topic.created
A subscription topic is created.
dataresource_typeresource_idnamedefault_subscribed

topic.created data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}
topic.updated
A subscription topic’s name, description or default changes.
dataresource_typeresource_id

topic.updated data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}
topic.deleted
A subscription topic is deleted, with every answer recorded about it.
dataresource_typeresource_idname

topic.deleted data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}
contact.subscribed
A contact is opted in to a topic through the API.
dataresource_typeresource_idtopic_idsubscribedvia

contact.subscribed data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}
contact.unsubscribed
A contact is opted out of a topic, through the API or the unsubscribe link in a message sent under that topic.
dataresource_typeresource_idtopic_idsubscribedvia

contact.unsubscribed data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe resource this event is about.
namestringnoThe name of the topic, segment, or broadcast.
emailstringnoThe contact address, when the event names one.
default_subscribedbooleannoWhether a new contact starts subscribed to this topic.
statusstringnoThe status after the change.
topic_idanynoThe topic, when the event is about one.
subscribedbooleannoWhether the contact is subscribed after the change.
viastringnoHow the subscription changed.
streamanynoThe stream an unsubscribe applies to, or absent for every stream.
fieldsarray<string>noThe contact fields that changed.
consent_sourcestringnoWhere the person opted back in.
consent_atstringnoWhen the person opted back in, in UTC.
rulesanynoThe segment rules at the time of the change.
sentnumbernoMessages the broadcast sent.
skippednumbernoRecipients the broadcast skipped.
scheduled_atstringnoWhen the broadcast will send, in UTC.
canceled_fromstringnoThe broadcast status before it was canceled.
reasonstringnoWhy the change happened, when one was recorded.
codestringnoA machine token recorded with the change, when there is one.
event_namestringnoThe event that started the automation.
firedanynoWhat the automation started for this event.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "name": "example",
  "email": "customer@example.com",
  "default_subscribed": false,
  "status": "example",
  "topic_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "subscribed": false,
  "via": "example",
  "stream": "example",
  "fields": [
    "customer@example.com"
  ],
  "consent_source": "example",
  "consent_at": "2026-09-04T09:14:00.000Z",
  "rules": "example",
  "sent": 1,
  "skipped": 1,
  "scheduled_at": "2026-09-04T09:14:00.000Z",
  "canceled_from": "example",
  "reason": "example",
  "code": "example",
  "event_name": "example",
  "fired": "example"
}

Trust

trust.warning
The account’s bounce or complaint rate over 7 days crosses the warning line, or AgentiSend staff set the account to warning or decide its appeal while it is there.
dataresource_typeresource_id

trust.warning data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe account this event is about.
reasonstringnoWhy this event was recorded, when the emitter named one.
streamanynoThe stream the standing is measured on.
metricanynobounce or complaint: the rate that crossed a threshold.
valueanynoThe measured rate, as a fraction.
thresholdanynoThe threshold it crossed, as a fraction.
window_daysnumbernoHow many days the rates are measured over.
sentnumbernoMessages sent in that window.
previous_statestringnoThe standing before this change.
reason_lengthnumbernoLength of the appeal text, in characters.
sla_deadline_atstringnoWhen a person must answer the appeal, in UTC.
statestringnoThe standing after this change.
statusstringnoThe account status after a pause, resume or approval.
manualbooleannoTrue when AgentiSend staff set the standing by hand.
domainstringnoThe sending domain this standing change is about. Absent when it covers the whole account.
probationbooleannoTrue when a pause moved to a capped warning on its own.
decisionstringnoWhat a person decided on the appeal.
appeal_idstringnoThe appeal this decision answers.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "reason": "example",
  "stream": "example",
  "metric": "example",
  "value": 1,
  "threshold": 1,
  "window_days": 1,
  "sent": 1,
  "previous_state": "example",
  "reason_length": 1,
  "sla_deadline_at": "2026-09-04T09:14:00.000Z",
  "state": "example",
  "status": "example",
  "manual": false,
  "domain": "example",
  "probation": false,
  "decision": "example",
  "appeal_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
trust.throttled
AgentiSend staff set the account to throttled (10 sends a minute) or decide its appeal while it is there; the automatic ladder never moves an account here.
dataresource_typeresource_id

trust.throttled data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe account this event is about.
reasonstringnoWhy this event was recorded, when the emitter named one.
streamanynoThe stream the standing is measured on.
metricanynobounce or complaint: the rate that crossed a threshold.
valueanynoThe measured rate, as a fraction.
thresholdanynoThe threshold it crossed, as a fraction.
window_daysnumbernoHow many days the rates are measured over.
sentnumbernoMessages sent in that window.
previous_statestringnoThe standing before this change.
reason_lengthnumbernoLength of the appeal text, in characters.
sla_deadline_atstringnoWhen a person must answer the appeal, in UTC.
statestringnoThe standing after this change.
statusstringnoThe account status after a pause, resume or approval.
manualbooleannoTrue when AgentiSend staff set the standing by hand.
domainstringnoThe sending domain this standing change is about. Absent when it covers the whole account.
probationbooleannoTrue when a pause moved to a capped warning on its own.
decisionstringnoWhat a person decided on the appeal.
appeal_idstringnoThe appeal this decision answers.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "reason": "example",
  "stream": "example",
  "metric": "example",
  "value": 1,
  "threshold": 1,
  "window_days": 1,
  "sent": 1,
  "previous_state": "example",
  "reason_length": 1,
  "sla_deadline_at": "2026-09-04T09:14:00.000Z",
  "state": "example",
  "status": "example",
  "manual": false,
  "domain": "example",
  "probation": false,
  "decision": "example",
  "appeal_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
trust.paused
The account’s bounce or complaint rate over 7 days crosses the pause line, AgentiSend staff pause the account, or an appeal is decided and the account stays paused.
dataresource_typeresource_id

trust.paused data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe account this event is about.
reasonstringnoWhy this event was recorded, when the emitter named one.
streamanynoThe stream the standing is measured on.
metricanynobounce or complaint: the rate that crossed a threshold.
valueanynoThe measured rate, as a fraction.
thresholdanynoThe threshold it crossed, as a fraction.
window_daysnumbernoHow many days the rates are measured over.
sentnumbernoMessages sent in that window.
previous_statestringnoThe standing before this change.
reason_lengthnumbernoLength of the appeal text, in characters.
sla_deadline_atstringnoWhen a person must answer the appeal, in UTC.
statestringnoThe standing after this change.
statusstringnoThe account status after a pause, resume or approval.
manualbooleannoTrue when AgentiSend staff set the standing by hand.
domainstringnoThe sending domain this standing change is about. Absent when it covers the whole account.
probationbooleannoTrue when a pause moved to a capped warning on its own.
decisionstringnoWhat a person decided on the appeal.
appeal_idstringnoThe appeal this decision answers.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "reason": "example",
  "stream": "example",
  "metric": "example",
  "value": 1,
  "threshold": 1,
  "window_days": 1,
  "sent": 1,
  "previous_state": "example",
  "reason_length": 1,
  "sla_deadline_at": "2026-09-04T09:14:00.000Z",
  "state": "example",
  "status": "example",
  "manual": false,
  "domain": "example",
  "probation": false,
  "decision": "example",
  "appeal_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
trust.appealed
The account files an appeal against its standing; sla_deadline_at is the deadline for a person’s answer, 24 hours after filing.
dataresource_typeresource_idreason_lengthsla_deadline_at

trust.appealed data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe account this event is about.
reasonstringnoWhy this event was recorded, when the emitter named one.
streamanynoThe stream the standing is measured on.
metricanynobounce or complaint: the rate that crossed a threshold.
valueanynoThe measured rate, as a fraction.
thresholdanynoThe threshold it crossed, as a fraction.
window_daysnumbernoHow many days the rates are measured over.
sentnumbernoMessages sent in that window.
previous_statestringnoThe standing before this change.
reason_lengthnumbernoLength of the appeal text, in characters.
sla_deadline_atstringnoWhen a person must answer the appeal, in UTC.
statestringnoThe standing after this change.
statusstringnoThe account status after a pause, resume or approval.
manualbooleannoTrue when AgentiSend staff set the standing by hand.
domainstringnoThe sending domain this standing change is about. Absent when it covers the whole account.
probationbooleannoTrue when a pause moved to a capped warning on its own.
decisionstringnoWhat a person decided on the appeal.
appeal_idstringnoThe appeal this decision answers.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "reason": "example",
  "stream": "example",
  "metric": "example",
  "value": 1,
  "threshold": 1,
  "window_days": 1,
  "sent": 1,
  "previous_state": "example",
  "reason_length": 1,
  "sla_deadline_at": "2026-09-04T09:14:00.000Z",
  "state": "example",
  "status": "example",
  "manual": false,
  "domain": "example",
  "probation": false,
  "decision": "example",
  "appeal_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}
trust.restored
The account moves to a less restricted standing, because its rates recovered or AgentiSend staff restored, resumed or approved it.
dataresource_typeresource_id

trust.restored data

FieldTypeRequiredNotes
resource_typestringnoWhat resource_id points at.
resource_idstringnoThe account this event is about.
reasonstringnoWhy this event was recorded, when the emitter named one.
streamanynoThe stream the standing is measured on.
metricanynobounce or complaint: the rate that crossed a threshold.
valueanynoThe measured rate, as a fraction.
thresholdanynoThe threshold it crossed, as a fraction.
window_daysnumbernoHow many days the rates are measured over.
sentnumbernoMessages sent in that window.
previous_statestringnoThe standing before this change.
reason_lengthnumbernoLength of the appeal text, in characters.
sla_deadline_atstringnoWhen a person must answer the appeal, in UTC.
statestringnoThe standing after this change.
statusstringnoThe account status after a pause, resume or approval.
manualbooleannoTrue when AgentiSend staff set the standing by hand.
domainstringnoThe sending domain this standing change is about. Absent when it covers the whole account.
probationbooleannoTrue when a pause moved to a capped warning on its own.
decisionstringnoWhat a person decided on the appeal.
appeal_idstringnoThe appeal this decision answers.
{
  "resource_type": "example",
  "resource_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42",
  "reason": "example",
  "stream": "example",
  "metric": "example",
  "value": 1,
  "threshold": 1,
  "window_days": 1,
  "sent": 1,
  "previous_state": "example",
  "reason_length": 1,
  "sla_deadline_at": "2026-09-04T09:14:00.000Z",
  "state": "example",
  "status": "example",
  "manual": false,
  "domain": "example",
  "probation": false,
  "decision": "example",
  "appeal_id": "9c8f8f0e-3d1a-4d3f-9a1e-2b7c1a0f5e42"
}