Skip to main content
subscription.cancelled is the deprecated flat event for a subscription cancellation being scheduled before access ends. It requires the read:creator scope, and new integrations use creator.subscription.cancel_at_period_end_changed instead.
Don’t build new integrations on subscription.cancelled. It keeps firing during the migration window, after which only creator.subscription.cancel_at_period_end_changed is delivered. Subscribe to the creator.* event and move existing consumers before the window closes.

When this fires

subscription.cancelled fires when an active subscription is cancelled because the subscriber turns off auto-renew, the creator blocks them, or moderation ends the relationship. The subscriber usually keeps access until the end of the period they already paid for, and accessEndsAt tells you when that access stops. Use it to react to churn the moment it is decided, instead of diffing subscriber snapshots on a schedule. Cancellation and expiry are distinct events. subscription.cancelled fires when a cancellation is scheduled (access typically continues until accessEndsAt), and subscription.expired fires when access ends. A typical lifecycle emits subscription.cancelled first, then subscription.expired when the paid period runs out.

Payload

Example payload