# Realtime behavior

> WebSocket transport, automatic reconnection, message de-duplication, and unread tracking.

Source: https://docs.useclad.ai/realtime

---

- **Transport:** WebSocket, established after boot. If WebSocket is unavailable,
  delivery automatically falls back so messages still arrive.
- **Reconnect:** automatic with exponential backoff. On reconnect, missed
  messages are replayed and de‑duplicated — you never see duplicates, and
  `clientMessageId` makes your own retries idempotent.
- **Unread:** the widget tracks unread counts across the user's conversations
  and emits `unread:change`, even while the panel is closed.
- **Connection state:** subscribe to `connection:state` to reflect
  online/offline status in your own UI if desired.

No infrastructure is required on your side — the realtime gateway is hosted.
