Membership Updated
Sent whenever a membership changes: it activates or deactivates, cancel_at_period_end flips, or the seller edits its billing period, price or renewal date. previous_attributes carries the values that changed from. membership.activated is also delivered as a membership.updated, so you can subscribe to this single event and read the current status from the payload.
Required permissions:
- member:basic:read
- member:email:read
- webhook_receive:memberships
Headers
A unique identifier for this webhook request
The signature of the webhook request with the webhook version prepended
The timestamp in seconds since the Unix epoch that the webhook was sent at on the server
Payload
Example payload
{
"account_id": "biz_xxxxxxxxxxxxxx",
"api_version": "v1",
"api_version_date": "2026-07-20",
"data": {
"account": {
"id": "biz_xxxxxxxxxxxxxx",
"logo_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"route": "shine-time-auto-detailing",
"title": "Shine Time Auto Detailing"
},
"affiliate": {
"applies_to_payments": "first_payment",
"commission_amount": {
"amount": "-1234.56",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"commission_type": "flat_fee"
},
"billing_period_days": 30,
"cancel_at_period_end": true,
"canceled_at": "2026-01-01T12:00:00.000Z",
"cancellation_reason": "Too expensive",
"created_at": "2026-01-01T12:00:00.000Z",
"current_period_end": "2026-01-01T12:00:00.000Z",
"current_period_start": "2026-01-01T12:00:00.000Z",
"id": "mem_xxxxxxxxxxxxxx",
"license_key": "WHOP-XXXX-XXXX-XXXX",
"manage_url": "https://whop.com/billing/manage/mber_xxxxxxxxxxxxxx",
"member": {
"access_level": "customer",
"last_accessed_at": "2026-01-01T12:00:00.000Z",
"position": 1767268800000
},
"metadata": {},
"phone_number": "+xxxxxxxxxxx",
"plan_id": "plan_xxxxxxxxxxxxxx",
"product_id": "prod_xxxxxxxxxxxxxx",
"promo_code_id": "promo_xxxxxxxxxxxxxx",
"status": "active",
"updated_at": "2026-01-01T12:00:00.000Z",
"user_id": "user_xxxxxxxxxxxxxx"
},
"id": "msg_xxxxxxxxxxxxxxxxxxxxxxxx",
"timestamp": "2025-01-01T00:00:00.000Z",
"type": "membership.updated"
}Response
Return a 200 status to indicate that the data was received successfully
Changes
Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.