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
}
}| Field | Description |
|---|---|
id | The contact's ID. |
segment_ids | At most 100 segment IDs; this is not a complete membership list for contacts in more segments. |
created_at, updated_at | When the contact was created and last changed. |
email | The contact's normalized email address. |
first_name, last_name | The name, or null when empty. |
unsubscribed | Whether 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.