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

# Event Catalog

> Every Fanvue webhook event in one table: event type, data.object, family, required scope, and reference link, plus which signing secret verifies it.

Every event Fanvue can deliver to a webhook endpoint, in one place. Use the [reference pages](#current-events) linked per event for field definitions and example payloads.

## Event families

|              | **Prefix**                     | **Covers**                                  | **Payload**                                                      | **Scopes**                                         |
| ------------ | ------------------------------ | ------------------------------------------- | ---------------------------------------------------------------- | -------------------------------------------------- |
| **Creator**  | `creator.*`                    | A creator's whole platform activity         | [Standard-Webhooks envelope](/docs/creator/overview#event-envelope)   | `read:creator`, `read:chat`, `read:post` per event |
| **Checkout** | `checkout_link.*`, `payout.*`  | A creator's checkout-link sales and payouts | [Standard-Webhooks envelope](/docs/checkout/overview#event-envelope)  | `read:creator`                                     |
| **App**      | `app.*`                        | Your app's own sales                        | [Standard-Webhooks envelope](/docs/app-store/webhooks#event-envelope) | `read:self`                                        |
| **Legacy**   | flat names (`purchase.new`, …) | Deprecated; replaced by `creator.*`         | Flat camelCase payload, no envelope                              | per event                                          |

All families deliver to the same endpoints; branch on the event `type` (and `data.object`) to route. Envelope fields are `snake_case`; legacy payloads are camelCase.

## Names in the Developer Area vs types on the wire

The **Events** tab shows each event by a human-readable name ("Payment Succeeded"); the wire, the docs, and your handler use the machine **event type** (`creator.payment.succeeded`). The table below maps the two. Route your handler on the `type` string, never on the display name.

<Info>
  The **Name in Developer Area** column mirrors the Events tab as of August 2026 and is maintained best-effort; the picker will show the type strings directly in a future update. If a name on this page doesn't match what you see, trust the type string and [tell us on Discord](https://discord.gg/dZe3tqVTq4).
</Info>

## Signing secrets

One verification scheme, two places a secret can come from:

| Endpoint created via                                      | Secret                                                                     |
| --------------------------------------------------------- | -------------------------------------------------------------------------- |
| Developer Area **Events** tab                             | One signing secret per app, shown in the tab                               |
| [`POST /webhooks/subscriptions`](/docs/api-reference/overview) | Per-subscription `signingSecret`, returned **only** in the create response |

Both sign every delivery with `X-Fanvue-Signature`; verify identically per [Verify Webhook Signatures](/docs/webhooks/signature-verification).

## Current events

| Event (`type`)                                            | Name in Developer Area          | `data.object`      | Family   | Scope          | Reference                                                    |
| --------------------------------------------------------- | ------------------------------- | ------------------ | -------- | -------------- | ------------------------------------------------------------ |
| `creator.payment.succeeded`                               | Payment Succeeded               | `payment`          | Creator  | `read:creator` | [Payments](/docs/creator/payments)                                |
| `creator.reward.created`                                  | Reward Created                  | `reward`           | Creator  | `read:creator` | [Payments](/docs/creator/payments#reward-resource)                |
| `creator.reward.reversed`                                 | Reward Reversed                 | `reward`           | Creator  | `read:creator` | [Payments](/docs/creator/payments#reward-resource)                |
| `creator.subscription.activated`                          | Subscription Activated          | `subscription`     | Creator  | `read:creator` | [Subscriptions](/docs/creator/subscriptions)                      |
| `creator.subscription.renewed`                            | Subscription Renewed            | `subscription`     | Creator  | `read:creator` | [Subscriptions](/docs/creator/subscriptions)                      |
| `creator.subscription.deactivated`                        | Subscription Deactivated        | `subscription`     | Creator  | `read:creator` | [Subscriptions](/docs/creator/subscriptions)                      |
| `creator.subscription.cancel_at_period_end_changed`       | Subscription Auto-Renew Changed | `subscription`     | Creator  | `read:creator` | [Subscriptions](/docs/creator/subscriptions)                      |
| `creator.message.received`                                | Message Received                | `message`          | Creator  | `read:chat`    | [Messages](/docs/creator/messages)                                |
| `creator.message.sent`                                    | Message Sent                    | `message`          | Creator  | `read:chat`    | [Messages](/docs/creator/messages)                                |
| `creator.message.read`                                    | Message Read                    | `fan_message_read` | Creator  | `read:chat`    | [Messages](/docs/creator/messages)                                |
| `creator.message.deleted`                                 | Message Deleted                 | `message`          | Creator  | `read:chat`    | [Messages](/docs/creator/messages)                                |
| `creator.message.reaction`                                | Message Reaction                | `reaction`         | Creator  | `read:chat`    | [Messages](/docs/creator/messages)                                |
| `creator.follow.created`                                  | Follow Created                  | `follow`           | Creator  | `read:creator` | [Engagement](/docs/creator/engagement)                            |
| `creator.post.liked`                                      | Post Liked                      | `post`             | Creator  | `read:post`    | [Engagement](/docs/creator/engagement)                            |
| `creator.post.commented`                                  | Post Commented                  | `post`             | Creator  | `read:post`    | [Engagement](/docs/creator/engagement)                            |
| `creator.refund.created`                                  | Refund Created                  | `refund`           | Creator  | `read:creator` | [Refunds and disputes](/docs/creator/refunds-disputes)            |
| `creator.dispute.flagged`                                 | Dispute Flagged                 | `dispute`          | Creator  | `read:creator` | [Refunds and disputes](/docs/creator/refunds-disputes)            |
| `creator.dispute.created`                                 | Dispute Created                 | `dispute`          | Creator  | `read:creator` | [Refunds and disputes](/docs/creator/refunds-disputes)            |
| `creator.fan.status_changed`                              | Fan Status Changed              | `fan_status`       | Creator  | `read:chat`    | [Fan status](/docs/creator/fan-status)                            |
| `creator.fan.presence_changed`                            | Fan Presence Changed            | `fan_status`       | Creator  | `read:chat`    | [Fan status](/docs/creator/fan-status)                            |
| `checkout_link.payment.pending`                           | Pending payments                | `payment`          | Checkout | `read:creator` | [Payments](/docs/checkout/payments)                               |
| `checkout_link.payment.succeeded`                         | Successful payments             | `payment`          | Checkout | `read:creator` | [Payments](/docs/checkout/payments)                               |
| `checkout_link.payment.failed`                            | Failed payments                 | `payment`          | Checkout | `read:creator` | [Payments](/docs/checkout/payments#failure-reasons)               |
| `checkout_link.subscription.activated`                    | Activated subscriptions         | `subscription`     | Checkout | `read:creator` | [Subscriptions](/docs/checkout/subscriptions)                     |
| `checkout_link.subscription.deactivated`                  | Deactivated subscriptions       | `subscription`     | Checkout | `read:creator` | [Subscriptions](/docs/checkout/subscriptions)                     |
| `checkout_link.subscription.cancel_at_period_end_changed` | Auto-renew changes              | `subscription`     | Checkout | `read:creator` | [Subscriptions](/docs/checkout/subscriptions)                     |
| `checkout_link.refund.created`                            | Refunds                         | `refund`           | Checkout | `read:creator` | [Refunds and disputes](/docs/checkout/refunds-disputes)           |
| `checkout_link.dispute.flagged`                           | Flagged disputes                | `dispute`          | Checkout | `read:creator` | [Refunds and disputes](/docs/checkout/refunds-disputes)           |
| `checkout_link.dispute.created`                           | Opened disputes                 | `dispute`          | Checkout | `read:creator` | [Refunds and disputes](/docs/checkout/refunds-disputes)           |
| `checkout_link.installment.paid`                          | Paid installments               | `installment`      | Checkout | `read:creator` | [BNPL installments](/docs/checkout/installments)                  |
| `checkout_link.installment.failed`                        | Failed installments             | `installment`      | Checkout | `read:creator` | [BNPL installments](/docs/checkout/installments)                  |
| `checkout_link.plan.completed`                            | Completed plans                 | `plan`             | Checkout | `read:creator` | [BNPL installments](/docs/checkout/installments)                  |
| `payout.paid`                                             | Paid payouts                    | `payout`           | Checkout | `read:creator` | [Payouts](/docs/checkout/payouts)                                 |
| `payout.failed`                                           | Failed payouts                  | `payout`           | Checkout | `read:creator` | [Payouts](/docs/checkout/payouts)                                 |
| `app.payment.pending`                                     | Item Payment Pending            | `payment`          | App      | `read:self`    | [Payments](/docs/app-store/webhooks/payments)                     |
| `app.payment.succeeded`                                   | Item Payment Succeeded          | `payment`          | App      | `read:self`    | [Payments](/docs/app-store/webhooks/payments)                     |
| `app.payment.failed`                                      | Item Payment Failed             | `payment`          | App      | `read:self`    | [Payments](/docs/app-store/webhooks/payments)                     |
| `app.subscription.activated`                              | Subscription Activated          | `subscription`     | App      | `read:self`    | [Subscriptions](/docs/app-store/webhooks/subscriptions)           |
| `app.subscription.cancel_at_period_end_changed`           | Subscription Auto-Renew Changed | `subscription`     | App      | `read:self`    | [Subscriptions](/docs/app-store/webhooks/subscriptions)           |
| `app.refund.created`                                      | Refund Created                  | `refund`           | App      | `read:self`    | [Refunds and disputes](/docs/app-store/webhooks/refunds-disputes) |
| `app.payment.refunded`                                    | —                               | `refund`           | App      | `read:self`    | Deprecated alias of `app.refund.created`                     |
| `app.dispute.flagged`                                     | Dispute Flagged                 | `dispute`          | App      | `read:self`    | [Refunds and disputes](/docs/app-store/webhooks/refunds-disputes) |
| `app.dispute.created`                                     | Dispute Created                 | `dispute`          | App      | `read:self`    | [Refunds and disputes](/docs/app-store/webhooks/refunds-disputes) |

In the Events tab, Creator events sit under the **Creator events** group, checkout events under the checkout links group, and `app.*` events under **App Store**; legacy events carry a **Deprecated** badge.

Three traps:

* `app.subscription.deactivated` is a reserved name that is **not emitted**; read live state from [App Subscriptions](/docs/app-store/app-subscriptions).
* The event `id` is a safe idempotency key on every topic **except `creator.message.read`**; see [Deduplicating events](/docs/webhooks/delivery-and-idempotency#deduplicating-events).
* `payout.*` events are creator-level, not link-scoped.

## Legacy events (deprecated)

Deprecated flat events still fire during the migration window. Subscribe to these **or** their `creator.*` replacement, never both.

| Legacy event             | Name in Developer Area | Replacement                                         |
| ------------------------ | ---------------------- | --------------------------------------------------- |
| `follow.new`             | New Follower           | `creator.follow.created`                            |
| `purchase.new`           | Purchase Received      | `creator.payment.succeeded`                         |
| `tip.new`                | Tip Received           | `creator.payment.succeeded` (`source: tip`)         |
| `subscription.new`       | New Subscriber         | `creator.subscription.activated`                    |
| `subscription.cancelled` | Subscription Cancelled | `creator.subscription.cancel_at_period_end_changed` |
| `subscription.expired`   | Subscription Expired   | `creator.subscription.deactivated`                  |
| `message.received`       | Message Received       | `creator.message.received`                          |
| `message.sent`           | Message Sent           | `creator.message.sent`                              |
| `message.read`           | Message Read           | `creator.message.read`                              |

## See also

* [Webhooks Overview](/docs/webhooks/index): pick the family for your integration.
* [Verify Webhook Signatures](/docs/webhooks/signature-verification): the `X-Fanvue-Signature` check.
* [Delivery, Retries and Idempotency](/docs/webhooks/delivery-and-idempotency): retry schedule and dedupe rules.
