> ## 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.

# Creator Subscriptions

> creator.subscription.activated, deactivated, and cancel_at_period_end_changed for a creator's profile subscriptions.

These events track the lifecycle of a fan's profile subscription to a creator,
independently of the money movement. They are the successor to the legacy
`subscription.new`, `subscription.cancelled`, and `subscription.expired` events.

| Event (`type`)                                      | Fires when                                                                   |
| --------------------------------------------------- | ---------------------------------------------------------------------------- |
| `creator.subscription.activated`                    | A subscription becomes active (new subscriber or a lapsed one re-subscribes) |
| `creator.subscription.deactivated`                  | A subscription ends and the fan loses access                                 |
| `creator.subscription.cancel_at_period_end_changed` | Auto-renew is turned off or back on; access continues until `expires_at`     |

Requires the `read:creator` scope. Delivered in the
[Standard-Webhooks envelope](/creator/overview#event-envelope); the fields below
describe the `data` object.

<Note>
  A typical churn sequence is `cancel_at_period_end_changed` (auto-renew off,
  access continues) followed by `deactivated` when the paid period runs out. A
  failed renewal can `deactivated` a subscription with no prior
  `cancel_at_period_end_changed`. Native profile subscriptions have no external
  id — the subscription's identity is the `(purchaser, creator)` pair.
</Note>

## Subscription resource

| Field                  | Type           | Description                                                           |
| ---------------------- | -------------- | --------------------------------------------------------------------- |
| `object`               | string         | Always `"subscription"`                                               |
| `status`               | string         | `active`, `cancelled`, or `expired`                                   |
| `cancel_at_period_end` | boolean        | Whether auto-renew is currently off                                   |
| `expires_at`           | string \| null | ISO 8601 end of the paid period; access continues until then          |
| `created_at`           | string \| null | ISO 8601 time the subscription was created                            |
| `deactivation_reason`  | string \| null | Why it ended (set on `deactivated`), e.g. `expired`, `payment_failed` |
| `client_reference_id`  | string \| null | Your passthrough reference from the original purchase                 |
| `purchaser`            | object         | `{ uuid, email }` of the subscriber (`email` may be `null`)           |
| `creator`              | object         | `{ uuid }` of the creator                                             |
| `metadata`             | object         | Your passthrough metadata map                                         |

### Example: `creator.subscription.activated`

```json theme={null}
{
  "id": "f1a2b3c4-2222-4a2b-9c3d-aaaaaaaaaaaa",
  "type": "creator.subscription.activated",
  "timestamp": "2026-06-09T08:39:33.139Z",
  "data": {
    "object": "subscription",
    "status": "active",
    "cancel_at_period_end": false,
    "expires_at": "2026-07-09T08:39:33.139Z",
    "created_at": "2026-06-09T08:39:33.139Z",
    "deactivation_reason": null,
    "client_reference_id": "crm-contact-8821",
    "purchaser": { "uuid": "fan-uuid", "email": "fan@example.com" },
    "creator": { "uuid": "creator-uuid" },
    "metadata": { "campaign": "spring-promo" }
  }
}
```

### Example: `creator.subscription.deactivated`

```json theme={null}
{
  "id": "f1a2b3c4-3333-4a2b-9c3d-aaaaaaaaaaaa",
  "type": "creator.subscription.deactivated",
  "timestamp": "2026-07-09T08:39:33.139Z",
  "data": {
    "object": "subscription",
    "status": "expired",
    "cancel_at_period_end": true,
    "expires_at": "2026-07-09T08:39:33.139Z",
    "created_at": "2026-06-09T08:39:33.139Z",
    "deactivation_reason": "expired",
    "client_reference_id": "crm-contact-8821",
    "purchaser": { "uuid": "fan-uuid", "email": "fan@example.com" },
    "creator": { "uuid": "creator-uuid" },
    "metadata": { "campaign": "spring-promo" }
  }
}
```

The `creator.subscription.cancel_at_period_end_changed` event uses the same
resource shape with `cancel_at_period_end` reflecting the new state (`true` when
auto-renew was turned off, `false` when turned back on) and `status` still
`active`.
