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.
Event (type)data.objectFires when
creator.message.receivedmessageThe creator receives an inbound message from a fan
creator.message.sentmessageAn outbound creator → fan message is sent (UI, agency, automation, or AI)
creator.message.readfan_message_readThe creator marks a fan’s messages as read
creator.message.deletedmessageA message is unsent/deleted
creator.message.reactionreactionA reaction is added to a message
All message events require the read:chat scope. Delivered in the Standard-Webhooks envelope; the fields below describe the data object.
Message events are metadata-only — they carry no message text or media. Use the chat API to fetch content when you need it. The conversation is addressed by the fan (fan.uuid); there is no separate chat id.

Message resource

Used by creator.message.received, creator.message.sent, and creator.message.deleted.
FieldTypeDescription
objectstringAlways "message"
uuidstringThe message’s unique identifier
senderstringcreator or fan
created_atstring | nullISO 8601 time the message was created
deleted_atstring | nullISO 8601 unsend time (set on deleted, null otherwise)
creatorobject{ uuid } of the creator who owns the conversation
fanobject{ uuid, email } of the conversation counterpart (email may be null)
metadataobjectYour passthrough metadata map

Example: creator.message.received

{
  "id": "f1a2b3c4-4444-4a2b-9c3d-aaaaaaaaaaaa",
  "type": "creator.message.received",
  "timestamp": "2026-06-09T08:39:33.139Z",
  "data": {
    "object": "message",
    "uuid": "2f7c5e8a-6d36-4e3a-98d9-9f1b3b0a1a10",
    "sender": "fan",
    "created_at": "2026-06-09T08:39:33.139Z",
    "deleted_at": null,
    "creator": { "uuid": "creator-uuid" },
    "fan": { "uuid": "fan-uuid", "email": "fan@example.com" },
    "metadata": {}
  }
}
creator.message.sent uses the same shape with sender: "creator"; creator.message.deleted sets deleted_at to the unsend time.

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.
FieldTypeDescription
objectstringAlways "fan_message_read"
read_messages_countintegerHow many of the fan’s messages were just marked read
unread_messages_countintegerThe creator’s remaining unread count for this conversation
fanobject{ uuid, email } of the conversation counterpart
creatorobject{ uuid } of the creator who read the messages
metadataobjectYour passthrough metadata map

Example: creator.message.read

{
  "id": "f1a2b3c4-5555-4a2b-9c3d-aaaaaaaaaaaa",
  "type": "creator.message.read",
  "timestamp": "2026-06-09T08:39:33.139Z",
  "data": {
    "object": "fan_message_read",
    "read_messages_count": 3,
    "unread_messages_count": 0,
    "fan": { "uuid": "fan-uuid", "email": "fan@example.com" },
    "creator": { "uuid": "creator-uuid" },
    "metadata": {}
  }
}

Reaction resource

Used by creator.message.reaction.
FieldTypeDescription
objectstringAlways "reaction"
message_uuidstringThe message that was reacted to
emojistringThe reaction emoji
actorobject{ uuid } of the user who reacted
creatorobject{ uuid } of the creator who owns the conversation
created_atstring | nullISO 8601 time the reaction was added
metadataobjectYour passthrough metadata map

Example: creator.message.reaction

{
  "id": "f1a2b3c4-6666-4a2b-9c3d-aaaaaaaaaaaa",
  "type": "creator.message.reaction",
  "timestamp": "2026-06-09T08:39:33.139Z",
  "data": {
    "object": "reaction",
    "message_uuid": "2f7c5e8a-6d36-4e3a-98d9-9f1b3b0a1a10",
    "emoji": "❤️",
    "actor": { "uuid": "fan-uuid" },
    "creator": { "uuid": "creator-uuid" },
    "created_at": "2026-06-09T08:39:33.139Z",
    "metadata": {}
  }
}