Read chat conversations
Distribute → Chat conversations is where you read the transcripts your chat widgets have retained. It's the team-facing side of the same records a visitor sees in the widget's own History list.
The entry only appears in the sidebar once a widget on the app retains anything, so there is never a dead link to an empty page.
Conversation history is a paid feature — it needs the Team plan or above, and the plan sets how long transcripts are kept (Team 30 days, Business 60, Enterprise 180). Chatting is on every plan, including Starter; only keeping the conversation is paid. Without it this page shows an upgrade card instead of the reader. See Plans & features.
Turn retention on first
Transcripts are off by default — a chat turn is stateless and nothing is stored. To start keeping them, open Distribute → Chat widget, switch on Retain transcripts on the widget, set Keep conversations for (days) — up to your plan's ceiling, default 30 — and save. Chat conversations appears in the sidebar as soon as you do. The toggle is locked on plans without conversation history.
Turning retention back off stops recording new turns but keeps what was already stored until it ages out or you delete it.
Downgrading to a plan without conversation history stops the recording immediately: visitors get fresh threads, their History list comes back empty, and this page is replaced by the upgrade card. That card still offers Delete retained transcripts, so you can erase what was stored while the workspace was paid.
Read a conversation
The page targets the branch selected in the header, the same as the widget page. Switch branches there to read another branch's threads.
If several widgets on the branch retain transcripts, pick one from the Widget dropdown. With only one, it is shown straight away.
Threads are listed newest first. Each row shows:
when the thread was last active and how many messages it has;
whether it was anonymous or from a signed-in visitor — a short, non-reversible id you can correlate across threads, not the person's identity;
a context badge when the host page attached page context;
the origin that drove the chat, and a preview of the first question.
Click a row for the full transcript. Host instructions sent with FlowCPChat.prompt() are marked Host instruction (not shown to the visitor), so you can tell what your app injected from what the person actually typed.
Delete
Delete on an open transcript removes that one thread. Delete all removes every retained transcript for the selected widget. Neither can be undone, and neither interrupts anyone: a visitor mid-chat simply starts a new record on their next message.
What is stored — and what isn't
A retained transcript is a text-only projection: the user's text, the assistant's text, the names of the tools the assistant called, how many attachments a message had, and the latest page context.
FlowCP never stores attachment contents, tool arguments or results (they can carry your API's records), the model's reasoning, or the end-user's token. The visitor's conversation handle and their token are stored only as SHA-256 hashes.
That's what makes this view safe to give a customer-success team: they can read what people asked without gaining access to the records behind the answers.
Reacting to conversations elsewhere
The dashboard is for reading. If you want another system to act on chat activity — open a CRM ticket, ping a Slack channel, log a lead — add a webhook and subscribe to conversation.created and message.created. Those events fire whether or not transcripts are retained, and carry message text only for webhooks that explicitly opt in.
Last updated