Skip to documentation

Webhook events

contact.created

A contact was created.

When it fires

contact.created fires when a contact is added in the dashboard or through the REST API. An API create for an existing address merges supplied fields and emits contact.updated if anything changed. Dashboard Add Manually skips existing addresses. Contacts added by a CSV import emit no contact events.

Payload

json
{
  "type": "contact.created",
  "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-29T09:59:59.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.