member.removed
Subscriber soft-deleted manually.
When this fires
A creator manually removes a subscriber from the project. The subscriber is soft-deleted, their access is revoked, and any active subscription is cancelled.
Required ability
project-user:view — token must carry this at mint time to subscribe an endpoint to this event.
Payload
{
"id": "evt_01HX...",
"type": "member.removed",
"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",
"telegram_user_id": null,
"status": "customer"
},
"reason": "creator_manual"
}
}Field reference
| Field | Type | Notes |
|---|---|---|
id | string ULID | Unique event id, prefixed evt_. Use for idempotent processing. |
type | string | Always member.removed for this event. |
created_at | ISO 8601 timestamp | Server-side emission time. |
api_version | string | Webhook API contract version. |
project_id | string UUID | Project this event belongs to. |
data.subscriber.id | string UUID | Subscriber's project-scoped user id. |
data.subscriber.telegram_user_id | null | Always null. Present for shape compatibility only — the Telegram id is not an attribute of the member record. |
data.subscriber.status | string | The member's status at the moment of removal (lead, trialing, customer, churned or banned), captured before the soft-delete. Removal writes no new status. |
data.reason | string | null | Reason supplied by the creator at removal time. |
Caveats
- Distinct from a ban: removed subscribers can rejoin, banned subscribers cannot. See
member.banned. - Distinct from a kick: a kick targets a single resource without removing the subscriber. See
member.kicked.
Related events
member.banned,member.kicked— alternative discipline events.subscription.cancelled— fires alongside if there was an active subscription.- Member events overview — back to family overview.
How is this guide?