Skip to content
AI Inbx
Esc
↑↓navigate↵open⌘Jpreview

email.unsubscribed

A recipient opted out by link, one-click header, or reply.

POSTemail.unsubscribedWebhook
Header parameters
AIInbx-Signaturestringrequired

t=<unix seconds>,v1=<hmac>: an HMAC-SHA256 of the timestamp and the raw body, with one v1 per secret while a rotation's grace period runs.

AIInbx-Event-IDstringrequired

The event id, id in the body.

Request body
requiredapplication/json
idstringrequired

The event, evt_…. Stable across retries and replays: deduplicate on it.

matches ^[a-z]+_[0-9a-f]{32}$
typestringrequired
created_atstring<date-time>required

When the event happened.

matches ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
space_idstring | nullrequired

Which space a resource is in. Null is the workspace itself — what every resource of a workspace that has no spaces says.

Show properties
Any of:
string
string
null
null
dataobjectrequired
Show properties
email_idstringrequired

The message they opted out from, eml_….

matches ^[a-z]+_[0-9a-f]{32}$
message_idstring | nullrequired

The RFC Message-ID, without angle brackets. Null once the message is gone.

Show properties
Any of:
string
string
null
null
domain_idstring | nullrequired

The domain the message went through: received on or sent from. Null when it went through a mailbox.

Show properties
Any of:
string
string
null
null
mailbox_idstring | nullrequired

The mailbox the message went through: synced from or sent with. Null when it went through a domain.

Show properties
Any of:
string
string
null
null
addressstring<email>required

Who opted out.

matches ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
keystringrequired

The suppression list. * is the whole workspace's, or the whole space's when the send was from one.

scopestringrequired

Whether they blocked everything (all) or only optional mail (optional).

Allowed:alloptional
sourcestringrequired

How: the unsubscribe link, the mail client's one-click header, or a reply that read as an opt-out.

Allowed:linkone_clickreply
Responses
2XX

Acknowledges the delivery. Anything else, or no answer within 10 seconds, is retried; a Retry-After header is honoured over the standard backoff.

Payload
{
  "id": "string",
  "type": "email.unsubscribed",
  "created_at": "2019-08-24T14:15:22Z",
  "space_id": "string",
  "data": {
    "email_id": "string",
    "message_id": "string",
    "domain_id": "string",
    "mailbox_id": "string",
    "address": "user@example.com",
    "key": "string",
    "scope": "all",
    "source": "link"
  }
}
Response
Acknowledges the delivery. Anything else, or no answer within 10 seconds, is retried; a `Retry-After` header is honoured over the standard backoff.