Webhooks
Message Read
message.readFires when a fan opens a message the creator sent and the conversation is marked read on the fan's side.
When it fires
Useful for read-receipt tracking, drip campaign timing, and gauging whether a PPV teaser was actually seen.
Payload
Wrapped in the standard webhook envelope (event, data, timestamp):
json · example delivery
| 1 | { |
| 2 | "event": "message.read", |
| 3 | "data": { |
| 4 | "conversationId": "conv_xyz", |
| 5 | "messageId": "msg_002", |
| 6 | "readBy": { |
| 7 | "id": "usr_fan123", |
| 8 | "handle": "fan123" |
| 9 | }, |
| 10 | "readAt": "2026-04-28T12:14:30Z" |
| 11 | }, |
| 12 | "timestamp": "2026-04-28T12:14:31Z" |
| 13 | } |
data fields
| Field | Type | Description |
|---|---|---|
conversationId | string | ID of the conversation that was read. |
messageId | string | ID of the most recent creator message that was read. |
readBy.id | string | ID of the fan who read the message. |
readBy.handle | string | Public handle of the fan. |
readAt | string (ISO 8601) | Timestamp the message was marked read. |