AsyncAPI 2.6 description of Papercups' **realtime live chat** surface. Unlike many providers, Papercups exposes a genuine, bidirectional **WebSocket** transport: the chat widget and agent dashboard connect to a Phoenix Channels socket and exchange messages in both directions. This is documented at https://docs.papercups.io/chat and described in the open-source codebase at https://github.com/papercups-io/papercups. Phoenix Channels multiplex many logical topics over a single WebSocket connection at `/socket/websocket`. A customer typically joins three channels while interacting with live chat: * `conversation:{conversation_id}` - all messages for a given conversation are broadcast here; clients send/receive the `shout` event (a new message) and `messages:seen` (read receipts). * `conversation:lobby:{customer_id}` - notifies the customer of new conversations initiated by agents. * `room:{account_id}` - broadcasts agent availability via Phoenix Presence. Phoenix wraps every frame in a 5-element message envelope `[join_ref, ref, topic, event, payload]`. The lifecycle events `phx_join`, `phx_reply`, `phx_close`, `phx_error`, and `heartbeat` (on the `phoenix` topic) are part of the Phoenix Channels protocol. Papercups is in maintenance mode (community-maintained); the realtime surface reflects the documented and open-source behavior at time of review.
View SpecView on GitHubCustomer MessagingLive ChatOpen SourceSupportIntercom AlternativeAsyncAPIWebhooksEvents
Channels
conversation:{conversation_id}
publishsendShout
Send a message (and read receipts) into the conversation.
Per-conversation channel. After `phx_join`, clients send new messages with the `shout` event and read receipts with `messages:seen`, and receive the same events broadcast from other participants (agent or customer).
conversation:lobby:{customer_id}
subscribereceiveLobbyEvents
Receive new-conversation notifications.
Lobby channel through which a customer is notified of new conversations started by agents.
room:{account_id}
subscribereceivePresence
Receive Phoenix Presence state and diffs for agent availability.
Account room channel used to broadcast agent availability via Phoenix Presence.
phoenix
publishsendHeartbeat
Keep the WebSocket connection alive.
Phoenix heartbeat topic. Clients send a `heartbeat` event roughly every 30 seconds to keep the socket alive.
Messages
✉
Shout
New message (shout)
A new chat message broadcast to a conversation channel.
✉
MessagesSeen
Read receipt
Marks agent messages in the conversation as seen.
✉
PhxJoin
Join channel
Phoenix channel join request.
✉
PhxReply
Channel reply
Phoenix acknowledgement reply (status ok/error).
✉
PresenceState
Presence state
Full Phoenix Presence state for agent availability.
✉
PresenceDiff
Presence diff
Incremental Phoenix Presence join/leave diff.
✉
Heartbeat
Heartbeat
Phoenix socket keepalive on the `phoenix` topic.
Servers
wss
papercups-hostedapp.papercups.io/socket/websocket
Papercups hosted Phoenix Channels WebSocket endpoint. Self-hosted deployments expose the same `/socket/websocket` path on their own host. Connection params (e.g. customer or API token) are supplied as query params on the socket URL per Phoenix Channels conventions.