Conversations overview
A split-panel view of every chat — search, filter, and open any thread to read it.
The Conversations tab shows every thread your chatbot has had, across every channel. Left side: a scrollable list. Right side: the selected thread's transcript.
The page layout
┌─ Conversations ──────────────────────────────────────────────────┐
│ ┌────────────────────────┐ ┌──────────────────────────────────┐ │
│ │ [ All ][Needs Reply][Closed] │ │
│ │ │ │ │
│ │ 🔍 Search messages… │ Select a conversation │ │
│ │ │ Choose from the list to view │ │
│ │ 24 conversations │ messages │ │
│ │ ────────────── │ │ │
│ │ J Jane Doe 12:04 │ │ │
│ │ ● widget · 6 msgs │ │ │
│ │ │ │ │
│ │ ? a91f22a0… Yesterday│ │ │
│ │ ● whatsapp · 3 msgs│ │ │
│ └────────────────────────┘ └──────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
Filter tabs
Three tabs at the top of the list, left to right:
| Key | Label |
|---|---|
"" (empty) |
All |
handed_off |
Needs Reply |
closed |
Closed |
Clicking a tab filters the list. The current filter is stored in the URL.
Search
Below the tabs, a search input with placeholder "Search messages..." plus a submit button and (when searching) a clear button. Search runs against message content, not visitor names.
Under the field, a count updates live:
-
24 conversationswhen no search is active -
3 results for "pricing"when searching
Hitting Enter or clicking the magnifier button submits.
The conversation list
Each row shows:
-
A circular avatar with the visitor's first initial (or
?for anonymous) - Name — visitor name if known, otherwise the first 14 chars of the session ID
-
Timestamp — right-aligned, formatted contextually (
12:04,Yesterday,Tue,Apr 14) - Channel dot — color-coded: green for WhatsApp, blue for Telegram, grey for widget
-
Message count —
N msg(s) - Status badge — Needs reply (amber dot) for handed-off, Closed (grey pill) for closed, nothing for active
Selected row has a left-side primary-color stripe.
Empty states:
- With no filter and no conversations ever: "No conversations yet."
- With a search that returned nothing: "No matches."
Real-time updates
Three WebSocket events keep the page fresh without a reload:
-
new_message— a new message arrived in some conversation -
handoff— a conversation just flipped to handed_off status -
handoff_summary— the LLM finished generating the handoff summary
Selecting a conversation
Clicking a row loads the transcript in the right panel. On mobile (<1024 px), the list is replaced by the transcript; a back arrow returns you to the list.
Next steps
- Reading transcripts — what each message shows
- Replying as an agent — taking over a handed-off conversation