subscription resource. They are delivered in the
Standard-Webhooks envelope; the fields
below describe the data object. Every event requires the read:self scope.
Fanvue models cancellation as
cancel_at_period_end plus an expires_at, not an
immediate removal: a buyer who cancels keeps access until expires_at. Gate
access on expires_at, not on status.
The money and the access state are separate events: a subscription’s initial
charge emits both
app.payment.succeeded (with
billing_reason: subscription_initial) and app.subscription.activated.
app.subscription.deactivated is reserved for when a subscription’s access
actually ends, but is not emitted yet. Read live subscription state with
the App Subscriptions endpoints in the
meantime.Subscription resource
data.object is "subscription" for both events.
Examples
app.subscription.activated
app.subscription.cancel_at_period_end_changed
Reconciling
Becauseapp.subscription.deactivated is not emitted yet, and because webhooks
can be missed or delayed, read live subscription state from the App
Subscriptions endpoints rather than deriving it
from events alone.