Chats
A chat is a conversation between a participant and staff, or a group conversation staff set up.
Journeys post into a participant's chat with createChatMessage. An AI coach chat is built and
switched off; ask us about it.
- Access is membership. Reading a chat's messages, sending and moving your read cursor all
need you to be one of its users. Hiding a message (
redactedAt) or changing who is in a chat also needs thechats.moderatepermission. Message content is encrypted at rest. - Sending is idempotent by the message id the client generates, so a retry never doubles a message.
- History is the one cursor-paged list: newest first, walked with
limitandcursor. - Unread is per person: each user's read cursor gives the unread count, which is the app's one badge, on the Chat tab.
- Pushes and webhooks never carry a message's text. A push says a message is waiting; a
chatMessageswebhook event carries ids and times only. - Inside the tenant's quiet hours a message is held and delivered when the window closes.
- New messages reach an open app over the WebSocket as a prompt to fetch, never as the message itself; see Authentication for connecting.