Three events share the subscription resource. They are delivered in the
Standard-Webhooks envelope; the
fields below describe the data object.
Event (type) | Fires when |
|---|
checkout_link.subscription.activated | A subscription becomes active via a checkout link |
checkout_link.subscription.deactivated | A subscription ends (expired or otherwise deactivated) |
checkout_link.subscription.cancel_at_period_end_changed | Auto-renew is turned off or back on |
A subscription is a fan’s active, recurring access to a product sold through
a checkout link. Fanvue models cancellation as cancel_at_period_end plus an
expires_at, not an immediate removal: a fan who cancels keeps access until
expires_at, and the deactivated event fires when access actually ends.
Subscription resource
| Field | Type | Description |
|---|
object | string | Always "subscription" |
id | string | Subscription uuid |
status | string | active | cancelled | expired |
cancel_at_period_end | boolean | Whether the subscription will stop renewing at expires_at |
expires_at | string | null | ISO 8601 end of the current period |
created_at | string | null | ISO 8601 time the subscription started |
client_reference_id | string | null | Your passthrough reference (see Attribution) |
deactivation_reason | string | null | Why the subscription ended (e.g. NON_RENEWING); null while active |
checkout_link | object | { uuid, name, product_uuid, product_price_uuid } |
purchaser | object | { uuid, email } of the subscriber (email may be null) |
creator | object | { uuid } of the creator |
metadata | object | Your passthrough metadata map |
Examples
checkout_link.subscription.activated
{
"id": "f1a2b3c4-4444-4a2b-9c3d-aaaaaaaaaaaa",
"type": "checkout_link.subscription.activated",
"timestamp": "2026-06-09T08:00:00.000Z",
"data": {
"object": "subscription",
"id": "sub-uuid",
"status": "active",
"cancel_at_period_end": false,
"expires_at": "2026-07-09T08:00:00.000Z",
"created_at": "2026-06-09T08:00:00.000Z",
"client_reference_id": "your-crm-id-123",
"deactivation_reason": null,
"checkout_link": {
"uuid": "ck-uuid",
"name": "VIP Monthly",
"product_uuid": "prod-uuid",
"product_price_uuid": "pp-uuid"
},
"purchaser": { "uuid": "fan-uuid", "email": "fan@example.com" },
"creator": { "uuid": "creator-uuid" },
"metadata": { "affiliate_id": "aff_123", "campaign": "spring" }
}
}
checkout_link.subscription.cancel_at_period_end_changed
{
"id": "f1a2b3c4-6666-4a2b-9c3d-aaaaaaaaaaaa",
"type": "checkout_link.subscription.cancel_at_period_end_changed",
"timestamp": "2026-06-20T08:00:00.000Z",
"data": {
"object": "subscription",
"id": "sub-uuid",
"status": "cancelled",
"cancel_at_period_end": true,
"expires_at": "2026-07-09T08:00:00.000Z",
"created_at": "2026-06-09T08:00:00.000Z",
"client_reference_id": "your-crm-id-123",
"deactivation_reason": null,
"checkout_link": {
"uuid": "ck-uuid",
"name": "VIP Monthly",
"product_uuid": "prod-uuid",
"product_price_uuid": "pp-uuid"
},
"purchaser": { "uuid": "fan-uuid", "email": "fan@example.com" },
"creator": { "uuid": "creator-uuid" },
"metadata": { "affiliate_id": "aff_123", "campaign": "spring" }
}
}
checkout_link.subscription.deactivated
{
"id": "f1a2b3c4-5555-4a2b-9c3d-aaaaaaaaaaaa",
"type": "checkout_link.subscription.deactivated",
"timestamp": "2026-07-09T08:00:00.000Z",
"data": {
"object": "subscription",
"id": "sub-uuid",
"status": "expired",
"cancel_at_period_end": false,
"expires_at": "2026-07-09T08:00:00.000Z",
"created_at": "2026-06-09T08:00:00.000Z",
"client_reference_id": "your-crm-id-123",
"deactivation_reason": "NON_RENEWING",
"checkout_link": {
"uuid": "ck-uuid",
"name": "VIP Monthly",
"product_uuid": "prod-uuid",
"product_price_uuid": "pp-uuid"
},
"purchaser": { "uuid": "fan-uuid", "email": "fan@example.com" },
"creator": { "uuid": "creator-uuid" },
"metadata": { "affiliate_id": "aff_123", "campaign": "spring" }
}
}