Interaction transcript
The transcript renders every turn as a chat bubble — user turns on the right, agent turns on the left. Messages and tool calls are interleaved in order. While the conversation is still running, live transcription segments are overlaid on top of the saved history so you see speech as it lands; once a turn is persisted, the saved version replaces the live overlay.Tool calls
A tool call is rendered as a centered, dashed pill labeled with the tool name. Each call is paired with its result by matchingcall_id, so one pill carries both the request and the response. Click the pill to expand:
The pill also shows the call’s latency inline next to the name — in milliseconds when under one second, otherwise in seconds.
Per-turn latency
Each agent turn carries a latency badge: a small stacked bar plus a label. The label reads<time> response when end-to-end latency is recorded, or <time> TTFT (time to first token) when only the inference segment is available. The bar’s width is scaled relative to the slowest turn in the conversation, so you can spot outliers at a glance.
Hover the badge for the breakdown:
Voice channels report
LLM TTFT and TTS TTFB. Asynchronous text and email channels have no audio timeline, so they report inference (LLM) and tool execution (Tools) instead.Recording sync
When the conversation has a recording, an audio player appears at the bottom of the page and the transcript syncs to it. Click any bubble to seek the recording to that turn. As the recording plays, the turn currently being spoken is highlighted and scrolls into view, and each turn shows its start offset relative to the recording. Turns are timed using theirstarted_speaking_at and stopped_speaking_at metrics, so sync only applies to channels that record those timings.
Email header
On theemail channel, a header sits above the thread showing the subject, From, To, and Cc of the thread, plus any attachment filenames and a roster of participants (humans and agents). The subject falls back to (no subject) when none is set.
Details pane
The Details pane lists the conversation’s metadata. Rows render only when the underlying value is present, and the set of rows varies by channel.Variables vs. System Metadata
Below the detail rows are two metadata blocks. The distinction matters: one is yours to use, the other is internal.
Variables is where the data you pass into a conversation shows up — anything you set in
custom_metadata, plus the context you inject via initial_context. Use the copy button to grab the whole object as JSON. When there’s nothing to show, the block reads No variables.
System Metadata is gated behind the advanced_user scope. It holds platform internals rather than customer data, so most viewers never see it.
Advanced users also get a Copy record JSON button at the top of the Details pane, which copies the entire conversation record.
Workflow-run links
When a conversation triggers a workflow, its run is surfaced in the Details pane with the run ID and a View button that opens the run’s state inline. Three kinds of run are linked, drawn fromsystem_metadata:
Live updates
While the conversation is still active, the page refetches the record every few seconds so the status, duration, and transcript stay current. Polling stops once the conversation reaches a terminal status —completed, failed, cancelled, transferred, or unanswered — at which point the view settles into the final recorded record.
Live monitoring
Listen to in-progress calls in real time.
Workflow observability
Inspect the runs linked from a conversation.

