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.
Background
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.joinedA subscriber joins by redeeming an access code against a paid plan.member.trial_joinedA subscriber joins on a trial via cardless trial or access-code redemption.member.convertedA trial converts to a paying subscription.member.churnedA subscriber's last active subscription lapsed.member.removedA subscriber is soft-deleted manually.member.bannedA creator bans a subscriber.member.unbannedA ban is lifted; the subscriber returns to churned status.member.kickedA subscriber is kicked from the project without a ban.member.resource_addedA subscriber gains access to a specific resource.member.resource_pendingA subscriber is entitled to a resource but has no account on its connector yet, so access waits for them to connect one.member.resource_reissuedA subscriber's access to a resource is being reissued: the old grant is revoked and a fresh one follows.member.access_extendedOutage 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_removedA subscriber loses access to a specific resource.member.identity_linkedA subscriber connects a platform account to their membership.member.identity_unlinkedA subscriber's connected platform account is disconnected from their membership.How is this guide?
Last updated on