> ## Documentation Index
> Fetch the complete documentation index at: https://api.fanvue.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Checkout Subscription Events

> Reference for subscription.activated, subscription.deactivated, and subscription.cancel_at_period_end_changed webhooks for Fanvue checkout subscriptions.

Three events share the `subscription` resource. They are delivered in the
[Standard-Webhooks envelope](/docs/checkout/overview#event-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                    |

<Note>
  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.
</Note>

## 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](/docs/checkout/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`

```json theme={null}
{
  "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`

```json theme={null}
{
  "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`

```json theme={null}
{
  "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" }
  }
}
```
