Skip to main content
These events mirror a creator’s direct-message activity in real time. They are the successor to the legacy message.received, message.sent, and message.read events, plus new deleted and reaction events. All message events require the read:chat scope. Delivered in the Standard-Webhooks envelope; the fields below describe the data object.
Since 2026-07-15, creator.message.received carries the message contenttext, media_uuids, price, tip and more. creator.message.sent and creator.message.deleted remain metadata-only: for those, use the chat API to fetch content. See Content fields for exactly which event carries what.The conversation is addressed by the fan (fan.uuid); there is no separate chat id.
Two payload behaviours that commonly break integrations:
  • Keys are snake_case. media_uuids, message_type, is_muted, unread_messages_count, is_automatednot mediaUuids, messageType, isMuted. The deprecated flat message.received used camelCase; the creator.* envelope does not.
  • Optional fields are omitted, not nulled. An absent value has no key at all — it is never sent as null or as an empty array. A message with no media has no media_uuids key, so treat an absent key as empty rather than reading payload.data.media_uuids.length.

Message resource

Used by creator.message.received, creator.message.sent, and creator.message.deleted.

Core fields

Always present on all three events.

Content fields

creator.message.received carries the message itself. Every field here is optional in the sense described above: when the value does not apply, the key is absent from the payload — not null, not [].
creator.message.sent carries message_type and nothing else from this table — no text, media_uuids, price, tip, is_muted, is_automated, or unread_messages_count. creator.message.deleted carries none of them. Fetch content for those events from the chat API.

Fan object

creator.message.deleted sends fan as { uuid, email: null } only — no display_name, handle, or avatar_url.

Example: creator.message.received

A pay-to-view message with text and two media attachments:
A plain text-only message from the same fan omits media_uuids and price entirely — the keys are not present at all.

Example: creator.message.sent

The same envelope and object, but not the same shape: sender is always creator, and the only content field is message_type.
creator.message.deleted carries the core fields only: sender, deleted_at set to the unsend time, created_at as null, and fan as { uuid, email: null }.

Read-receipt resource

Used by creator.message.read. This is a per-conversation read receipt, not a message entity — it reports counts rather than a message uuid.

Example: creator.message.read

Reaction resource

Used by creator.message.reaction.

Example: creator.message.reaction