Fired when a new consent record is added to a contact’s consent_records[] array. This can happen via the Consent API, a landing page opt-in, or a bulk import with consent data.

Payload

{
  "id": "evt_a1b2c3",
  "event": "consent.created",
  "timestamp": "2026-03-28T09:00:00Z",
  "data": {
    "contact_id": "c_a1b2c3d4",
    "consent_record_id": "cr_x1y2z3",
    "channel_type": "EMAIL",
    "message_type": "NEWSLETTER",
    "status": "GRANTED",
    "source": "landing_page",
    "enforced_doi": true,
    "doi_status": "DOI_ACCEPTED",
    "created_at": "2026-03-28T09:00:00Z"
  }
}
data.contact_id
string
The contact this consent record belongs to.
Unique ID of the newly created consent record.
data.channel_type
string
EMAIL, RCS, or SMS.
data.message_type
string
MESSAGE (action-based) or NEWSLETTER (subscription).
data.status
string
GRANTED, PENDING (DOI awaiting confirmation), or REVOKED.
data.source
string
How the consent was captured: api, landing_page, csv_import, or crm_sync.
data.enforced_doi
boolean
Whether Double Opt-In was required for this record.
data.doi_status
string | null
DOI_SEND (confirmation sent) or DOI_ACCEPTED (confirmed). null if DOI was not enforced.