member.* events
Member (subscriber) lifecycle events.
Member (subscriber) lifecycle events. A "member" in webhook events is the project-scoped subscriber, not a team member. Fires on joining, churning, bans, access grants and revocations, and the accounts a member connects on the connectors.
| Event | Fires when |
|---|---|
member.joined | An access code is redeemed against a non-trial plan. Not paid checkouts. |
member.trial_joined | A cardless trial starts, or a code is redeemed against a trial plan. |
member.converted | A trial converts to a paying subscription (Stripe only). |
member.churned | A subscriber's subscription ends without renewal. |
member.removed | A subscriber is removed without being banned (e.g., kicked for inactivity). |
member.banned | A creator bans a subscriber. |
member.unbanned | A ban is lifted. |
member.kicked | A subscriber is ejected from the project without a ban: status goes to churned, active subscriptions are cancelled, and every resource grant is revoked. |
member.resource_added | A subscriber is added to an additional resource (channel, group). |
member.resource_pending | A subscriber is entitled to a resource on a connector they hold no account on yet; access is issued the moment they connect one. |
member.resource_reissued | A creator, an agent or the member's own refresh revokes the grant a subscriber holds on a resource so a fresh one can be issued. |
member.resource_removed | A subscriber is removed from a specific resource. |
member.access_extended | A connector outage of an hour or more ended and its length was banked on the subscriber's purchase: a fixed-term purchase ends later now, a recurring one runs that much longer after its last paid period. |
member.identity_linked | A subscriber connects a platform account: from the portal, by a first sign-in through a connector, or by adopting one from a sibling project. |
member.identity_unlinked | A connected platform account is removed from a subscriber, by them on the portal or by the creator over the API. |
Example envelope
Subscription-driven member events (joined, trial_joined, converted, churned, resource_added, resource_removed) carry flat identifier fields:
{
"id": "evt_01HX...",
"type": "member.joined",
"created_at": "2026-05-18T10:05:00Z",
"api_version": "2026-05-01",
"project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
"data": {
"subscription_id": "5b7e2d40-1a86-4c39-97f2-e83d0b16c5a4",
"project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
"plan_id": "c4e82f16-93a7-4d5b-b81c-6e0f27a94d3b",
"subscriber_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80",
"access_code": "SLATE-SUNDAY-4F2A9"
}
}Moderation events (banned, unbanned, kicked, removed) instead nest a subscriber object:
{
"id": "evt_01HX...",
"type": "member.banned",
"created_at": "2026-05-18T10:05:00Z",
"api_version": "2026-05-01",
"project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
"data": {
"subscriber": {
"id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80",
"status": "banned"
},
"reason": "Spamming referral links"
}
}data.subscriber carries the member's id and status only; resolve their connected accounts with the member identities endpoint.
Guarantees
member.joinedandmember.trial_joinedfire only for zero-payment acquisition: access-code redemptions and cardless trials. Paid checkouts emitsubscription.activatedwith nomember.*join event.member.trial_joinedaccompaniessubscription.trial_startedon the cardless-trial and access-code paths.member.convertedfires at most once per trial conversion, and only for Stripe.- No
member.*payload carries the subscriber's email. Resolve subscriber detail with the member endpoint usingsubscriber_id. - The members endpoint returns
email(member-chosen and verified) andbilling_email(taken from their payment provider, unverified). Both require a token withproject-user:view.
Required ability
Tokens subscribing to member.* events must carry project-user:view at mint time.
Events
member.joined
A subscriber joins by redeeming an access code against a paid plan.
member.trial_joined
A subscriber joins on a trial via cardless trial or access-code redemption.
member.converted
A trial converts to a paying subscription.
member.churned
A subscriber's last active subscription lapsed.
member.removed
A subscriber is soft-deleted manually.
member.banned
A creator bans a subscriber.
member.unbanned
A ban is lifted; the subscriber returns to churned status.
member.kicked
A subscriber is kicked from the project without a ban.
member.resource_added
A subscriber gains access to a specific resource.
member.resource_pending
A subscriber is entitled to a resource but has no account on its connector yet, so access waits for them to connect one.
member.resource_reissued
A subscriber's access to a resource is being reissued: the old grant is revoked and a fresh one follows.
member.access_extended
Outage Compensation banked the length of a connector outage on a member's purchase: one event per member, saying when they feel the extra time.
member.resource_removed
A subscriber loses access to a specific resource.
member.identity_linked
A subscriber connects a platform account to their membership.
member.identity_unlinked
A subscriber's connected platform account is disconnected from their membership.
Compare with the current pages
How is this guide?