Event Payloads
Each event below shows when we send it and its data object. Every delivery wraps data in the same envelope (id, type, timestamp, version, siteId), described in the Webhooks Overview.
member.created
Sent when a new member is added on the Members page or with the API's create-member request, signs up on your login page, or buys access through Stripe with an email that isn't a member yet. Creating members in bulk through the API sends one member.created per member it creates.
{
"id": "evt-uuid",
"type": "member.created",
"timestamp": "2026-03-28T12:00:00.000Z",
"version": "1",
"siteId": "site-uuid",
"data": {
"member": {
"id": "member-uuid",
"email": "[email protected]",
"displayName": "Jane Smith",
"status": "active",
"verified": false,
"paid": false
},
"accessGroupIds": ["group-uuid-1", "group-uuid-2"]
}
}accessGroupIds lists the groups the member joined with, and is an empty list when there are none. status is "active" or "blocked". A member who bought access through Stripe arrives with displayName null and verified and paid both true.
member.updated
Sent when a member's details are changed on the Members page or through the API, and when a Stripe purchase or cancellation changes a current member's paid status.
{
"data": {
"member": {
"id": "member-uuid",
"email": "[email protected]",
"displayName": "Jane Smith",
"status": "active",
"verified": true,
"paid": true
},
"changedFields": ["status", "paid"]
}
}member holds the member's details after the change. changedFields lists the fields whose value the change set to something new, in the order email, displayName, status, verified, paid. A save that changes nothing sends no member.updated.
When a current member buys access through Stripe, changedFields includes paid, plus status and verified if the purchase changed those too. When their subscription ends, paid goes back to false, unless another active subscription to your site still covers them.
member.auth
Sent when a member signs in to your site with an emailed link or code. Signing out sends nothing.
{
"data": {
"member": {
"id": "member-uuid",
"email": "[email protected]",
"displayName": "Jane Smith"
},
"action": "login",
"firstLogin": true
}
}Field | Values | Description |
|---|---|---|
|
| Always |
| boolean |
|
member.deleted
Sent when a member is deleted on the Members page or through the API.
{
"data": {
"member": {
"id": "member-uuid",
"email": "[email protected]"
}
}
} access-group.created
Sent when an access group is created on the Access Groups page or through the API.
{
"data": {
"accessGroup": {
"id": "group-uuid",
"name": "Premium Members",
"description": "Access to premium content"
}
}
} access-group.updated
Sent when an access group is renamed or given a new description, on the Access Groups page or through the API.
{
"data": {
"accessGroup": {
"id": "group-uuid",
"name": "Premium Members (Updated)",
"description": "New description"
},
"changedFields": ["name", "description"]
}
}changedFields lists the fields whose value the change set to something new. A save that changes nothing sends no access-group.updated.
access-group.deleted
Sent when an access group is deleted on the Access Groups page or through the API.
{
"data": {
"accessGroup": {
"id": "group-uuid",
"name": "Premium Members"
}
}
} access-group.member.added
Sent when a current member is added to an access group on the Members or Access Groups page, through the API, or by a Stripe purchase that gives them a paid group. A new member's groups come in member.created instead.
{
"data": {
"accessGroup": {
"id": "group-uuid",
"name": "Premium Members"
},
"member": {
"id": "member-uuid",
"email": "[email protected]"
}
}
} access-group.member.removed
Sent when a member is removed from an access group on the Members or Access Groups page, through the API, or when their Stripe subscription ends and takes away a paid group.
{
"data": {
"accessGroup": {
"id": "group-uuid",
"name": "Premium Members"
},
"member": {
"id": "member-uuid",
"email": "[email protected]"
}
}
}