Skip to documentation

Webhook events

contact.updated

A contact's fields, segments, or topic choices changed.

When it fires

contact.updated fires when a contact's name, unsubscribed state, or property values change, when the contact joins or leaves a segment, and when its topic choices change. One operation emits one event, even when it changes several topics. An update that changes nothing emits nothing. Changes made by a CSV import emit no contact events.

Payload

json
{
  "type": "contact.updated",
  "created_at": "2026-09-29T10:00:00.000Z",
  "data": {
    "id": "YOUR_CONTACT_ID",
    "segment_ids": ["YOUR_SEGMENT_ID"],
    "created_at": "2026-09-29T09:59:59.000Z",
    "updated_at": "2026-09-29T10:00:00.000Z",
    "email": "ada@example.net",
    "first_name": "Ada",
    "last_name": null,
    "unsubscribed": false
  }
}
FieldDescription
idThe contact's ID.
segment_idsAt most 100 segment IDs; this is not a complete membership list for contacts in more segments.
created_at, updated_atWhen the contact was created and last changed.
emailThe contact's normalized email address.
first_name, last_nameThe name, or null when empty.
unsubscribedWhether the contact is unsubscribed from all broadcasts.

For all current memberships, page through list contact segments. Custom property values and topic choices are not part of the payload. Fetch them with retrieve contact and list contact topics.

Handle the event

Verify the signature and deduplicate by svix-id.