Subscriber events
Contacts added to, changed in, added back to or removed from an audience.
subscriber.created
Sent when a contact is added to an audience with Add a subscriber, or when you create or update a contact with audiences. Adding a contact that had unsubscribed from the audience sends subscriber.updated and subscriber.resubscribed instead.
Webhook requests carry a JSON array of events like this one; see Webhook requests.
Fields
event_idstringEvent ID (evt_…). A retried request carries the same ID, so use it to skip events you already handled. You can also look the event up with Retrieve an event.
typestringAlways subscriber.created.
objectobjectThe subscriber the event describes. Its fields are listed below.
data.objectobjectThe same object again, in the shape that the Events API returns in data.
Subscriber object
idstringSubscriber ID (sub_…). A subscriber is one contact’s membership in one audience.
objectstringAlways subscriber.
subscribedbooleanWhether the contact is subscribed to the audience.
subscribed_atstring | nullWhen the contact subscribed, or null.
unsubscribed_atstring | nullWhen the contact unsubscribed, or null.
audienceobjectid and name of the audience.
contactobjectThe contact: id, email, first_name, last_name and custom_fields.
created_atstringWhen the contact was added to the audience, in ISO 8601 with a UTC offset.
{
"event_id": "evt_2xLc9Rr4Tn6Wb1Qm8Ks3Vf0Hd7a",
"type": "subscriber.created",
"object": {
"id": "sub_2xLj6Fa1Vu8Br3Xg5Cq0Nh7Ow2j",
"object": "subscriber",
"subscribed": true,
"subscribed_at": "2026-09-20T14:22:09.418302+00:00",
"unsubscribed_at": null,
"audience": {
"id": "aud_2xLi5Ez0Ut7Aq2Wf4Bp9Mg6Nv1i",
"name": "Newsletter"
},
"contact": {
"id": "con_2xLf5Jk1Xs7Nc2Ur8Zo3Ld6Pt0a",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"custom_fields": {
"company": "Analytical Engines"
}
},
"created_at": "2026-09-20T14:22:09.418302+00:00"
},
"data": {
"object": {
"id": "sub_2xLj6Fa1Vu8Br3Xg5Cq0Nh7Ow2j",
"object": "subscriber",
"subscribed": true,
"subscribed_at": "2026-09-20T14:22:09.418302+00:00",
"unsubscribed_at": null,
"audience": {
"id": "aud_2xLi5Ez0Ut7Aq2Wf4Bp9Mg6Nv1i",
"name": "Newsletter"
},
"contact": {
"id": "con_2xLf5Jk1Xs7Nc2Ur8Zo3Ld6Pt0a",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"custom_fields": {
"company": "Analytical Engines"
}
},
"created_at": "2026-09-20T14:22:09.418302+00:00"
}
}
}subscriber.updated
Sent when a subscriber changes: you update it with Update a subscriber, the contact unsubscribes or resubscribes, or a contact that had unsubscribed is added to the audience again. When the change comes from an unsubscribe or resubscribe, previous holds the old values.
Webhook requests carry a JSON array of events like this one; see Webhook requests.
Fields
event_idstringEvent ID (evt_…). A retried request carries the same ID, so use it to skip events you already handled. You can also look the event up with Retrieve an event.
typestringAlways subscriber.updated.
objectobjectThe subscriber the event describes. Its fields are listed below.
data.objectobjectThe same object again, in the shape that the Events API returns in data.
Subscriber object
idstringSubscriber ID (sub_…). A subscriber is one contact’s membership in one audience.
objectstringAlways subscriber.
subscribedbooleanWhether the contact is subscribed to the audience.
subscribed_atstring | nullWhen the contact subscribed, or null.
unsubscribed_atstring | nullWhen the contact unsubscribed, or null.
audienceobjectid and name of the audience.
contactobjectThe contact: id, email, first_name, last_name and custom_fields.
updated_atstringWhen the subscriber was last updated, in ISO 8601 with a UTC offset.
created_atstringWhen the contact was added to the audience.
previousobjectOld values, included when the contact unsubscribed or resubscribed: subscribed and unsubscribed_at. Omitted for other changes.
{
"event_id": "evt_2xLc9Rr4Tn6Wb1Qm8Ks3Vf0Hd7a",
"type": "subscriber.updated",
"object": {
"id": "sub_2xLj6Fa1Vu8Br3Xg5Cq0Nh7Ow2j",
"object": "subscriber",
"subscribed": false,
"subscribed_at": "2026-09-20T14:22:09.418302+00:00",
"unsubscribed_at": "2026-10-01T10:02:14.000000+00:00",
"audience": {
"id": "aud_2xLi5Ez0Ut7Aq2Wf4Bp9Mg6Nv1i",
"name": "Newsletter"
},
"contact": {
"id": "con_2xLf5Jk1Xs7Nc2Ur8Zo3Ld6Pt0a",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"custom_fields": {
"company": "Analytical Engines"
}
},
"updated_at": "2026-10-01T10:02:14.307000+00:00",
"created_at": "2026-09-20T14:22:09.418302+00:00",
"previous": {
"subscribed": true,
"unsubscribed_at": null
}
},
"data": {
"object": {
"id": "sub_2xLj6Fa1Vu8Br3Xg5Cq0Nh7Ow2j",
"object": "subscriber",
"subscribed": false,
"subscribed_at": "2026-09-20T14:22:09.418302+00:00",
"unsubscribed_at": "2026-10-01T10:02:14.000000+00:00",
"audience": {
"id": "aud_2xLi5Ez0Ut7Aq2Wf4Bp9Mg6Nv1i",
"name": "Newsletter"
},
"contact": {
"id": "con_2xLf5Jk1Xs7Nc2Ur8Zo3Ld6Pt0a",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"custom_fields": {
"company": "Analytical Engines"
}
},
"updated_at": "2026-10-01T10:02:14.307000+00:00",
"created_at": "2026-09-20T14:22:09.418302+00:00",
"previous": {
"subscribed": true,
"unsubscribed_at": null
}
}
}
}subscriber.resubscribed
Sent when you add a contact to an audience they had unsubscribed from, with Add a subscriber. Emailit also sends subscriber.updated with the same subscriber.
subscriber.resubscribed isn’t in the dashboard’s event list. You receive it on webhooks that have all_events turned on, or by adding it to events with Update a webhook.
Webhook requests carry a JSON array of events like this one; see Webhook requests.
Fields
event_idstringEvent ID (evt_…). A retried request carries the same ID, so use it to skip events you already handled. You can also look the event up with Retrieve an event.
typestringAlways subscriber.resubscribed.
objectobjectThe subscriber the event describes. Its fields are listed below.
data.objectobjectThe same object again, in the shape that the Events API returns in data.
Subscriber object
idstringSubscriber ID (sub_…). A subscriber is one contact’s membership in one audience.
objectstringAlways subscriber.
subscribedbooleanWhether the contact is subscribed to the audience.
subscribed_atstring | nullWhen the contact subscribed, or null.
unsubscribed_atstring | nullWhen the contact unsubscribed, or null.
audienceobjectid and name of the audience.
contactobjectThe contact: id, email, first_name, last_name and custom_fields.
updated_atstringWhen the subscriber was last updated, in ISO 8601 with a UTC offset.
created_atstringWhen the contact was added to the audience.
resubscribedbooleanAlways true.
{
"event_id": "evt_2xLc9Rr4Tn6Wb1Qm8Ks3Vf0Hd7a",
"type": "subscriber.resubscribed",
"object": {
"id": "sub_2xLj6Fa1Vu8Br3Xg5Cq0Nh7Ow2j",
"object": "subscriber",
"subscribed": true,
"subscribed_at": "2026-10-01T10:02:14.307000+00:00",
"unsubscribed_at": null,
"audience": {
"id": "aud_2xLi5Ez0Ut7Aq2Wf4Bp9Mg6Nv1i",
"name": "Newsletter"
},
"contact": {
"id": "con_2xLf5Jk1Xs7Nc2Ur8Zo3Ld6Pt0a",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"custom_fields": {
"company": "Analytical Engines"
}
},
"updated_at": "2026-10-01T10:02:14.307000+00:00",
"created_at": "2026-09-20T14:22:09.418302+00:00",
"resubscribed": true
},
"data": {
"object": {
"id": "sub_2xLj6Fa1Vu8Br3Xg5Cq0Nh7Ow2j",
"object": "subscriber",
"subscribed": true,
"subscribed_at": "2026-10-01T10:02:14.307000+00:00",
"unsubscribed_at": null,
"audience": {
"id": "aud_2xLi5Ez0Ut7Aq2Wf4Bp9Mg6Nv1i",
"name": "Newsletter"
},
"contact": {
"id": "con_2xLf5Jk1Xs7Nc2Ur8Zo3Ld6Pt0a",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"custom_fields": {
"company": "Analytical Engines"
}
},
"updated_at": "2026-10-01T10:02:14.307000+00:00",
"created_at": "2026-09-20T14:22:09.418302+00:00",
"resubscribed": true
}
}
}subscriber.deleted
Sent when a contact is removed from an audience: with Delete a subscriber, when you change a contact’s audiences, or when you delete the contact. The payload is the subscriber as it was before removal.
Webhook requests carry a JSON array of events like this one; see Webhook requests.
Fields
event_idstringEvent ID (evt_…). A retried request carries the same ID, so use it to skip events you already handled. You can also look the event up with Retrieve an event.
typestringAlways subscriber.deleted.
objectobjectThe subscriber the event describes. Its fields are listed below.
data.objectobjectThe same object again, in the shape that the Events API returns in data.
Subscriber object
idstringSubscriber ID (sub_…). A subscriber is one contact’s membership in one audience.
objectstringAlways subscriber.
subscribedbooleanWhether the contact is subscribed to the audience.
subscribed_atstring | nullWhen the contact subscribed, or null.
unsubscribed_atstring | nullWhen the contact unsubscribed, or null.
audienceobjectid and name of the audience.
contactobjectThe contact: id, email, first_name, last_name and custom_fields.
updated_atstringWhen the subscriber was last updated, in ISO 8601 with a UTC offset.
created_atstringWhen the contact was added to the audience.
{
"event_id": "evt_2xLc9Rr4Tn6Wb1Qm8Ks3Vf0Hd7a",
"type": "subscriber.deleted",
"object": {
"id": "sub_2xLj6Fa1Vu8Br3Xg5Cq0Nh7Ow2j",
"object": "subscriber",
"subscribed": true,
"subscribed_at": "2026-09-20T14:22:09.418302+00:00",
"unsubscribed_at": null,
"audience": {
"id": "aud_2xLi5Ez0Ut7Aq2Wf4Bp9Mg6Nv1i",
"name": "Newsletter"
},
"contact": {
"id": "con_2xLf5Jk1Xs7Nc2Ur8Zo3Ld6Pt0a",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"custom_fields": {
"company": "Analytical Engines"
}
},
"updated_at": "2026-09-20T14:22:09.418302+00:00",
"created_at": "2026-09-20T14:22:09.418302+00:00"
},
"data": {
"object": {
"id": "sub_2xLj6Fa1Vu8Br3Xg5Cq0Nh7Ow2j",
"object": "subscriber",
"subscribed": true,
"subscribed_at": "2026-09-20T14:22:09.418302+00:00",
"unsubscribed_at": null,
"audience": {
"id": "aud_2xLi5Ez0Ut7Aq2Wf4Bp9Mg6Nv1i",
"name": "Newsletter"
},
"contact": {
"id": "con_2xLf5Jk1Xs7Nc2Ur8Zo3Ld6Pt0a",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"custom_fields": {
"company": "Analytical Engines"
}
},
"updated_at": "2026-09-20T14:22:09.418302+00:00",
"created_at": "2026-09-20T14:22:09.418302+00:00"
}
}
}