Available Fanvue webhook events
A list of all available Fanvue webhook events that you can subscribe to.
All Fanvue events are prefixed with fanvue. so they never collide with the OnlyFans events or the Fansly events. Each relayed event is named after its Fanvue webhook topic with creator. replaced by fanvue., so Fanvue's creator.payment.succeeded arrives as fanvue.payment.succeeded.
We're enabling Fanvue team by team, and these events are only offered once it's on for your team. See the Fanvue API overview.
Payloads are Fanvue's, passed through
Fanvue events use the same envelope as the OnlyFans and Fansly events: an event name, the account_id of the connected account, and a platform-native payload:
{
"event": "fanvue.<category>.<name>",
"account_id": "fanvue_acct_123",
"payload": { }
}Apart from the three account events, payload is the data object of Fanvue's webhook, forwarded unchanged. Nothing is renamed, reshaped or added to match our OnlyFans or Fansly events, so Fanvue's webhook reference is the field-level source of truth, and every event below links to its page there.
Fanvue's own id, type and timestamp envelope fields are not forwarded. Deduplicate on the X-OFAPI-Idempotency-Key header instead, as described in Delivery and retries.
Amounts in payload are integers in minor units of currency, as Fanvue sends them. For USD that is cents, so 1999 means $19.99.
Accounts
These three events are ours rather than Fanvue's, so their payload is our summary of the connected account instead of a Fanvue resource.
fanvue.account.connected
A Fanvue account was connected or reconnected.
{
"event": "fanvue.account.connected",
"account_id": "fanvue_acct_123",
"payload": {
"id": "fanvue_acct_123",
"fanvue_user_uuid": "3bbe6394-2830-4646-a8ba-4a0a05426947",
"handle": "jane",
"display_name": "Jane Doe",
"avatar_url": null,
"is_ai_creator": false,
"roles": [
"creator"
],
"granted_scopes": [
"openid",
"offline_access",
"offline",
"read:self",
"read:chat",
"write:chat",
"read:fan",
"read:creator",
"write:creator",
"read:media",
"write:media",
"read:post",
"write:post",
"read:insights",
"read:tracking_links",
"write:tracking_links"
],
"status": "active",
"connected_at": "2026-09-22T11:26:38.000000Z"
}
}fanvue.account.disconnected
A Fanvue account was disconnected in the dashboard or with DELETE /api/fanvue/accounts/{fanvueAccount}. Further API calls for it return a 404, so stop polling it. If the creator is reconnected from the same team, the account comes back under the same fanvue_acct_ ID.
{
"event": "fanvue.account.disconnected",
"account_id": "fanvue_acct_123",
"payload": {
"id": "fanvue_acct_123",
"fanvue_user_uuid": "3bbe6394-2830-4646-a8ba-4a0a05426947",
"handle": "jane",
"display_name": "Jane Doe",
"avatar_url": null,
"is_ai_creator": false,
"roles": [
"creator"
],
"granted_scopes": [
"openid",
"offline_access",
"offline",
"read:self",
"read:chat",
"write:chat",
"read:fan",
"read:creator",
"write:creator",
"read:media",
"write:media",
"read:post",
"write:post",
"read:insights",
"read:tracking_links",
"write:tracking_links"
],
"status": "active",
"connected_at": "2026-09-22T11:26:38.000000Z"
}
}fanvue.account.needs_reauth
Fanvue rejected the account's credentials, so API calls for it fail until you reconnect it in the dashboard. Its webhook events keep arriving meanwhile.
{
"event": "fanvue.account.needs_reauth",
"account_id": "fanvue_acct_123",
"payload": {
"id": "fanvue_acct_123",
"fanvue_user_uuid": "3bbe6394-2830-4646-a8ba-4a0a05426947",
"handle": "jane",
"display_name": "Jane Doe",
"avatar_url": null,
"is_ai_creator": false,
"roles": [
"creator"
],
"granted_scopes": [
"openid",
"offline_access",
"offline",
"read:self",
"read:chat",
"write:chat",
"read:fan",
"read:creator",
"write:creator",
"read:media",
"write:media",
"read:post",
"write:post",
"read:insights",
"read:tracking_links",
"write:tracking_links"
],
"status": "needs_reauth",
"connected_at": "2026-09-22T11:26:38.000000Z"
}
}Payments
fanvue.payment.succeeded
A fan paid for a post, message, media or tip, or was charged for a new or renewing subscription.
Fanvue reference: Payments
{
"event": "fanvue.payment.succeeded",
"account_id": "fanvue_acct_123",
"payload": {
"object": "payment",
"id": "FV-12345",
"status": "succeeded",
"source": "message",
"billing_reason": "one_time",
"gross": 1999,
"net": 1799,
"fees": {
"fanvue_fee": 200,
"transaction_fee": 0
},
"currency": "USD",
"paid_in_full": true,
"client_reference_id": null,
"transaction_id": null,
"post_uuid": null,
"message_uuid": "2f7c5e8a-6d36-4e3a-98d9-9f1b3b0a1a10",
"message_type": "SINGLE_RECIPIENT",
"tip_context": null,
"created_at": "2026-06-09T08:39:33.139Z",
"paid_at": "2026-06-09T08:39:33.139Z",
"subscription": null,
"purchaser": {
"uuid": "fan-uuid",
"email": null,
"handle": "janed",
"display_name": "Jane D"
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {},
"tracking": {
"link_url": "https://fanvue.com/creator-handle?fvc=summer-campaign",
"metadata": {
"campaign": "summer",
"source": "x"
}
}
}
}fanvue.reward.created
You earned a referral or affiliate commission.
Fanvue reference: Payments
{
"event": "fanvue.reward.created",
"account_id": "fanvue_acct_123",
"payload": {
"object": "reward",
"id": "FVR-4455",
"amount": 500,
"currency": "USD",
"source_payment_id": "FV-12345",
"referred_creator": {
"uuid": "referred-creator-uuid"
},
"creator": {
"uuid": "creator-uuid"
},
"created_at": "2026-06-09T08:45:00.000Z",
"metadata": {}
}
}fanvue.reward.reversed
A referral or affiliate commission was clawed back because its sale was refunded or charged back. It carries the same id as the fanvue.reward.created it reverses.
Fanvue reference: Payments
{
"event": "fanvue.reward.reversed",
"account_id": "fanvue_acct_123",
"payload": {
"object": "reward",
"id": "FVR-4455",
"amount": 500,
"currency": "USD",
"source_payment_id": "FV-12345",
"referred_creator": {
"uuid": "referred-creator-uuid"
},
"creator": {
"uuid": "creator-uuid"
},
"created_at": "2026-06-09T08:45:00.000Z",
"metadata": {}
}
}Refunds & disputes
fanvue.refund.created
A payment was refunded in full. amount equals the original gross.
Fanvue reference: Refunds and disputes
{
"event": "fanvue.refund.created",
"account_id": "fanvue_acct_123",
"payload": {
"object": "refund",
"id": "FVC-12345",
"payment_id": "FV-12345",
"amount": 1999,
"currency": "USD",
"reason": null,
"full_amount": true,
"created_at": "2026-06-09T08:40:00.000Z",
"purchaser": {
"uuid": "fan-uuid",
"email": null,
"handle": "janed",
"display_name": "Jane D"
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {
"campaign": "spring-promo"
}
}
}fanvue.dispute.flagged
An early chargeback warning was raised on a payment, before any formal dispute.
Fanvue reference: Refunds and disputes
{
"event": "fanvue.dispute.flagged",
"account_id": "fanvue_acct_123",
"payload": {
"object": "dispute",
"id": "dp_abc123",
"status": "warning",
"amount": 1999,
"currency": "USD",
"reason": "fraudulent",
"created_at": "2026-06-09T08:41:00.000Z",
"payment": {
"id": "FV-12345",
"transaction_id": "txn_abc",
"purchaser": {
"uuid": "fan-uuid",
"email": null,
"handle": "janed",
"display_name": "Jane D"
}
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {
"campaign": "spring-promo"
}
}
}fanvue.dispute.created
A formal chargeback dispute was opened on a payment.
Fanvue reference: Refunds and disputes
{
"event": "fanvue.dispute.created",
"account_id": "fanvue_acct_123",
"payload": {
"object": "dispute",
"id": "dp_abc123",
"status": "open",
"amount": 1999,
"currency": "USD",
"reason": "fraudulent",
"created_at": "2026-06-09T08:41:00.000Z",
"payment": {
"id": "FV-12345",
"transaction_id": "txn_abc",
"purchaser": {
"uuid": "fan-uuid",
"email": null,
"handle": "janed",
"display_name": "Jane D"
}
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {
"campaign": "spring-promo"
}
}
}Subscriptions
fanvue.subscription.activated
A subscription became active because a new fan subscribed or a lapsed fan resubscribed. The charge arrives separately as fanvue.payment.succeeded.
Fanvue reference: Subscriptions
{
"event": "fanvue.subscription.activated",
"account_id": "fanvue_acct_123",
"payload": {
"object": "subscription",
"id": "FV-12345",
"status": "active",
"cancel_at_period_end": false,
"auto_renew": true,
"price": 999,
"expires_at": "2026-07-09T08:39:33.139Z",
"current_period_start": "2026-06-09T08:39:33.139Z",
"renew_date": "2026-07-09T08:39:33.139Z",
"renew_price": 999,
"created_at": "2026-06-09T08:39:33.139Z",
"deactivation_reason": null,
"client_reference_id": "crm-contact-8821",
"purchaser": {
"uuid": "fan-uuid",
"email": null,
"handle": "janed",
"display_name": "Jane D"
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {
"campaign": "spring-promo"
},
"tracking": {
"link_url": "https://fanvue.com/creator-handle?fvc=spring-promo",
"metadata": {
"campaign": "spring-promo",
"source": "x"
}
}
}
}fanvue.subscription.renewed
A subscription rolled into a new billing period without lapsing. The charge arrives separately as fanvue.payment.succeeded.
Fanvue reference: Subscriptions
{
"event": "fanvue.subscription.renewed",
"account_id": "fanvue_acct_123",
"payload": {
"object": "subscription",
"id": "FV-12345",
"status": "active",
"cancel_at_period_end": false,
"auto_renew": true,
"price": 999,
"expires_at": "2026-08-09T08:39:33.139Z",
"current_period_start": "2026-07-09T08:39:33.139Z",
"renew_date": "2026-08-09T08:39:33.139Z",
"renew_price": 999,
"created_at": "2026-06-09T08:39:33.139Z",
"deactivation_reason": null,
"client_reference_id": "crm-contact-8821",
"purchaser": {
"uuid": "fan-uuid",
"email": null,
"handle": "janed",
"display_name": "Jane D"
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {
"campaign": "spring-promo"
},
"tracking": null
}
}fanvue.subscription.deactivated
A subscription ended and the fan lost access. deactivation_reason says why.
Fanvue reference: Subscriptions
{
"event": "fanvue.subscription.deactivated",
"account_id": "fanvue_acct_123",
"payload": {
"object": "subscription",
"id": null,
"status": "expired",
"cancel_at_period_end": false,
"auto_renew": true,
"price": 999,
"expires_at": "2026-07-09T08:39:33.139Z",
"current_period_start": "2026-06-09T08:39:33.139Z",
"renew_date": null,
"renew_price": null,
"created_at": "2026-06-09T08:39:33.139Z",
"deactivation_reason": "not_renewed",
"client_reference_id": "crm-contact-8821",
"purchaser": {
"uuid": "fan-uuid",
"email": null,
"handle": "janed",
"display_name": "Jane D"
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {
"campaign": "spring-promo"
},
"tracking": null
}
}fanvue.subscription.cancel_at_period_end_changed
A fan turned auto-renew off or back on. Access continues until expires_at.
Fanvue reference: Subscriptions
{
"event": "fanvue.subscription.cancel_at_period_end_changed",
"account_id": "fanvue_acct_123",
"payload": {
"object": "subscription",
"id": null,
"status": "active",
"cancel_at_period_end": true,
"auto_renew": false,
"price": 999,
"expires_at": "2026-07-09T08:39:33.139Z",
"current_period_start": "2026-06-09T08:39:33.139Z",
"renew_date": null,
"renew_price": null,
"created_at": "2026-06-09T08:39:33.139Z",
"deactivation_reason": "subscriber_requested",
"client_reference_id": "crm-contact-8821",
"purchaser": {
"uuid": "fan-uuid",
"email": null,
"handle": "janed",
"display_name": "Jane D"
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {
"campaign": "spring-promo"
},
"tracking": null
}
}Messages & chats
fanvue.message.received
A fan sent you a message.
Fanvue reference: Messages
{
"event": "fanvue.message.received",
"account_id": "fanvue_acct_123",
"payload": {
"object": "message",
"uuid": "2f7c5e8a-6d36-4e3a-98d9-9f1b3b0a1a10",
"sender": "fan",
"created_at": "2026-06-09T08:39:33.139Z",
"deleted_at": null,
"text": "Hey! Loved your latest post 😍",
"message_type": "SINGLE_RECIPIENT",
"is_muted": false,
"media_uuids": [
"b8c47a91-3f2d-4a55-b7e8-1c9d2e4f5a6b",
"c1d58b02-4e3e-4b66-c8f9-2d0e3f5a6b7c"
],
"price": 300,
"is_automated": false,
"unread_messages_count": 3,
"creator": {
"uuid": "creator-uuid"
},
"fan": {
"uuid": "fan-uuid",
"email": null,
"display_name": "Jane D",
"handle": "janed",
"avatar_url": "https://cdn.fanvue.com/avatars/example.jpg"
},
"metadata": {}
}
}fanvue.message.sent
You sent a message to a fan from any app or tool. Mass messages arrive as fanvue.message.mass_sent instead.
Fanvue reference: Messages
{
"event": "fanvue.message.sent",
"account_id": "fanvue_acct_123",
"payload": {
"object": "message",
"uuid": "9b1c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d",
"sender": "creator",
"created_at": "2026-06-09T08:41:02.114Z",
"deleted_at": null,
"message_type": "SINGLE_RECIPIENT",
"text": "Thanks for subscribing! 💕",
"media_uuids": [
"b8c47a91-3f2d-4a55-b7e8-1c9d2e4f5a6b"
],
"unread_messages_count": 0,
"creator": {
"uuid": "creator-uuid"
},
"fan": {
"uuid": "fan-uuid",
"email": null,
"display_name": "Jane D",
"handle": "janed"
},
"metadata": {}
}
}fanvue.message.mass_sent
You sent a mass message. One event per send, not per recipient.
Fanvue reference: Messages
{
"event": "fanvue.message.mass_sent",
"account_id": "fanvue_acct_123",
"payload": {
"object": "mass_message",
"uuid": "7c1e9d24-8a3f-4b52-9d61-0f2a3b4c5d6e",
"sender": "creator",
"created_at": "2026-06-09T10:12:05.402Z",
"message_type": "BROADCAST",
"text": "Hey {{handle}}, new set just dropped 💕",
"media_uuids": [
"b8c47a91-3f2d-4a55-b7e8-1c9d2e4f5a6b"
],
"price": 900,
"recipient_count": 30142,
"creator": {
"uuid": "creator-uuid"
},
"metadata": {}
}
}fanvue.message.read
You read a fan's messages.
High volume
This fires every time you read a conversation that had unread messages. Only subscribe if you mirror read state.
Fanvue reference: Messages
{
"event": "fanvue.message.read",
"account_id": "fanvue_acct_123",
"payload": {
"object": "fan_message_read",
"read_messages_count": 3,
"unread_messages_count": 0,
"read_at": "2026-06-09T08:39:32.884Z",
"fan": {
"uuid": "fan-uuid",
"email": null,
"display_name": "Jane D",
"handle": "janed"
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {}
}
}fanvue.message.read_by_fan
A fan read your messages.
Fanvue reference: Messages
{
"event": "fanvue.message.read_by_fan",
"account_id": "fanvue_acct_123",
"payload": {
"object": "creator_message_read",
"read_messages_count": 3,
"read_at": "2026-06-09T08:44:10.502Z",
"fan": {
"uuid": "fan-uuid"
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {}
}
}fanvue.message.deleted
A single chat message was unsent. The payload carries no message content.
Fanvue reference: Messages
{
"event": "fanvue.message.deleted",
"account_id": "fanvue_acct_123",
"payload": {
"object": "message",
"uuid": "9b1c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d",
"sender": "creator",
"created_at": null,
"deleted_at": "2026-06-09T09:15:44.000Z",
"creator": {
"uuid": "creator-uuid"
},
"fan": {
"uuid": "fan-uuid",
"email": null,
"display_name": "Jane D",
"handle": "janed"
},
"metadata": {}
}
}fanvue.message.reaction
A reaction was added to a chat message. sender says whether you or the fan reacted.
Fanvue reference: Messages
{
"event": "fanvue.message.reaction",
"account_id": "fanvue_acct_123",
"payload": {
"object": "reaction",
"sender": "fan",
"message_uuid": "2f7c5e8a-6d36-4e3a-98d9-9f1b3b0a1a10",
"emoji": "❤️",
"actor": {
"uuid": "fan-uuid",
"email": null,
"display_name": "Jane D",
"handle": "janed"
},
"creator": {
"uuid": "creator-uuid"
},
"fan": {
"uuid": "fan-uuid",
"email": null,
"display_name": "Jane D",
"handle": "janed"
},
"created_at": "2026-06-09T08:39:33.139Z",
"metadata": {}
}
}fanvue.chat.marked_unread
You marked a conversation unread. No message's read state changes.
Fanvue reference: Chat state
{
"event": "fanvue.chat.marked_unread",
"account_id": "fanvue_acct_123",
"payload": {
"object": "chat_unread_marker",
"marked_at": "2026-06-09T08:52:17.106Z",
"unread_messages_count": 0,
"fan": {
"uuid": "fan-uuid",
"email": null,
"display_name": "Jane D",
"handle": "janed"
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {}
}
}Followers
fanvue.follow.created
A fan followed your account.
Fanvue reference: Engagement
{
"event": "fanvue.follow.created",
"account_id": "fanvue_acct_123",
"payload": {
"object": "follow",
"id": null,
"created_at": "2026-06-09T08:39:33.139Z",
"follower": {
"uuid": "fan-uuid",
"email": null,
"handle": "janed",
"display_name": "Jane D"
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {},
"tracking": {
"link_url": "https://fanvue.com/creator-handle?fvc=summer-campaign",
"metadata": {
"campaign": "summer",
"source": "x"
}
}
}
}Posts
fanvue.post.liked
A fan liked one of your posts.
High volume
Popular accounts can receive these continuously. Only subscribe if you actually process them, and make sure your endpoint can keep up.
Fanvue reference: Engagement
{
"event": "fanvue.post.liked",
"account_id": "fanvue_acct_123",
"payload": {
"object": "post",
"id": null,
"post_uuid": "217d5dc9-cae0-4c09-b643-2e3aa498587a",
"comment_text": null,
"actor": {
"uuid": "fan-uuid",
"email": null,
"handle": "janed",
"display_name": "Jane D"
},
"creator": {
"uuid": "creator-uuid"
},
"created_at": "2026-06-09T08:39:33.139Z",
"metadata": {}
}
}fanvue.post.commented
A fan commented on one of your posts.
Fanvue reference: Engagement
{
"event": "fanvue.post.commented",
"account_id": "fanvue_acct_123",
"payload": {
"object": "post",
"id": "c0mment-uuid",
"post_uuid": "217d5dc9-cae0-4c09-b643-2e3aa498587a",
"comment_text": "Love this!",
"actor": {
"uuid": "fan-uuid",
"email": null,
"handle": "janed",
"display_name": "Jane D"
},
"creator": {
"uuid": "creator-uuid"
},
"created_at": "2026-06-09T08:39:33.139Z",
"metadata": {}
}
}Fans
fanvue.fan.status_changed
You muted or unmuted a fan.
Fanvue reference: Fan status
{
"event": "fanvue.fan.status_changed",
"account_id": "fanvue_acct_123",
"payload": {
"object": "fan_status",
"change_type": "mute",
"state": "muted",
"changed_at": "2026-06-09T08:39:33.139Z",
"fan": {
"uuid": "fan-uuid",
"email": null,
"handle": "janed",
"display_name": "Jane D"
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {}
}
}fanvue.fan.presence_changed
A fan came online or went offline.
High volume
Fanvue sends one event per fan per online or offline transition. Only subscribe if you track presence, and compare changed_at with the state you already hold, because a retried event can arrive after the one that replaced it.
Fanvue reference: Fan status
{
"event": "fanvue.fan.presence_changed",
"account_id": "fanvue_acct_123",
"payload": {
"object": "fan_status",
"change_type": "presence",
"state": "online",
"changed_at": "2026-06-09T08:39:33.139Z",
"fan": {
"uuid": "fan-uuid",
"email": null,
"handle": "janed",
"display_name": "Jane D"
},
"creator": {
"uuid": "creator-uuid"
},
"metadata": {}
}
}