The Call History section provides a comprehensive view of all calls made by your AI agents. You can search, filter, and analyze call data to monitor performance and identify insights with powerful filtering capabilities, an audit/review workflow, and customizable views.
A banner now sits at the very top of this page, letting you switch at any time between the classic Call History table and the new, improved Calls view. Both views are documented separately — this page covers the improved view; head over to Call History (Classic) for a full walkthrough of the original table if you’re using that view instead.
Navigate to Calls in the main menu to access your complete call history. This now opens the improved calls view (Calls v2) by default.
Calls v2 brings fully configurable, drag-and-drop columns (including dynamic input/output fields grouped by agent, with key columns pinned to the right edge), saved views, real AI latency metrics with a per-turn detail chart, an expanded filter bar (date presets, multi-agent selection, tag autocomplete, exact Call ID, latency range, and a one-click “suspicious calls” filter), a built-in review/audit workflow with per-call notes, and an Excel export that can target either all filtered calls or just your current selection.
A notice banner sits at the very top of the page reminding you that you’re on the new Calls view.
1
Notice the Banner
At the top of the page, a highlighted banner reads “You’re viewing the new Calls page.”
2
Switch Back if Needed
Click Switch back to the classic view in the banner to be taken to /calls-old, the original Call History table, if you run into something that doesn’t yet behave as expected in the new view.
3
Return Anytime
Both views read from the same underlying call data, so you can move back and forth between them without losing information — only view-specific preferences like column layout or saved views live separately per view.
This same toggle works in both directions: whether you land here from the main menu or arrive via a direct link, the banner at the top of the page always offers a one-click way back to the classic table, and the classic table offers an equivalent way forward into this improved view. See Call History (Classic) for the documentation covering that table in detail.
The banner is a safety net during the transition to the new view, not a permanent fixture — treat the classic view as a fallback rather than your primary workflow going forward.
The improved calls view lets you fully control which columns appear, in what order, and even add columns sourced directly from each agent’s input parameters or structured output — no need to open a call individually to see a specific data point.
Click the ⚙️ Columns button above the table to open the column manager panel. It’s organized into three areas:
Section
Purpose
Input columns
Discover fields from each agent’s input parameters (call.data) and add them as columns, grouped by agent
Columns
Manage visibility and order of all currently active columns — fixed and dynamic — via drag and drop
Output columns
Discover fields from each agent’s structured output (call.output) and add them as columns, grouped by agent
Saved column layouts live in the separate 👁️ Views menu next to the Columns button — see Saved Views below.
1
Open the Column Manager
Click the ⚙️ Columns button next to the Export to Excel button to open the column configuration drawer.
2
Reorder Columns
In the Columns section, drag any row using the ⠿ handle to reorder it. The table updates its column order live as you drag.
3
Show or Hide Columns
Use the checkbox next to each column name to toggle its visibility. Columns marked as non-toggleable (such as Actions) always remain visible.
4
Add a Dynamic Column from Input or Output
Click Input columns or Output columns, find the field you need under the relevant agent group (grouped and collapsible per agent), and click Add. The field appears immediately as a new column, placed just before the pinned columns, and is tagged with an input/output badge in the Columns list.
5
Remove a Dynamic Column
Dynamic columns display a small ✕ button next to their badge in the Columns list. Click ✕ to remove them from your view entirely.
6
Reset to Defaults
Click Reset to default columns at the bottom of the panel to discard all customizations and restore the original column set.
Your column configuration — order, visibility, and any dynamic columns you’ve added — is saved automatically per user and restored the next time you open the view. There’s no manual save step.
Dynamic columns are tied to the agent and field path they were created from. If an agent stops sending a particular input or output field, that column will simply show empty values for calls where the data is missing, rather than being removed automatically.
A small number of columns are pinned to the right edge of the table so they stay visible regardless of how many columns you add or how far you scroll horizontally.
By default, Reviewed and Actions are pinned. This keeps your audit status and row-level actions within reach even when you’ve added several dynamic input/output columns that push the table wide.
Pinned columns are visually grouped together at the right edge — if you rely heavily on the review workflow, keep the Reviewed column pinned rather than hiding it, so you always know which calls in view still need attention.
Beyond your single auto-saved layout, the 👁️ Views menu (next to the Columns button in the header) lets you keep multiple named views — for example, one focused on latency troubleshooting and another focused on audit review — and switch between them instantly.
1
Configure a Layout
Show, hide, reorder, and add dynamic columns until the table matches the view you want to save.
2
Open the Views Menu
Click 👁️ Views in the header to open the saved views panel.
3
Name and Save
Type a name into the New view name… field and click Save current. The current column configuration is stored as a new saved view.
4
Apply a Saved View
Click on any saved view’s name in the list to instantly replace your current column configuration with that view’s layout.
5
Delete a Saved View
Click the ✕ next to a saved view to remove it. This only deletes the saved view itself — it doesn’t change your currently active columns.
Saved views only capture the column configuration (which columns, their order, and visibility) — they don’t store filters, sorting, or page size. Combine a saved view with a filter preset for a fully repeatable workflow.
If you previously customized columns in the classic Call History table, that layout isn’t lost — the improved view automatically imports it the first time you open it.
The first time a user opens the improved calls view without any existing saved preferences, the system performs a one-time, automatic migration:
Step
What happens
1
The improved view checks your browser’s local storage for a legacy column configuration saved from the classic Call History table
2
Fixed columns that exist in both the old and new default sets carry over their visibility setting
3
Any dynamic input or output columns you had added in the classic table are reconstructed as-is, keeping their label, path, and source
4
Your previous sort column, sort direction, and page size are applied if present
5
The migrated configuration is saved to your account immediately, so it’s available even if you switch devices or browsers afterward
This migration is read-only and runs only once. It reads from the browser’s local storage, so it only applies on the same browser/device where you originally customized the classic table. If you’ve already opened the improved view before, or already have saved preferences for it, the migration is skipped and your existing improved-view configuration is used instead.
The agent’s unique identifier, shown as a compact copyable badge
Call ID
The call’s unique identifier, shown as a compact copyable badge
From
Caller phone number
Status
Call status badge
Goal
Success indicator based on evaluations
Duration
Call length
Avg AI latency
Average AI response latency for the call
Latency (turns)
Compact sparkline of latency across the call’s turns
Tags
Dynamic tags associated with the call
Recording
Access to the call recording player
Reviewed (pinned)
Audit/review status for the call, with an inline note editor
Actions (pinned)
Row-level quick actions
Additional columns such as To, Max latency, Company, Email, Summary, Type, Hung up by, and Agent duration are available but hidden by default — enable them from the column manager as needed.
The Agent ID and Call ID columns render as compact badges showing only the last 10 characters with a one-click copy button — handy for grabbing an exact ID to paste into the Call ID filter without cluttering the row with a full UUID.
Every call can now be marked as reviewed and annotated with a free-text note directly from the table — no need to leave Call History to track your QA process.
The Reviewed column (pinned to the right by default) is the entry point for the audit workflow:
Element
Description
Reviewed toggle
Marks the call as reviewed or not yet reviewed, visually distinguished in the column
Note popover
An inline editor attached to the Reviewed column where you can write a free-text audit note for that specific call
Auto-save
Notes are saved automatically shortly after you stop typing, without a separate save button
1
Open the Review Popover
Click the Reviewed cell for any call to open its inline note editor.
2
Mark as Reviewed
Toggle the call’s reviewed status to indicate it has been audited.
3
Write an Audit Note
Type your observations, findings, or QA comments directly into the note field. Your input is debounced and saved automatically a moment after you stop typing.
4
Close the Popover
Click anywhere outside the popover to close it. Only one review popover can be open at a time, so opening a new one automatically closes any other that was active.
5
Revisit Later
Reopen the Reviewed cell for any call at any time to read or edit the existing note — your review history for that call is preserved.
Combine the Reviewed column with a saved filter preset (for example “Failed + Last 7 Days”) and a saved column view that keeps Reviewed and Tags visible, to build a repeatable QA sweep: filter down to the calls you need to audit, review each one, leave a note, and move to the next.
Review status and notes are stored per call and are visible to anyone with access to Call History — treat audit notes as shared team documentation rather than private scratch notes.
Every call now tracks how quickly your AI agent responded throughout the conversation, giving you a direct signal of conversational responsiveness independent of call outcome or duration.
The improved view surfaces AI latency at three levels of detail:
Metric
Column
Description
Average latency
Avg AI latency
The mean AI response latency (in milliseconds) across all turns in the call
Maximum latency
Max latency
The single highest response latency recorded during the call — useful for spotting worst-case delays
Per-turn sparkline
Latency (turns)
A compact inline chart showing how latency evolved turn by turn, without leaving the table
1
Scan Averages at a Glance
Sort the table by Avg AI latency to quickly identify calls or agents with consistently slow responses.
2
Spot Outliers with Max Latency
Enable the Max latency column (hidden by default) to catch calls with an isolated but severe delay that the average might hide.
3
Read the Sparkline
The Latency (turns) column renders a lightweight line for each call, plotting latency per turn. A rising line toward the end of a call can indicate the agent slowing down as the conversation got more complex.
4
Open the Full Latency Detail Modal
Click into a call’s details to open the dedicated AI latency modal: a full, interactive chart plotting latency per turn, with exact millisecond values on hover and the timestamp of each turn along the X axis.
The latency detail modal turns the compact table sparkline into a full-size, turn-by-turn chart so you can pinpoint exactly where a call slowed down.
Feature
Description
Per-turn chart
Every AI turn in the call is plotted as a point, connected in chronological order
Exact values on hover
Hovering a point shows the precise latency in milliseconds for that specific turn
Timestamp axis
The X axis reflects when each turn occurred during the call, making it easy to correlate spikes with a stage of the conversation
Visual outlier detection
Sudden jumps in the line stand out immediately compared to scanning raw numbers in a table
Combine latency metrics with the LLM and LLM detail columns to check whether latency spikes correlate with a model cascade fallback — a secondary model taking over mid-call can sometimes explain a sudden increase in response time. Open the latency detail modal and the LLM detail breakdown side by side for the same call to confirm.
Latency data depends on the underlying voice provider reporting response timing for each turn. Calls made before latency tracking was enabled, or through integrations that don’t report this data, will show empty values for these columns and an empty chart in the detail modal.
The recording player has been upgraded from a simple audio control to a full waveform-based player, built from the actual decoded audio of the call — not a generic placeholder animation. It also includes a rich, per-turn conversational view when detailed provider data is available.
Click the Recording column on any call to open the player modal, which includes:
Feature
Description
Real waveform
Rendered directly from the decoded audio, showing actual amplitude across the call
Click-to-seek
Click anywhere on the waveform to jump to that point in the recording
Playback progress
The waveform visually fills in as the recording plays, distinguishing played from unplayed audio
Skip controls
Jump backward or forward 10 seconds with dedicated buttons
Playback speed
Choose from 0.5x, 0.75x, 1x, 1.25x, 1.5x, or 2x speed
Rich synced transcript
Per-turn transcript with latency badges (ASR, TTS, LLM), the LLM model used, and expandable tool call/result details, when available
Fallback transcript
Falls back to a plain text transcript automatically if detailed per-turn provider data isn’t available for that call
Download
Download the recording file directly from the modal
1
Open the Player
Click the Recording column for any call with an available recording.
2
Review the Waveform
Wait for the audio to load and decode — the waveform renders automatically once ready, reflecting the real amplitude of the call.
3
Seek and Adjust Speed
Click on any part of the waveform to jump there instantly, or use the speed buttons to review a section more quickly or more carefully.
4
Cross-Reference with the Transcript
Use the transcript panel next to the player to follow along with what’s being said as you scrub through the recording. Expand latency or tool badges on any turn for a deeper technical breakdown of that moment in the call.
Because the waveform is built from decoded audio rather than a static image, longer recordings may take a moment to render on first open. Once decoded, seeking and speed changes are instant.
Exporting to Excel respects exactly what you see: only the columns currently visible in your table — in the order you’ve arranged them — are included in the exported file, including any dynamic input/output columns you’ve added and the current review status/notes.
Two export options are available side by side in the header:
Button
Scope
Export to Excel
Exports every call matching your current filters, across all pages
Export selection (N)
Appears only once you’ve checked one or more rows; exports only those selected calls
1
Configure Your View
Use the column manager to show, hide, and reorder columns until the table reflects exactly the data you want to export. Apply a saved view first if you have one ready for this purpose.
2
Apply Your Filters
Narrow down the calls you want using the filter bar, since the full export follows the currently filtered result set.
3
Choose Full or Selective Export
Click Export to Excel to export every filtered call, or select specific rows with the checkboxes and click Export selection (N) to export only those calls — useful when you’ve hand-picked a set of calls during a review session.
4
Watch the Export State
The button shows an “Exporting…” state while the file is being generated.
5
Open the File
The downloaded spreadsheet mirrors your visible columns and their order, including any dynamic agent input/output fields you’ve added and the Reviewed status/notes, making it easy to share exactly the view you were working with.
“Export selection” is a natural companion to the review workflow: mark and annotate the calls you’ve audited, select them, and export just that batch as a record of your QA pass — without pulling in every other call matching your filters.
If you hide a column after exporting, previously downloaded files aren’t affected retroactively — each export is a snapshot of your column configuration, filters, and (for selective exports) selection at that moment.
Customize which filters are visible in your interface to streamline your workflow and focus on the most relevant filtering options.
A dedicated ⚙️ settings button is located at the end of the Filter Bar, next to the filter controls. It opens a configuration panel that lets you show or hide individual filters without affecting your applied filter values.
1
Open Filter Settings
Click the ⚙️ settings icon at the right end of the Filter Bar to open the filter visibility panel.
2
Toggle Individual Filters
Use the checkboxes to show or hide each of the following filters independently:
Goal — filter calls by the agent’s configured goal or objective
Tags — filter by dynamic or custom tags
Evaluations — filter by evaluation completion or outcome
Call ID — the direct database lookup search field, matched on the exact ID
Core filters such as Date Range, Agents, Status, Direction, Success, Latency range, and Suspicious calls are always visible and cannot be hidden, since they are considered essential for everyday use.
3
Apply and Close
Close the panel by clicking outside of it or pressing the settings icon again. Hidden filters are immediately removed from the Filter Bar, freeing up space for the ones you actually use.
4
Automatic Persistence
Your filter visibility preferences are saved automatically per user and restored the next time you open Call History — no need to reconfigure them on every visit.
By default, the Tags filter is visible in the Filter Bar out of the box, so you don’t need to open the settings panel to start filtering calls by tags. Goal, Evaluations, and Call ID remain part of the same visibility configuration and follow their own default state, which you can adjust at any time.
If a filter is hidden but has an active value from a previous session, it will remain applied to your results even though it’s not visible. Re-enable the filter from the settings panel to review or clear it. Look for the 👁️ Hidden Filter indicator near the settings icon — it appears whenever a hidden filter still holds an active value, so you always know your results are being narrowed by something you can’t currently see.
The date range filter now offers a much wider set of quick presets, from short rolling windows measured in minutes to full calendar months, alongside a fully custom range with time precision.
Click the date range field to open the preset picker:
Preset
Range covered
Last 15 minutes
Rolling 15-minute window ending now
Last 30 minutes
Rolling 30-minute window ending now
Last 1 hour
Rolling 1-hour window ending now
Last 2 hours
Rolling 2-hour window ending now
Last 4 hours
Rolling 4-hour window ending now
Last 8 hours
Rolling 8-hour window ending now
Today
Start of today through end of today
Yesterday
Start of yesterday through end of yesterday
Last 7 days
7 days ago through end of today
Last 30 days
30 days ago through end of today
This month
Start of the current calendar month through its end
Last month
The entire previous calendar month
Custom range
Manually chosen start and end date/time
1
Open the Picker
Click the date range field in the Filter Bar to reveal the list of presets.
2
Pick a Preset
Click any preset to apply it instantly — the field updates to reflect your selection and the table refreshes.
3
Or Set a Custom Range
Scroll to the Custom range section at the bottom of the picker and set an exact From and To date and time using the datetime inputs.
4
Confirm
Click Done to close the picker once your custom range is set.
Use the datetime picker to set precise time ranges for your searches. The filter automatically adjusts to your local timezone.
The short rolling-window presets (15 minutes up to 8 hours) are especially useful right after a batch of outbound calls finishes, letting you review the very latest results without having to construct a custom range.
Multi-Select Agent Filter with Searchable Combobox
The Agent filter is a typeahead combobox that supports selecting multiple agents at once, so it stays fast and usable even when your account has hundreds of agents and you need to compare a handful of them together.
1
Start Typing
Click into the Agent field and type any part of the agent’s name. As soon as the field is focused, a dropdown of matching agents appears.
2
Filter as You Type
The list narrows in real time to agents whose name contains what you’ve typed, capped to the closest matches so the dropdown stays responsive.
3
Select One or More Agents
Click an agent from the list to add it as a chip inside the field. Keep typing and selecting to add additional agents — each selected agent appears as its own removable chip.
4
Remove a Single Agent
Click the ✕ on any chip to remove just that agent from the selection, keeping the rest of your filter intact.
5
Clear All Agents
Click the ✕ at the end of the field to remove every selected agent at once and return to viewing calls from all agents.
When filtering by a single agent, the “View Evaluation Trends” button appears next to the agent chip for quick access to performance analytics.
The Goal filter lets you narrow down calls by the objective configured on the agent, making it easier to review calls tied to a specific business intent (e.g., booking, qualification, support resolution).
This filter can be shown or hidden from the filter visibility panel described above. It is hidden by default; enable it from the ⚙️ settings panel if you need to filter calls by their configured goal.Like every optional filter, Goal is temporarily disabled the moment you start a Call ID search — see below for why.
Filter calls by their average AI response latency to isolate calls that were noticeably fast or slow, without needing to open the latency detail modal one call at a time.
Field
Description
Min latency
Only show calls whose average AI latency is at or above this value (in milliseconds)
Max latency
Only show calls whose average AI latency is at or below this value (in milliseconds)
1
Set a Minimum
Enter a value in Min latency to exclude calls that responded faster than that threshold.
2
Set a Maximum
Enter a value in Max latency to exclude calls that responded slower than that threshold.
3
Combine Both
Use both fields together to isolate a specific latency band, for example calls between 1500 ms and 3000 ms, to investigate a particular tier of responsiveness.
4
Clear the Range
Empty either field to remove that bound and widen the results again.
Pair the latency range filter with the Avg AI latency and Latency (turns) columns so you can immediately see, row by row, why each call matched your threshold.
The “Suspicious calls” filter is a one-click way to surface calls that are more likely to need a closer look, without manually combining several filters yourself.
Enabling this filter highlights calls that match any of the following conditions:
Condition
Why it’s flagged
High average latency
The call’s average AI response latency exceeds a built-in threshold (3000 ms)
Problematic status
The call ended as no-answer, failed, or blocked
Goal not met
The call’s evaluations indicate its configured goal wasn’t achieved
Missing transcript
No transcript was captured for the call at all
1
Enable the Filter
Toggle Suspicious calls on in the Filter Bar.
2
Review the Narrowed Results
The table updates to show only calls matching at least one of the suspicious conditions above.
3
Investigate Each Call
Open each flagged call’s details, recording, or latency chart to determine whether it needs a review note, a tag, or escalation.
4
Mark as Reviewed
Use the Reviewed column to mark calls you’ve checked and leave an audit note, so the next pass through your suspicious calls doesn’t re-cover the same ground.
Unlike Min/Max latency or Status, which apply a strict AND to your other filters, “Suspicious calls” applies an OR across its own internal conditions — a call needs to match only one of them to show up, since each condition on its own is a reasonable independent signal of a problematic call.
Combine “Suspicious calls” with a date range like Today or Last 24 hours to build a quick daily triage habit: check what’s suspicious since yesterday, review it, and clear the queue.
When using Call ID search, all other filters are temporarily disabled to ensure precise lookups.
The Call ID filter performs a direct, exact-match database lookup and has exclusive priority over every other filter in the Filter Bar. As soon as you start typing a value into the Call ID field, all remaining filters (Date Range, Agents, Status, Direction, Success, Goal, Tags, Evaluations, Latency range, and Suspicious calls) become visually disabled and are excluded from the query — the interface greys them out and blocks interaction with them to make it clear that only the Call ID lookup is active.
Think of it as a small measurement problem: the moment you observe the system through a Call ID, every other possible filter state “collapses” — much like a quantum measurement collapsing a wave function into a single outcome. Before you type an ID, the Filter Bar exists in a superposition of Date Range, Agents, Status, Direction, Success, Goal, Tags, Evaluations, Latency range, and Suspicious calls, all potentially active at once. The instant a Call ID value is present, that superposition resolves into a single, deterministic state: exactly one call, found by its exact ID, with no other filter contributing to the result.
Enhanced Call ID functionality with database search:
1
Enter Call ID
Type the specific call ID in the dedicated search field. You can also copy an ID directly from the Call ID column’s compact badge (or the row’s Copy ID quick action) and paste it here. As soon as a value is present, the rest of the filters switch to a disabled visual state.
2
Database Query
The system performs a direct database lookup for the exact call ID, ignoring any values currently set in other filters. Partial or fuzzy matches are not returned — the ID must match exactly.
3
Instant Results
The matching call is displayed immediately, bypassing all other filters.
4
Clear Search
Remove the call ID to restore normal filtering functionality. All previously configured filters are automatically re-enabled and reapplied — the “superposition” is restored exactly as you left it.
Like the Goal and Evaluations filters, the Call ID field is hidden from the Filter Bar by default and can be enabled from the filter visibility settings (⚙️) whenever your workflow requires manual, exact ID lookups.
This priority behavior is exclusive and non-negotiable: while a Call ID value is present, there is no way to combine it with Date Range, Agents, Status, Direction, Success, Goal, Tags, Evaluations, Latency range, or Suspicious calls. If you need a combined search, clear the Call ID field first and use the other filters instead.
Filter calls by dynamic tags that are automatically generated based on call content, outcomes, and agent behaviors, using a chip-based multi-select field with live autocomplete.
1
Start Typing a Tag
Click into the Tags field and start typing. A dropdown appears listing existing tags that match what you’ve typed.
2
Select a Suggested Tag
Click a suggestion to add it as a chip in the field. You can add multiple tags this way to filter for calls matching any of them.
3
Remove a Tag
Click the ✕ on any tag chip to remove just that tag, or clear the field entirely to remove all tag filters at once.
The tags filter provides:
Dynamic Tag Generation - Tags are automatically created based on call analysis
Autocomplete Suggestions - Existing tags are suggested as you type, so you don’t need to remember exact spelling
Multi-Select Capability - Select multiple tags to find calls matching any or all criteria
Real-time Updates - Tag list updates as new calls are processed
Custom Tag Support - Manual tags can be added to calls for additional categorization
The Tags filter is visible by default in the Filter Bar, so it’s ready to use as soon as you open Call History. You can still hide it from the ⚙️ filter settings panel if you prefer a more minimal filter set. Like all other filters, it is temporarily disabled while a Call ID search is active.
Filter calls based on evaluation status, letting you quickly locate calls that are pending review, partially evaluated, or fully completed.
Available options include:
Completed - Calls with all evaluations processed
Pending - Calls waiting for evaluation
Partial - Calls with some but not all evaluations completed
This filter is hidden by default in a minimal setup and can be enabled from the filter visibility panel (⚙️) whenever you need deeper evaluation-based analysis. It is also disabled while a Call ID search is active, following the same priority behavior as the rest of the filters.
Save your most-used filter combinations as presets for quick access to common search patterns.
Create and manage filter presets:
1
Configure Filters
Set up your desired combination of filters (date range, agents, status, latency range, suspicious calls, etc.)
2
Save as Preset
Click “Save Preset” and give it a descriptive name
3
Quick Access
Access saved presets from the preset dropdown for instant filter application
4
Manage Presets
Edit or delete presets as your filtering needs evolve
Filter presets and column saved views are independent: a filter preset remembers which calls you’re looking at, while a saved view remembers which columns you see. Pair a specific preset with a specific saved view for a fully repeatable workflow — for example, “Suspicious + Last 7 Days” alongside a “Review & audit” column layout that keeps Reviewed pinned and visible.
The interface now includes improved visual feedback:
Indicator
Meaning
🟦 Blue Badge
Active filter with values selected
🔢 Count Badge
Number of items selected in multi-select filters (agents, tags)
🚫 Disabled State
Filter temporarily disabled (e.g., during Call ID search)
⚙️ Settings Icon
Opens the filter visibility configuration panel (controls Goal, Tags, Evaluations, and Call ID)
👁️ Hidden Filter
Filter is configured as not visible in the current view, but may still hold an active value affecting your results
✨ Preset Active
A saved preset is currently applied
The 👁️ Hidden Filter indicator is especially useful right after enabling the Call ID search: once you clear it, glance at the ⚙️ panel to confirm which of your previously hidden filters silently came back into play.
The call table displays key information for each call with enhanced visual design:
Column
Description
Selection
Checkbox to select calls
Status
Call status badge with color coding
Success
✓ or ✗ indicator with evaluation context
Agent
Name of the agent that handled the call
Agent ID (optional)
The agent’s ID, shown as a compact copyable badge
Call ID (optional)
The call’s ID, shown as a compact copyable badge
Direction
📞 Inbound or 📲 Outbound with clear icons
From
Caller phone number with formatting
To
Recipient phone number with formatting
Duration
Call length in minutes:seconds
Date
When the call occurred with relative time
Tags
Dynamic tags associated with the call
LLM (optional)
Language model(s) that handled the call
LLM detail (optional)
Turn-by-turn breakdown of model usage
Avg AI latency (optional)
Mean AI response latency for the call
Max latency (optional)
Highest AI response latency recorded in the call
Latency (turns) (optional)
Sparkline of latency per turn
Reviewed (pinned)
Audit/review status with an inline note editor
(any input/output field you’ve added)
Dynamic column sourced from an agent’s input parameters or structured output
The LLM, LLM detail, Avg AI latency, Max latency, and Latency (turns) columns are optional. In the classic Call History table they’re hidden by default and can be enabled from the column customizer; in the improved calls view, Avg AI latency and Latency (turns) are visible out of the box.
These two columns surface the underlying language model activity for every call, which is especially useful for agents built on ElevenLabs’ conversational stack, where a model cascade can automatically fall back to a secondary model mid-call if the primary one becomes unavailable or degrades.
Column
What it shows
LLM
The distinct model(s) used during the call, listed in the order they were engaged (e.g. a single model like gpt-4o, or multiple models such as gpt-4o + gpt-4o-mini if a fallback occurred).
LLM detail
An expandable, turn-by-turn breakdown showing exactly which model handled each conversational turn and at what point in the call the switch happened.
1
Enable the Columns
Open the column manager above the Call Table and toggle on LLM and/or LLM detail to add them to your view.
2
Read the LLM Column
Each row shows the model(s) used for that call. A single model name means the call ran entirely on the primary model with no fallback.
3
Spot Degradations
When a call shows more than one model in the LLM column, it means the ElevenLabs cascade degraded at least once during the call — falling back from the primary model to a secondary one. This is the same detection logic used in the call details modal.
4
Drill Into LLM Detail
Expand the LLM detail column (or open the call in the Details Modal) to see the exact timestamp of each turn and which model produced it, helping you pinpoint when and why a degradation happened.
Use the LLM column together with the Status and Success filters to quickly check whether cascade degradations correlate with lower success rates or specific agents, then dig deeper with LLM detail on the affected calls.
For calls made before model cascade tracking was introduced, the LLM column falls back to the legacy single model_used value when no multi-model data is available. In that case, no degradation can be detected for those older calls.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Meetzy Docs","colors":{"primary":"#0D9373","light":"#07C983","dark":"#0D9373"},"logo":{"light":"https://mintcdn.com/meetzy/sglnJPmd7ymrztkk/logo/light.png?fit=max\u0026auto=format\u0026n=sglnJPmd7ymrztkk\u0026q=85\u0026s=88dbf5cf85e77b8f1f2e2ba85cdce5c9","dark":"https://mintcdn.com/meetzy/sglnJPmd7ymrztkk/logo/dark.png?fit=max\u0026auto=format\u0026n=sglnJPmd7ymrztkk\u0026q=85\u0026s=d383fd534f6aba2a9a8ea2cd1263322e"},"favicon":"https://mintcdn.com/meetzy/sUNHnyLMCEC7q_al/favicon.svg?fit=max\u0026auto=format\u0026n=sUNHnyLMCEC7q_al\u0026q=85\u0026s=10219ef2e6738c9f913a956b94425e5b","navbar":{"links":[{"href":"mailto:support@meetzy.io","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.meetzy.io"}},"footer":{"socials":{"twitter":"https://twitter.com/meetzy_io","linkedin":"https://www.linkedin.com/company/meetzy"}},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":"getting-started/introduction"},{"language":"es","href":"es/getting-started/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"meetzy","hasAudioNarration":false,"actualSubdomain":"meetzy","customDomains":["docs.meetzy.es"],"gitSource":{"type":"github","owner":"meetzyio","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae9e588ceeb4d4d9de63a9a","collectionId":"1fc09061-9675-4dd0-bac8-25fe11f64c2e","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae9e588ceeb4d4d9de63a9a"},"feedback":{"thumbs":true,"issues":true,"edits":true,"agentFeedback":true},"entitlements":{},"buildId":"6ae9e588ceeb4d4d9de63a9a","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"en","tag":"Documentation","count":30},{"language":"es","tag":"Documentación","count":30},{"language":"en","tag":"Advanced Editor","count":12},{"language":"es","tag":"Editor Avanzado","count":12},{"language":"en","tag":"API Reference","count":7},{"language":"es","tag":"API Reference","count":7},{"language":"en","tag":"Account","count":4},{"language":"en","tag":"Endpoints","count":4},{"language":"en","tag":"Calls","count":4},{"language":"es","tag":"Cuenta","count":4},{"language":"es","tag":"Endpoints","count":4},{"language":"es","tag":"Llamadas","count":4},{"language":"en","tag":"Agents","count":3},{"language":"en","tag":"CRM","count":3},{"language":"es","tag":"Agentes","count":3},{"language":"es","tag":"CRM","count":3},{"language":"en","tag":"Getting Started","count":2},{"language":"en","tag":"Voice Library","count":2},{"language":"es","tag":"Primeros Pasos","count":2},{"language":"es","tag":"Biblioteca de Voces","count":2}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"calls/call-history","slug":"/calls/call-history","pageMetadata":{"title":"Call History","description":"Search, filter, and review all your AI agent calls with advanced filtering, auditing, and customization","icon":"phone","href":"/calls/call-history"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Search, filter, and review all your AI agent calls with advanced filtering, auditing, and customization\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Info,Step,Steps,Tab,Table,Tabs,Tip,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`call-history`,children:`Call History`}),`\n`,_jsx(_components.p,{children:`The Call History section provides a comprehensive view of all calls made by your AI agents. You can search, filter, and analyze call data to monitor performance and identify insights with powerful filtering capabilities, an audit/review workflow, and customizable views.`}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`A banner now sits at the very top of this page, letting you switch at any time between the `,_jsx(_components.strong,{children:`classic Call History table`}),` and the `,_jsx(_components.strong,{children:`new, improved Calls view`}),`. Both views are documented separately — this page covers the improved view; head over to `,_jsx(_components.a,{href:`/calls/call-history-classic`,children:`Call History (Classic)`}),` for a full walkthrough of the original table if you’re using that view instead.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`accessing-call-history`,children:`Accessing Call History`}),`\n`,_jsxs(_components.p,{children:[`Navigate to `,_jsx(_components.strong,{children:`Calls`}),` in the main menu to access your complete call history. This now opens the improved calls view (`,_jsx(_components.strong,{children:`Calls v2`}),`) by default.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`Calls v2 brings `,_jsx(_components.strong,{children:`fully configurable, drag-and-drop columns`}),` (including dynamic input/output fields grouped by agent, with key columns pinned to the right edge), `,_jsx(_components.strong,{children:`saved views`}),`, `,_jsx(_components.strong,{children:`real AI latency metrics with a per-turn detail chart`}),`, an `,_jsx(_components.strong,{children:`expanded filter bar`}),` (date presets, multi-agent selection, tag autocomplete, exact Call ID, latency range, and a one-click “suspicious calls” filter), a built-in `,_jsx(_components.strong,{children:`review/audit workflow`}),` with per-call notes, and an `,_jsx(_components.strong,{children:`Excel export`}),` that can target either all filtered calls or just your current selection.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`switching-between-views`,children:`Switching Between Views`}),`\n`,_jsx(_components.p,{children:`A notice banner sits at the very top of the page reminding you that you’re on the new Calls view.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Notice the Banner`,children:_jsx(_components.p,{children:`At the top of the page, a highlighted banner reads “You’re viewing the new Calls page.”`})}),_jsx(Step,{title:`Switch Back if Needed`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Switch back to the classic view`}),` in the banner to be taken to `,_jsx(_components.code,{children:`/calls-old`}),`, the original Call History table, if you run into something that doesn’t yet behave as expected in the new view.`]})}),_jsx(Step,{title:`Return Anytime`,children:_jsx(_components.p,{children:`Both views read from the same underlying call data, so you can move back and forth between them without losing information — only view-specific preferences like column layout or saved views live separately per view.`})})]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`This same toggle works in both directions: whether you land here from the main menu or arrive via a direct link, the banner at the top of the page always offers a one-click way back to the classic table, and the classic table offers an equivalent way forward into this improved view. See `,_jsx(_components.a,{href:`/calls/call-history-classic`,children:`Call History (Classic)`}),` for the documentation covering that table in detail.`]})}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`The banner is a safety net during the transition to the new view, not a permanent fixture — treat the classic view as a fallback rather than your primary workflow going forward.`})}),`\n`,_jsx(Heading,{level:`2`,id:`interface-overview`,children:`Interface Overview`}),`\n`,_jsx(_components.p,{children:`The calls interface consists of:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Section`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`🟡 Notice Banner`}),_jsx(_components.td,{children:`Reminder that you’re on the new view, with a link back to the classic table`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`📊 Header`}),_jsx(_components.td,{children:`Title, description, Views menu, Columns manager, and export actions`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`🔍 Filter Bar`}),_jsx(_components.td,{children:`Advanced filtering controls with visibility management`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`⚙️ Columns`}),_jsx(_components.td,{children:`Configurable, draggable columns including dynamic agent fields, pinned columns, and saved views`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`📋 Call Table`}),_jsx(_components.td,{children:`List of all calls with key information, including review status`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`📄 Details Modal`}),_jsx(_components.td,{children:`Detailed view of individual calls, including a full AI latency chart`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`configurable-columns`,children:`Configurable Columns`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`The improved calls view lets you fully control which columns appear, in what order, and even add columns sourced directly from each agent’s input parameters or structured output — no need to open a call individually to see a specific data point.`})}),`\n`,_jsxs(_components.p,{children:[`Click the `,_jsx(_components.strong,{children:`⚙️ Columns`}),` button above the table to open the column manager panel. It’s organized into three areas:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Section`}),_jsx(_components.th,{children:`Purpose`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Input columns`})}),_jsxs(_components.td,{children:[`Discover fields from each agent’s input parameters (`,_jsx(_components.code,{children:`call.data`}),`) and add them as columns, grouped by agent`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Columns`})}),_jsx(_components.td,{children:`Manage visibility and order of all currently active columns — fixed and dynamic — via drag and drop`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Output columns`})}),_jsxs(_components.td,{children:[`Discover fields from each agent’s structured output (`,_jsx(_components.code,{children:`call.output`}),`) and add them as columns, grouped by agent`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Saved column layouts live in the separate `,_jsx(_components.strong,{children:`👁️ Views`}),` menu next to the Columns button — see `,_jsx(_components.a,{href:`#saved-views`,children:`Saved Views`}),` below.`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the Column Manager`,children:_jsxs(_components.p,{children:[`Click the `,_jsx(_components.strong,{children:`⚙️ Columns`}),` button next to the Export to Excel button to open the column configuration drawer.`]})}),_jsx(Step,{title:`Reorder Columns`,children:_jsxs(_components.p,{children:[`In the `,_jsx(_components.strong,{children:`Columns`}),` section, drag any row using the ⠿ handle to reorder it. The table updates its column order live as you drag.`]})}),_jsx(Step,{title:`Show or Hide Columns`,children:_jsxs(_components.p,{children:[`Use the checkbox next to each column name to toggle its visibility. Columns marked as non-toggleable (such as `,_jsx(_components.strong,{children:`Actions`}),`) always remain visible.`]})}),_jsx(Step,{title:`Add a Dynamic Column from Input or Output`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Input columns`}),` or `,_jsx(_components.strong,{children:`Output columns`}),`, find the field you need under the relevant agent group (grouped and collapsible per agent), and click `,_jsx(_components.strong,{children:`Add`}),`. The field appears immediately as a new column, placed just before the pinned columns, and is tagged with an `,_jsx(_components.strong,{children:`input`}),`/`,_jsx(_components.strong,{children:`output`}),` badge in the Columns list.`]})}),_jsx(Step,{title:`Remove a Dynamic Column`,children:_jsx(_components.p,{children:`Dynamic columns display a small ✕ button next to their badge in the Columns list. Click ✕ to remove them from your view entirely.`})}),_jsx(Step,{title:`Reset to Defaults`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Reset to default columns`}),` at the bottom of the panel to discard all customizations and restore the original column set.`]})})]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Your column configuration — order, visibility, and any dynamic columns you’ve added — is saved automatically per user and restored the next time you open the view. There’s no manual save step.`})}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Dynamic columns are tied to the agent and field path they were created from. If an agent stops sending a particular input or output field, that column will simply show empty values for calls where the data is missing, rather than being removed automatically.`})}),`\n`,_jsx(Heading,{level:`3`,id:`pinned-columns`,children:`Pinned Columns`}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`A small number of columns are `,_jsx(_components.strong,{children:`pinned to the right edge`}),` of the table so they stay visible regardless of how many columns you add or how far you scroll horizontally.`]})}),`\n`,_jsxs(_components.p,{children:[`By default, `,_jsx(_components.strong,{children:`Reviewed`}),` and `,_jsx(_components.strong,{children:`Actions`}),` are pinned. This keeps your audit status and row-level actions within reach even when you’ve added several dynamic input/output columns that push the table wide.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Pinned columns are visually grouped together at the right edge — if you rely heavily on the review workflow, keep the `,_jsx(_components.strong,{children:`Reviewed`}),` column pinned rather than hiding it, so you always know which calls in view still need attention.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`saved-views`,children:`Saved Views`}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`Beyond your single auto-saved layout, the `,_jsx(_components.strong,{children:`👁️ Views`}),` menu (next to the Columns button in the header) lets you keep multiple `,_jsx(_components.strong,{children:`named views`}),` — for example, one focused on latency troubleshooting and another focused on audit review — and switch between them instantly.`]})}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Configure a Layout`,children:_jsx(_components.p,{children:`Show, hide, reorder, and add dynamic columns until the table matches the view you want to save.`})}),_jsx(Step,{title:`Open the Views Menu`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`👁️ Views`}),` in the header to open the saved views panel.`]})}),_jsx(Step,{title:`Name and Save`,children:_jsxs(_components.p,{children:[`Type a name into the `,_jsx(_components.strong,{children:`New view name…`}),` field and click `,_jsx(_components.strong,{children:`Save current`}),`. The current column configuration is stored as a new saved view.`]})}),_jsx(Step,{title:`Apply a Saved View`,children:_jsx(_components.p,{children:`Click on any saved view’s name in the list to instantly replace your current column configuration with that view’s layout.`})}),_jsx(Step,{title:`Delete a Saved View`,children:_jsx(_components.p,{children:`Click the ✕ next to a saved view to remove it. This only deletes the saved view itself — it doesn’t change your currently active columns.`})})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Saved views only capture the `,_jsx(_components.strong,{children:`column configuration`}),` (which columns, their order, and visibility) — they don’t store filters, sorting, or page size. Combine a saved view with a filter preset for a fully repeatable workflow.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`legacy-column-configuration-migration`,children:`Legacy Column Configuration Migration`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`If you previously customized columns in the classic Call History table, that layout isn’t lost — the improved view automatically imports it the first time you open it.`})}),`\n`,_jsxs(_components.p,{children:[`The first time a user opens the improved calls view without any existing saved preferences, the system performs a `,_jsx(_components.strong,{children:`one-time, automatic migration`}),`:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Step`}),_jsx(_components.th,{children:`What happens`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`1`}),_jsx(_components.td,{children:`The improved view checks your browser’s local storage for a legacy column configuration saved from the classic Call History table`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`2`}),_jsx(_components.td,{children:`Fixed columns that exist in both the old and new default sets carry over their visibility setting`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`3`}),_jsx(_components.td,{children:`Any dynamic input or output columns you had added in the classic table are reconstructed as-is, keeping their label, path, and source`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`4`}),_jsx(_components.td,{children:`Your previous sort column, sort direction, and page size are applied if present`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`5`}),_jsx(_components.td,{children:`The migrated configuration is saved to your account immediately, so it’s available even if you switch devices or browsers afterward`})]})]})]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`This migration is read-only and runs only once. It reads from the browser’s local storage, so it only applies on the same browser/device where you originally customized the classic table. If you’ve already opened the improved view before, or already have saved preferences for it, the migration is skipped and your existing improved-view configuration is used instead.`})}),`\n`,_jsx(Heading,{level:`3`,id:`default-column-set`,children:`Default Column Set`}),`\n`,_jsx(_components.p,{children:`Out of the box, the improved view includes:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Column`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Date`}),_jsx(_components.td,{children:`When the call occurred`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Agent`}),_jsx(_components.td,{children:`Name of the agent that handled the call`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Agent ID`}),_jsx(_components.td,{children:`The agent’s unique identifier, shown as a compact copyable badge`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Call ID`}),_jsx(_components.td,{children:`The call’s unique identifier, shown as a compact copyable badge`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`From`}),_jsx(_components.td,{children:`Caller phone number`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Status`}),_jsx(_components.td,{children:`Call status badge`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Goal`}),_jsx(_components.td,{children:`Success indicator based on evaluations`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Duration`}),_jsx(_components.td,{children:`Call length`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Avg AI latency`}),_jsx(_components.td,{children:`Average AI response latency for the call`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Latency (turns)`}),_jsx(_components.td,{children:`Compact sparkline of latency across the call’s turns`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Tags`}),_jsx(_components.td,{children:`Dynamic tags associated with the call`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Recording`}),_jsx(_components.td,{children:`Access to the call recording player`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Reviewed `,_jsx(_components.em,{children:`(pinned)`})]}),_jsx(_components.td,{children:`Audit/review status for the call, with an inline note editor`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Actions `,_jsx(_components.em,{children:`(pinned)`})]}),_jsx(_components.td,{children:`Row-level quick actions`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Additional columns such as `,_jsx(_components.strong,{children:`To`}),`, `,_jsx(_components.strong,{children:`Max latency`}),`, `,_jsx(_components.strong,{children:`Company`}),`, `,_jsx(_components.strong,{children:`Email`}),`, `,_jsx(_components.strong,{children:`Summary`}),`, `,_jsx(_components.strong,{children:`Type`}),`, `,_jsx(_components.strong,{children:`Hung up by`}),`, and `,_jsx(_components.strong,{children:`Agent duration`}),` are available but hidden by default — enable them from the column manager as needed.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Agent ID`}),` and `,_jsx(_components.strong,{children:`Call ID`}),` columns render as compact badges showing only the last 10 characters with a one-click copy button — handy for grabbing an exact ID to paste into the Call ID filter without cluttering the row with a full UUID.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`review-\u0026-audit-workflow`,children:`Review \u0026 Audit Workflow`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Every call can now be marked as reviewed and annotated with a free-text note directly from the table — no need to leave Call History to track your QA process.`})}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Reviewed`}),` column (pinned to the right by default) is the entry point for the audit workflow:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Element`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Reviewed toggle`})}),_jsx(_components.td,{children:`Marks the call as reviewed or not yet reviewed, visually distinguished in the column`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Note popover`})}),_jsx(_components.td,{children:`An inline editor attached to the Reviewed column where you can write a free-text audit note for that specific call`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Auto-save`})}),_jsx(_components.td,{children:`Notes are saved automatically shortly after you stop typing, without a separate save button`})]})]})]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the Review Popover`,children:_jsxs(_components.p,{children:[`Click the `,_jsx(_components.strong,{children:`Reviewed`}),` cell for any call to open its inline note editor.`]})}),_jsx(Step,{title:`Mark as Reviewed`,children:_jsx(_components.p,{children:`Toggle the call’s reviewed status to indicate it has been audited.`})}),_jsx(Step,{title:`Write an Audit Note`,children:_jsx(_components.p,{children:`Type your observations, findings, or QA comments directly into the note field. Your input is debounced and saved automatically a moment after you stop typing.`})}),_jsx(Step,{title:`Close the Popover`,children:_jsx(_components.p,{children:`Click anywhere outside the popover to close it. Only one review popover can be open at a time, so opening a new one automatically closes any other that was active.`})}),_jsx(Step,{title:`Revisit Later`,children:_jsx(_components.p,{children:`Reopen the Reviewed cell for any call at any time to read or edit the existing note — your review history for that call is preserved.`})})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Combine the Reviewed column with a saved filter preset (for example “Failed + Last 7 Days”) and a saved column view that keeps `,_jsx(_components.strong,{children:`Reviewed`}),` and `,_jsx(_components.strong,{children:`Tags`}),` visible, to build a repeatable QA sweep: filter down to the calls you need to audit, review each one, leave a note, and move to the next.`]})}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Review status and notes are stored per call and are visible to anyone with access to Call History — treat audit notes as shared team documentation rather than private scratch notes.`})}),`\n`,_jsx(Heading,{level:`2`,id:`ai-latency-metrics`,children:`AI Latency Metrics`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Every call now tracks how quickly your AI agent responded throughout the conversation, giving you a direct signal of conversational responsiveness independent of call outcome or duration.`})}),`\n`,_jsx(_components.p,{children:`The improved view surfaces AI latency at three levels of detail:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Metric`}),_jsx(_components.th,{children:`Column`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Average latency`})}),_jsx(_components.td,{children:`Avg AI latency`}),_jsx(_components.td,{children:`The mean AI response latency (in milliseconds) across all turns in the call`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Maximum latency`})}),_jsx(_components.td,{children:`Max latency`}),_jsx(_components.td,{children:`The single highest response latency recorded during the call — useful for spotting worst-case delays`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Per-turn sparkline`})}),_jsx(_components.td,{children:`Latency (turns)`}),_jsx(_components.td,{children:`A compact inline chart showing how latency evolved turn by turn, without leaving the table`})]})]})]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Scan Averages at a Glance`,children:_jsxs(_components.p,{children:[`Sort the table by `,_jsx(_components.strong,{children:`Avg AI latency`}),` to quickly identify calls or agents with consistently slow responses.`]})}),_jsx(Step,{title:`Spot Outliers with Max Latency`,children:_jsxs(_components.p,{children:[`Enable the `,_jsx(_components.strong,{children:`Max latency`}),` column (hidden by default) to catch calls with an isolated but severe delay that the average might hide.`]})}),_jsx(Step,{title:`Read the Sparkline`,children:_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Latency (turns)`}),` column renders a lightweight line for each call, plotting latency per turn. A rising line toward the end of a call can indicate the agent slowing down as the conversation got more complex.`]})}),_jsx(Step,{title:`Open the Full Latency Detail Modal`,children:_jsx(_components.p,{children:`Click into a call’s details to open the dedicated AI latency modal: a full, interactive chart plotting latency per turn, with exact millisecond values on hover and the timestamp of each turn along the X axis.`})})]}),`\n`,_jsx(Heading,{level:`3`,id:`latency-detail-modal`,children:`Latency Detail Modal`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`The latency detail modal turns the compact table sparkline into a full-size, turn-by-turn chart so you can pinpoint exactly where a call slowed down.`})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Feature`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Per-turn chart`})}),_jsx(_components.td,{children:`Every AI turn in the call is plotted as a point, connected in chronological order`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Exact values on hover`})}),_jsx(_components.td,{children:`Hovering a point shows the precise latency in milliseconds for that specific turn`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Timestamp axis`})}),_jsx(_components.td,{children:`The X axis reflects when each turn occurred during the call, making it easy to correlate spikes with a stage of the conversation`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Visual outlier detection`})}),_jsx(_components.td,{children:`Sudden jumps in the line stand out immediately compared to scanning raw numbers in a table`})]})]})]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Combine latency metrics with the LLM and LLM detail columns to check whether latency spikes correlate with a model cascade fallback — a secondary model taking over mid-call can sometimes explain a sudden increase in response time. Open the latency detail modal and the LLM detail breakdown side by side for the same call to confirm.`})}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Latency data depends on the underlying voice provider reporting response timing for each turn. Calls made before latency tracking was enabled, or through integrations that don’t report this data, will show empty values for these columns and an empty chart in the detail modal.`})}),`\n`,_jsx(Heading,{level:`2`,id:`recording-player-with-waveform`,children:`Recording Player with Waveform`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`The recording player has been upgraded from a simple audio control to a full waveform-based player, built from the actual decoded audio of the call — not a generic placeholder animation. It also includes a rich, per-turn conversational view when detailed provider data is available.`})}),`\n`,_jsxs(_components.p,{children:[`Click the `,_jsx(_components.strong,{children:`Recording`}),` column on any call to open the player modal, which includes:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Feature`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Real waveform`})}),_jsx(_components.td,{children:`Rendered directly from the decoded audio, showing actual amplitude across the call`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Click-to-seek`})}),_jsx(_components.td,{children:`Click anywhere on the waveform to jump to that point in the recording`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Playback progress`})}),_jsx(_components.td,{children:`The waveform visually fills in as the recording plays, distinguishing played from unplayed audio`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Skip controls`})}),_jsx(_components.td,{children:`Jump backward or forward 10 seconds with dedicated buttons`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Playback speed`})}),_jsx(_components.td,{children:`Choose from 0.5x, 0.75x, 1x, 1.25x, 1.5x, or 2x speed`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Rich synced transcript`})}),_jsx(_components.td,{children:`Per-turn transcript with latency badges (ASR, TTS, LLM), the LLM model used, and expandable tool call/result details, when available`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Fallback transcript`})}),_jsx(_components.td,{children:`Falls back to a plain text transcript automatically if detailed per-turn provider data isn’t available for that call`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Download`})}),_jsx(_components.td,{children:`Download the recording file directly from the modal`})]})]})]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the Player`,children:_jsx(_components.p,{children:`Click the Recording column for any call with an available recording.`})}),_jsx(Step,{title:`Review the Waveform`,children:_jsx(_components.p,{children:`Wait for the audio to load and decode — the waveform renders automatically once ready, reflecting the real amplitude of the call.`})}),_jsx(Step,{title:`Seek and Adjust Speed`,children:_jsx(_components.p,{children:`Click on any part of the waveform to jump there instantly, or use the speed buttons to review a section more quickly or more carefully.`})}),_jsx(Step,{title:`Cross-Reference with the Transcript`,children:_jsx(_components.p,{children:`Use the transcript panel next to the player to follow along with what’s being said as you scrub through the recording. Expand latency or tool badges on any turn for a deeper technical breakdown of that moment in the call.`})})]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Because the waveform is built from decoded audio rather than a static image, longer recordings may take a moment to render on first open. Once decoded, seeking and speed changes are instant.`})}),`\n`,_jsx(Heading,{level:`2`,id:`excel-export`,children:`Excel Export`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Exporting to Excel respects exactly what you see: only the columns currently visible in your table — in the order you’ve arranged them — are included in the exported file, including any dynamic input/output columns you’ve added and the current review status/notes.`})}),`\n`,_jsx(_components.p,{children:`Two export options are available side by side in the header:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Button`}),_jsx(_components.th,{children:`Scope`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Export to Excel`})}),_jsx(_components.td,{children:`Exports every call matching your current filters, across all pages`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Export selection (N)`})}),_jsx(_components.td,{children:`Appears only once you’ve checked one or more rows; exports only those selected calls`})]})]})]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Configure Your View`,children:_jsx(_components.p,{children:`Use the column manager to show, hide, and reorder columns until the table reflects exactly the data you want to export. Apply a saved view first if you have one ready for this purpose.`})}),_jsx(Step,{title:`Apply Your Filters`,children:_jsx(_components.p,{children:`Narrow down the calls you want using the filter bar, since the full export follows the currently filtered result set.`})}),_jsx(Step,{title:`Choose Full or Selective Export`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Export to Excel`}),` to export every filtered call, or select specific rows with the checkboxes and click `,_jsx(_components.strong,{children:`Export selection (N)`}),` to export only those calls — useful when you’ve hand-picked a set of calls during a review session.`]})}),_jsx(Step,{title:`Watch the Export State`,children:_jsx(_components.p,{children:`The button shows an “Exporting…” state while the file is being generated.`})}),_jsx(Step,{title:`Open the File`,children:_jsx(_components.p,{children:`The downloaded spreadsheet mirrors your visible columns and their order, including any dynamic agent input/output fields you’ve added and the Reviewed status/notes, making it easy to share exactly the view you were working with.`})})]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`“Export selection” is a natural companion to the review workflow: mark and annotate the calls you’ve audited, select them, and export just that batch as a record of your QA pass — without pulling in every other call matching your filters.`})}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`If you hide a column after exporting, previously downloaded files aren’t affected retroactively — each export is a snapshot of your column configuration, filters, and (for selective exports) selection at that moment.`})}),`\n`,_jsx(Heading,{level:`2`,id:`advanced-filter-system`,children:`Advanced Filter System`}),`\n`,_jsx(Heading,{level:`3`,id:`filter-visibility-configuration`,children:`Filter Visibility Configuration`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Customize which filters are visible in your interface to streamline your workflow and focus on the most relevant filtering options.`})}),`\n`,_jsxs(_components.p,{children:[`A dedicated `,_jsx(_components.strong,{children:`⚙️ settings button`}),` is located at the end of the Filter Bar, next to the filter controls. It opens a configuration panel that lets you show or hide individual filters without affecting your applied filter values.`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open Filter Settings`,children:_jsx(_components.p,{children:`Click the ⚙️ settings icon at the right end of the Filter Bar to open the filter visibility panel.`})}),_jsxs(Step,{title:`Toggle Individual Filters`,children:[_jsx(_components.p,{children:`Use the checkboxes to show or hide each of the following filters independently:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Goal`}),` — filter calls by the agent’s configured goal or objective`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Tags`}),` — filter by dynamic or custom tags`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Evaluations`}),` — filter by evaluation completion or outcome`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Call ID`}),` — the direct database lookup search field, matched on the exact ID`]}),`\n`]}),_jsx(_components.p,{children:`Core filters such as Date Range, Agents, Status, Direction, Success, Latency range, and Suspicious calls are always visible and cannot be hidden, since they are considered essential for everyday use.`})]}),_jsx(Step,{title:`Apply and Close`,children:_jsx(_components.p,{children:`Close the panel by clicking outside of it or pressing the settings icon again. Hidden filters are immediately removed from the Filter Bar, freeing up space for the ones you actually use.`})}),_jsx(Step,{title:`Automatic Persistence`,children:_jsx(_components.p,{children:`Your filter visibility preferences are saved automatically per user and restored the next time you open Call History — no need to reconfigure them on every visit.`})})]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`By default, the `,_jsx(_components.strong,{children:`Tags`}),` filter is visible in the Filter Bar out of the box, so you don’t need to open the settings panel to start filtering calls by tags. Goal, Evaluations, and Call ID remain part of the same visibility configuration and follow their own default state, which you can adjust at any time.`]})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`If a filter is hidden but has an active value from a previous session, it will remain applied to your results even though it’s not visible. Re-enable the filter from the settings panel to review or clear it. Look for the 👁️ `,_jsx(_components.strong,{children:`Hidden Filter`}),` indicator near the settings icon — it appears whenever a hidden filter still holds an active value, so you always know your results are being narrowed by something you can’t currently see.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`date-range-filter`,children:`Date Range Filter`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`The date range filter now offers a much wider set of quick presets, from short rolling windows measured in minutes to full calendar months, alongside a fully custom range with time precision.`})}),`\n`,_jsx(_components.p,{children:`Click the date range field to open the preset picker:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Preset`}),_jsx(_components.th,{children:`Range covered`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Last 15 minutes`}),_jsx(_components.td,{children:`Rolling 15-minute window ending now`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Last 30 minutes`}),_jsx(_components.td,{children:`Rolling 30-minute window ending now`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Last 1 hour`}),_jsx(_components.td,{children:`Rolling 1-hour window ending now`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Last 2 hours`}),_jsx(_components.td,{children:`Rolling 2-hour window ending now`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Last 4 hours`}),_jsx(_components.td,{children:`Rolling 4-hour window ending now`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Last 8 hours`}),_jsx(_components.td,{children:`Rolling 8-hour window ending now`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Today`}),_jsx(_components.td,{children:`Start of today through end of today`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Yesterday`}),_jsx(_components.td,{children:`Start of yesterday through end of yesterday`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Last 7 days`}),_jsx(_components.td,{children:`7 days ago through end of today`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Last 30 days`}),_jsx(_components.td,{children:`30 days ago through end of today`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`This month`}),_jsx(_components.td,{children:`Start of the current calendar month through its end`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Last month`}),_jsx(_components.td,{children:`The entire previous calendar month`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Custom range`}),_jsx(_components.td,{children:`Manually chosen start and end date/time`})]})]})]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the Picker`,children:_jsx(_components.p,{children:`Click the date range field in the Filter Bar to reveal the list of presets.`})}),_jsx(Step,{title:`Pick a Preset`,children:_jsx(_components.p,{children:`Click any preset to apply it instantly — the field updates to reflect your selection and the table refreshes.`})}),_jsx(Step,{title:`Or Set a Custom Range`,children:_jsxs(_components.p,{children:[`Scroll to the `,_jsx(_components.strong,{children:`Custom range`}),` section at the bottom of the picker and set an exact `,_jsx(_components.strong,{children:`From`}),` and `,_jsx(_components.strong,{children:`To`}),` date and time using the datetime inputs.`]})}),_jsx(Step,{title:`Confirm`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Done`}),` to close the picker once your custom range is set.`]})})]}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Use the datetime picker to set precise time ranges for your searches. The filter automatically adjusts to your local timezone.`})}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`The short rolling-window presets (15 minutes up to 8 hours) are especially useful right after a batch of outbound calls finishes, letting you review the very latest results without having to construct a custom range.`})}),`\n`,_jsx(Heading,{level:`3`,id:`multi-select-agent-filter-with-searchable-combobox`,children:`Multi-Select Agent Filter with Searchable Combobox`}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`The Agent filter is a typeahead combobox that supports selecting `,_jsx(_components.strong,{children:`multiple agents at once`}),`, so it stays fast and usable even when your account has hundreds of agents and you need to compare a handful of them together.`]})}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Start Typing`,children:_jsx(_components.p,{children:`Click into the Agent field and type any part of the agent’s name. As soon as the field is focused, a dropdown of matching agents appears.`})}),_jsx(Step,{title:`Filter as You Type`,children:_jsx(_components.p,{children:`The list narrows in real time to agents whose name contains what you’ve typed, capped to the closest matches so the dropdown stays responsive.`})}),_jsx(Step,{title:`Select One or More Agents`,children:_jsx(_components.p,{children:`Click an agent from the list to add it as a chip inside the field. Keep typing and selecting to add additional agents — each selected agent appears as its own removable chip.`})}),_jsx(Step,{title:`Remove a Single Agent`,children:_jsx(_components.p,{children:`Click the ✕ on any chip to remove just that agent from the selection, keeping the rest of your filter intact.`})}),_jsx(Step,{title:`Clear All Agents`,children:_jsx(_components.p,{children:`Click the ✕ at the end of the field to remove every selected agent at once and return to viewing calls from all agents.`})})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`When filtering by a single agent, the `,_jsx(_components.strong,{children:`“View Evaluation Trends”`}),` button appears next to the agent chip for quick access to performance analytics.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`status-filter`,children:`Status Filter`}),`\n`,_jsx(_components.p,{children:`Filter by call status with visual indicators:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`Description`}),_jsx(_components.th,{children:`Indicator`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`🟢 Completed`}),_jsx(_components.td,{children:`Call finished successfully`}),_jsx(_components.td,{children:`Green badge`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`🟡 In Progress`}),_jsx(_components.td,{children:`Call currently active`}),_jsx(_components.td,{children:`Yellow badge`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`🔴 Failed`}),_jsx(_components.td,{children:`Call encountered an error`}),_jsx(_components.td,{children:`Red badge`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`⚪ No Answer`}),_jsx(_components.td,{children:`Recipient didn’t answer`}),_jsx(_components.td,{children:`White badge`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`🔵 Transferred`}),_jsx(_components.td,{children:`Call was transferred`}),_jsx(_components.td,{children:`Blue badge`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`direction-filter`,children:`Direction Filter`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Inbound`}),` - Calls received by your agents with 📞 icon`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Outbound`}),` - Calls initiated by your agents with 📲 icon`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`All`}),` - Both directions`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`success-filter`,children:`Success Filter`}),`\n`,_jsx(_components.p,{children:`Filter by call outcome with enhanced evaluation criteria:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Successful`}),` - Calls marked as successful based on your evaluations`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Unsuccessful`}),` - Calls that didn’t meet success criteria`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`All`}),` - All calls regardless of outcome`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`goal-filter`,children:`Goal Filter`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`The Goal filter lets you narrow down calls by the objective configured on the agent, making it easier to review calls tied to a specific business intent (e.g., booking, qualification, support resolution).`})}),`\n`,_jsx(_components.p,{children:`This filter can be shown or hidden from the filter visibility panel described above. It is hidden by default; enable it from the ⚙️ settings panel if you need to filter calls by their configured goal.`}),`\n`,_jsx(_components.p,{children:`Like every optional filter, Goal is temporarily disabled the moment you start a Call ID search — see below for why.`}),`\n`,_jsx(Heading,{level:`3`,id:`latency-range-filter`,children:`Latency Range Filter`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Filter calls by their average AI response latency to isolate calls that were noticeably fast or slow, without needing to open the latency detail modal one call at a time.`})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Min latency`})}),_jsx(_components.td,{children:`Only show calls whose average AI latency is at or above this value (in milliseconds)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Max latency`})}),_jsx(_components.td,{children:`Only show calls whose average AI latency is at or below this value (in milliseconds)`})]})]})]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Set a Minimum`,children:_jsxs(_components.p,{children:[`Enter a value in `,_jsx(_components.strong,{children:`Min latency`}),` to exclude calls that responded faster than that threshold.`]})}),_jsx(Step,{title:`Set a Maximum`,children:_jsxs(_components.p,{children:[`Enter a value in `,_jsx(_components.strong,{children:`Max latency`}),` to exclude calls that responded slower than that threshold.`]})}),_jsx(Step,{title:`Combine Both`,children:_jsx(_components.p,{children:`Use both fields together to isolate a specific latency band, for example calls between 1500 ms and 3000 ms, to investigate a particular tier of responsiveness.`})}),_jsx(Step,{title:`Clear the Range`,children:_jsx(_components.p,{children:`Empty either field to remove that bound and widen the results again.`})})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Pair the latency range filter with the `,_jsx(_components.strong,{children:`Avg AI latency`}),` and `,_jsx(_components.strong,{children:`Latency (turns)`}),` columns so you can immediately see, row by row, why each call matched your threshold.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`suspicious-calls-filter`,children:`Suspicious Calls Filter`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`The “Suspicious calls” filter is a one-click way to surface calls that are more likely to need a closer look, without manually combining several filters yourself.`})}),`\n`,_jsxs(_components.p,{children:[`Enabling this filter highlights calls that match `,_jsx(_components.strong,{children:`any`}),` of the following conditions:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Condition`}),_jsx(_components.th,{children:`Why it’s flagged`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`High average latency`}),_jsx(_components.td,{children:`The call’s average AI response latency exceeds a built-in threshold (3000 ms)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Problematic status`}),_jsxs(_components.td,{children:[`The call ended as `,_jsx(_components.strong,{children:`no-answer`}),`, `,_jsx(_components.strong,{children:`failed`}),`, or `,_jsx(_components.strong,{children:`blocked`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Goal not met`}),_jsx(_components.td,{children:`The call’s evaluations indicate its configured goal wasn’t achieved`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Missing transcript`}),_jsx(_components.td,{children:`No transcript was captured for the call at all`})]})]})]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Enable the Filter`,children:_jsxs(_components.p,{children:[`Toggle `,_jsx(_components.strong,{children:`Suspicious calls`}),` on in the Filter Bar.`]})}),_jsx(Step,{title:`Review the Narrowed Results`,children:_jsx(_components.p,{children:`The table updates to show only calls matching at least one of the suspicious conditions above.`})}),_jsx(Step,{title:`Investigate Each Call`,children:_jsx(_components.p,{children:`Open each flagged call’s details, recording, or latency chart to determine whether it needs a review note, a tag, or escalation.`})}),_jsx(Step,{title:`Mark as Reviewed`,children:_jsxs(_components.p,{children:[`Use the `,_jsx(_components.strong,{children:`Reviewed`}),` column to mark calls you’ve checked and leave an audit note, so the next pass through your suspicious calls doesn’t re-cover the same ground.`]})})]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`Unlike Min/Max latency or Status, which apply a strict AND to your other filters, “Suspicious calls” applies an `,_jsx(_components.strong,{children:`OR`}),` across its own internal conditions — a call needs to match only one of them to show up, since each condition on its own is a reasonable independent signal of a problematic call.`]})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Combine “Suspicious calls” with a date range like `,_jsx(_components.strong,{children:`Today`}),` or `,_jsx(_components.strong,{children:`Last 24 hours`}),` to build a quick daily triage habit: check what’s suspicious since yesterday, review it, and clear the queue.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`exact-call-id-search`,children:`Exact Call ID Search`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`When using Call ID search, all other filters are temporarily disabled to ensure precise lookups.`})}),`\n`,_jsxs(_components.p,{children:[`The Call ID filter performs a `,_jsx(_components.strong,{children:`direct, exact-match`}),` database lookup and has `,_jsx(_components.strong,{children:`exclusive priority over every other filter`}),` in the Filter Bar. As soon as you start typing a value into the Call ID field, all remaining filters (Date Range, Agents, Status, Direction, Success, Goal, Tags, Evaluations, Latency range, and Suspicious calls) become visually disabled and are excluded from the query — the interface greys them out and blocks interaction with them to make it clear that only the Call ID lookup is active.`]}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Think of it as a small measurement problem: the moment you observe the system through a Call ID, every other possible filter state “collapses” — much like a quantum measurement collapsing a wave function into a single outcome. Before you type an ID, the Filter Bar exists in a superposition of Date Range, Agents, Status, Direction, Success, Goal, Tags, Evaluations, Latency range, and Suspicious calls, all potentially active at once. The instant a Call ID value is present, that superposition resolves into a single, deterministic state: exactly one call, found by its exact ID, with no other filter contributing to the result.`})}),`\n`,_jsx(_components.p,{children:`Enhanced Call ID functionality with database search:`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Enter Call ID`,children:_jsxs(_components.p,{children:[`Type the specific call ID in the dedicated search field. You can also copy an ID directly from the `,_jsx(_components.strong,{children:`Call ID`}),` column’s compact badge (or the row’s Copy ID quick action) and paste it here. As soon as a value is present, the rest of the filters switch to a disabled visual state.`]})}),_jsx(Step,{title:`Database Query`,children:_jsx(_components.p,{children:`The system performs a direct database lookup for the exact call ID, ignoring any values currently set in other filters. Partial or fuzzy matches are not returned — the ID must match exactly.`})}),_jsx(Step,{title:`Instant Results`,children:_jsx(_components.p,{children:`The matching call is displayed immediately, bypassing all other filters.`})}),_jsx(Step,{title:`Clear Search`,children:_jsx(_components.p,{children:`Remove the call ID to restore normal filtering functionality. All previously configured filters are automatically re-enabled and reapplied — the “superposition” is restored exactly as you left it.`})})]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Like the Goal and Evaluations filters, the Call ID field is hidden from the Filter Bar by default and can be enabled from the filter visibility settings (⚙️) whenever your workflow requires manual, exact ID lookups.`})}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`This priority behavior is exclusive and non-negotiable: while a Call ID value is present, there is no way to combine it with Date Range, Agents, Status, Direction, Success, Goal, Tags, Evaluations, Latency range, or Suspicious calls. If you need a combined search, clear the Call ID field first and use the other filters instead.`})}),`\n`,_jsx(Heading,{level:`3`,id:`dynamic-tags-filter-with-autocomplete`,children:`Dynamic Tags Filter with Autocomplete`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Filter calls by dynamic tags that are automatically generated based on call content, outcomes, and agent behaviors, using a chip-based multi-select field with live autocomplete.`})}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Start Typing a Tag`,children:_jsx(_components.p,{children:`Click into the Tags field and start typing. A dropdown appears listing existing tags that match what you’ve typed.`})}),_jsx(Step,{title:`Select a Suggested Tag`,children:_jsx(_components.p,{children:`Click a suggestion to add it as a chip in the field. You can add multiple tags this way to filter for calls matching any of them.`})}),_jsx(Step,{title:`Remove a Tag`,children:_jsx(_components.p,{children:`Click the ✕ on any tag chip to remove just that tag, or clear the field entirely to remove all tag filters at once.`})})]}),`\n`,_jsx(_components.p,{children:`The tags filter provides:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Dynamic Tag Generation`}),` - Tags are automatically created based on call analysis`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Autocomplete Suggestions`}),` - Existing tags are suggested as you type, so you don’t need to remember exact spelling`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Multi-Select Capability`}),` - Select multiple tags to find calls matching any or all criteria`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Real-time Updates`}),` - Tag list updates as new calls are processed`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Custom Tag Support`}),` - Manual tags can be added to calls for additional categorization`]}),`\n`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`The Tags filter is `,_jsx(_components.strong,{children:`visible by default`}),` in the Filter Bar, so it’s ready to use as soon as you open Call History. You can still hide it from the ⚙️ filter settings panel if you prefer a more minimal filter set. Like all other filters, it is temporarily disabled while a Call ID search is active.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`evaluations-filter`,children:`Evaluations Filter`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Filter calls based on evaluation status, letting you quickly locate calls that are pending review, partially evaluated, or fully completed.`})}),`\n`,_jsx(_components.p,{children:`Available options include:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Completed`}),` - Calls with all evaluations processed`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Pending`}),` - Calls waiting for evaluation`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Partial`}),` - Calls with some but not all evaluations completed`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This filter is hidden by default in a minimal setup and can be enabled from the filter visibility panel (⚙️) whenever you need deeper evaluation-based analysis. It is also disabled while a Call ID search is active, following the same priority behavior as the rest of the filters.`}),`\n`,_jsx(Heading,{level:`3`,id:`filter-presets`,children:`Filter Presets`}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Save your most-used filter combinations as presets for quick access to common search patterns.`})}),`\n`,_jsx(_components.p,{children:`Create and manage filter presets:`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Configure Filters`,children:_jsx(_components.p,{children:`Set up your desired combination of filters (date range, agents, status, latency range, suspicious calls, etc.)`})}),_jsx(Step,{title:`Save as Preset`,children:_jsx(_components.p,{children:`Click “Save Preset” and give it a descriptive name`})}),_jsx(Step,{title:`Quick Access`,children:_jsx(_components.p,{children:`Access saved presets from the preset dropdown for instant filter application`})}),_jsx(Step,{title:`Manage Presets`,children:_jsx(_components.p,{children:`Edit or delete presets as your filtering needs evolve`})})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Filter presets and column saved views are independent: a filter preset remembers `,_jsx(_components.em,{children:`which calls`}),` you’re looking at, while a saved view remembers `,_jsx(_components.em,{children:`which columns`}),` you see. Pair a specific preset with a specific saved view for a fully repeatable workflow — for example, “Suspicious + Last 7 Days” alongside a “Review \u0026 audit” column layout that keeps Reviewed pinned and visible.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`enhanced-visual-indicators`,children:`Enhanced Visual Indicators`}),`\n`,_jsx(Heading,{level:`3`,id:`filter-status-indicators`,children:`Filter Status Indicators`}),`\n`,_jsx(_components.p,{children:`The interface now includes improved visual feedback:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Indicator`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`🟦 Blue Badge`}),_jsx(_components.td,{children:`Active filter with values selected`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`🔢 Count Badge`}),_jsx(_components.td,{children:`Number of items selected in multi-select filters (agents, tags)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`🚫 Disabled State`}),_jsx(_components.td,{children:`Filter temporarily disabled (e.g., during Call ID search)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`⚙️ Settings Icon`}),_jsx(_components.td,{children:`Opens the filter visibility configuration panel (controls Goal, Tags, Evaluations, and Call ID)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`👁️ Hidden Filter`}),_jsx(_components.td,{children:`Filter is configured as not visible in the current view, but may still hold an active value affecting your results`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`✨ Preset Active`}),_jsx(_components.td,{children:`A saved preset is currently applied`})]})]})]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`The 👁️ Hidden Filter indicator is especially useful right after enabling the Call ID search: once you clear it, glance at the ⚙️ panel to confirm which of your previously hidden filters silently came back into play.`})}),`\n`,_jsx(Heading,{level:`3`,id:`selection-status`,children:`Selection Status`}),`\n`,_jsx(_components.p,{children:`When calls are selected:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Selection Counter`}),` - Shows “Export selection (N)” in the header once at least one call is checked`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Bulk Action Bar`}),` - Appears with available actions for selected calls`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Clear Selection`}),` - One-click option to deselect all calls`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`call-table`,children:`Call Table`}),`\n`,_jsx(_components.p,{children:`The call table displays key information for each call with enhanced visual design:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Column`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Selection`}),_jsx(_components.td,{children:`Checkbox to select calls`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Status`}),_jsx(_components.td,{children:`Call status badge with color coding`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Success`}),_jsx(_components.td,{children:`✓ or ✗ indicator with evaluation context`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Agent`}),_jsx(_components.td,{children:`Name of the agent that handled the call`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Agent ID `,_jsx(_components.em,{children:`(optional)`})]}),_jsx(_components.td,{children:`The agent’s ID, shown as a compact copyable badge`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Call ID `,_jsx(_components.em,{children:`(optional)`})]}),_jsx(_components.td,{children:`The call’s ID, shown as a compact copyable badge`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Direction`}),_jsx(_components.td,{children:`📞 Inbound or 📲 Outbound with clear icons`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`From`}),_jsx(_components.td,{children:`Caller phone number with formatting`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`To`}),_jsx(_components.td,{children:`Recipient phone number with formatting`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Duration`}),_jsx(_components.td,{children:`Call length in minutes:seconds`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Date`}),_jsx(_components.td,{children:`When the call occurred with relative time`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Tags`}),_jsx(_components.td,{children:`Dynamic tags associated with the call`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`LLM `,_jsx(_components.em,{children:`(optional)`})]}),_jsx(_components.td,{children:`Language model(s) that handled the call`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`LLM detail `,_jsx(_components.em,{children:`(optional)`})]}),_jsx(_components.td,{children:`Turn-by-turn breakdown of model usage`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Avg AI latency `,_jsx(_components.em,{children:`(optional)`})]}),_jsx(_components.td,{children:`Mean AI response latency for the call`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Max latency `,_jsx(_components.em,{children:`(optional)`})]}),_jsx(_components.td,{children:`Highest AI response latency recorded in the call`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Latency (turns) `,_jsx(_components.em,{children:`(optional)`})]}),_jsx(_components.td,{children:`Sparkline of latency per turn`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Reviewed `,_jsx(_components.em,{children:`(pinned)`})]}),_jsx(_components.td,{children:`Audit/review status with an inline note editor`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.em,{children:`(any input/output field you’ve added)`})}),_jsx(_components.td,{children:`Dynamic column sourced from an agent’s input parameters or structured output`})]})]})]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`LLM`}),`, `,_jsx(_components.strong,{children:`LLM detail`}),`, `,_jsx(_components.strong,{children:`Avg AI latency`}),`, `,_jsx(_components.strong,{children:`Max latency`}),`, and `,_jsx(_components.strong,{children:`Latency (turns)`}),` columns are optional. In the classic Call History table they’re hidden by default and can be enabled from the column customizer; in the improved calls view, `,_jsx(_components.strong,{children:`Avg AI latency`}),` and `,_jsx(_components.strong,{children:`Latency (turns)`}),` are visible out of the box.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`llm-and-llm-detail-columns`,children:`LLM and LLM Detail Columns`}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`These two columns surface the underlying language model activity for every call, which is especially useful for agents built on ElevenLabs’ conversational stack, where a `,_jsx(_components.strong,{children:`model cascade`}),` can automatically fall back to a secondary model mid-call if the primary one becomes unavailable or degrades.`]})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Column`}),_jsx(_components.th,{children:`What it shows`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`LLM`})}),_jsxs(_components.td,{children:[`The distinct model(s) used during the call, listed in the order they were engaged (e.g. a single model like `,_jsx(_components.code,{children:`gpt-4o`}),`, or multiple models such as `,_jsx(_components.code,{children:`gpt-4o + gpt-4o-mini`}),` if a fallback occurred).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`LLM detail`})}),_jsx(_components.td,{children:`An expandable, turn-by-turn breakdown showing exactly which model handled each conversational turn and at what point in the call the switch happened.`})]})]})]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Enable the Columns`,children:_jsxs(_components.p,{children:[`Open the column manager above the Call Table and toggle on `,_jsx(_components.strong,{children:`LLM`}),` and/or `,_jsx(_components.strong,{children:`LLM detail`}),` to add them to your view.`]})}),_jsx(Step,{title:`Read the LLM Column`,children:_jsx(_components.p,{children:`Each row shows the model(s) used for that call. A single model name means the call ran entirely on the primary model with no fallback.`})}),_jsx(Step,{title:`Spot Degradations`,children:_jsxs(_components.p,{children:[`When a call shows `,_jsx(_components.strong,{children:`more than one model`}),` in the LLM column, it means the ElevenLabs cascade degraded at least once during the call — falling back from the primary model to a secondary one. This is the same detection logic used in the call details modal.`]})}),_jsx(Step,{title:`Drill Into LLM Detail`,children:_jsx(_components.p,{children:`Expand the LLM detail column (or open the call in the Details Modal) to see the exact timestamp of each turn and which model produced it, helping you pinpoint when and why a degradation happened.`})})]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Use the LLM column together with the Status and Success filters to quickly check whether cascade degradations correlate with lower success rates or specific agents, then dig deeper with LLM detail on the affected calls.`})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`For calls made before model cascade tracking was introduced, the LLM column falls back to the legacy single `,_jsx(_components.code,{children:`model_used`}),` value when no multi-model data is available. In that case, no degradation can be detected for those older calls.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`bulk-actions`,children:`Bulk Actions`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Selection`,id:`selection`,children:[_jsx(_components.p,{children:`When you select multiple calls:`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.strong,{children:`“Export selection (N)”`}),` button appears in the header, next to the general `,_jsx(_components.strong,{children:`Export to Excel`}),` button`]}),`\n`,_jsx(_components.li,{children:`Bulk export options become available immediately, no separate confirmation step required`}),`\n`,_jsx(_components.li,{children:`Additional bulk actions appear in the action bar`}),`\n`,_jsx(_components.li,{children:`Deselect individual rows or clear the whole selection to hide the selective export button again`}),`\n`]})]}),_jsxs(Tab,{title:`Export`,id:`export`,children:[_jsx(_components.p,{children:`Export filtered results:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Excel export that follows your currently visible columns, their order, and review status`}),`\n`,_jsx(_components.li,{children:`CSV format for spreadsheet analysis (classic view)`}),`\n`,_jsx(_components.li,{children:`JSON format for technical analysis (classic view)`}),`\n`,_jsx(_components.li,{children:`PDF reports for presentations (classic view)`}),`\n`,_jsx(_components.li,{children:`Include/exclude specific columns via the column manager before exporting`}),`\n`]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`enhanced-sorting`,children:`Enhanced Sorting`}),`\n`,_jsx(_components.p,{children:`Click column headers to sort with improved indicators:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Single Click`}),` - Ascending order with ↑ arrow`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Double Click`}),` - Descending order with ↓ arrow`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Sort Memory`}),` - Last sort preference is remembered`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Multi-Column Sort`}),` - Hold Shift to sort by multiple columns`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`pagination`,children:`Pagination`}),`\n`,_jsx(_components.p,{children:`Enhanced pagination controls:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Smart Page Sizes`}),` - 25, 50, 100, 300 calls per page`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Jump to Page`}),` - Direct page number input`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Results Counter`}),` - “Showing X to Y of Z calls” with total count`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Performance Optimization`}),` - Efficient loading for large datasets`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`quick-actions`,children:`Quick Actions`}),`\n`,_jsx(_components.p,{children:`For each call row with improved accessibility:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Action`}),_jsx(_components.th,{children:`Description`}),_jsx(_components.th,{children:`Shortcut`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`👁️ View`}),_jsx(_components.td,{children:`Open call details modal`}),_jsx(_components.td,{children:`Click row`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`📋 Copy ID`}),_jsx(_components.td,{children:`Copy call ID to clipboard`}),_jsx(_components.td,{children:`Copy button on the Call ID badge`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`🏷️ Add Tags`}),_jsx(_components.td,{children:`Add custom tags to the call`}),_jsx(_components.td,{children:`Tag icon`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`📊 Analytics`}),_jsx(_components.td,{children:`Quick performance insights`}),_jsx(_components.td,{children:`Chart icon`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`▶️ Play Recording`}),_jsx(_components.td,{children:`Open the waveform recording player`}),_jsx(_components.td,{children:`Recording column`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{}),_jsx(_components.td,{}),_jsx(_components.td,{})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Call History","description":"Search, filter, and review all your AI agent calls with advanced filtering, auditing, and customization","icon":"phone","href":"/calls/call-history"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Call History","slug":"call-history","depth":1,"children":[]},{"title":"Accessing Call History","slug":"accessing-call-history","depth":2,"children":[{"title":"Switching Between Views","slug":"switching-between-views","depth":3,"children":[]}]},{"title":"Interface Overview","slug":"interface-overview","depth":2,"children":[]},{"title":"Configurable Columns","slug":"configurable-columns","depth":2,"children":[{"title":"Pinned Columns","slug":"pinned-columns","depth":3,"children":[]},{"title":"Saved Views","slug":"saved-views","depth":3,"children":[]},{"title":"Legacy Column Configuration Migration","slug":"legacy-column-configuration-migration","depth":3,"children":[]},{"title":"Default Column Set","slug":"default-column-set","depth":3,"children":[]}]},{"title":"Review \u0026 Audit Workflow","slug":"review-\u0026-audit-workflow","depth":2,"children":[]},{"title":"AI Latency Metrics","slug":"ai-latency-metrics","depth":2,"children":[{"title":"Latency Detail Modal","slug":"latency-detail-modal","depth":3,"children":[]}]},{"title":"Recording Player with Waveform","slug":"recording-player-with-waveform","depth":2,"children":[]},{"title":"Excel Export","slug":"excel-export","depth":2,"children":[]},{"title":"Advanced Filter System","slug":"advanced-filter-system","depth":2,"children":[{"title":"Filter Visibility Configuration","slug":"filter-visibility-configuration","depth":3,"children":[]},{"title":"Date Range Filter","slug":"date-range-filter","depth":3,"children":[]},{"title":"Multi-Select Agent Filter with Searchable Combobox","slug":"multi-select-agent-filter-with-searchable-combobox","depth":3,"children":[]},{"title":"Status Filter","slug":"status-filter","depth":3,"children":[]},{"title":"Direction Filter","slug":"direction-filter","depth":3,"children":[]},{"title":"Success Filter","slug":"success-filter","depth":3,"children":[]},{"title":"Goal Filter","slug":"goal-filter","depth":3,"children":[]},{"title":"Latency Range Filter","slug":"latency-range-filter","depth":3,"children":[]},{"title":"Suspicious Calls Filter","slug":"suspicious-calls-filter","depth":3,"children":[]},{"title":"Exact Call ID Search","slug":"exact-call-id-search","depth":3,"children":[]},{"title":"Dynamic Tags Filter with Autocomplete","slug":"dynamic-tags-filter-with-autocomplete","depth":3,"children":[]},{"title":"Evaluations Filter","slug":"evaluations-filter","depth":3,"children":[]},{"title":"Filter Presets","slug":"filter-presets","depth":3,"children":[]}]},{"title":"Enhanced Visual Indicators","slug":"enhanced-visual-indicators","depth":2,"children":[{"title":"Filter Status Indicators","slug":"filter-status-indicators","depth":3,"children":[]},{"title":"Selection Status","slug":"selection-status","depth":3,"children":[]}]},{"title":"Call Table","slug":"call-table","depth":2,"children":[{"title":"LLM and LLM Detail Columns","slug":"llm-and-llm-detail-columns","depth":3,"children":[]},{"title":"Bulk Actions","slug":"bulk-actions","depth":3,"children":[]},{"title":"Enhanced Sorting","slug":"enhanced-sorting","depth":3,"children":[]}]},{"title":"Pagination","slug":"pagination","depth":2,"children":[]},{"title":"Quick Actions","slug":"quick-actions","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"meetzy","siteName":"Meetzy Docs","title":"Call History - Meetzy Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/calls/call-history","matchLevel":0},"es":{"href":"/es/calls/call-history","matchLevel":1}}},"lastModified":"2026-08-18T11:56:53.497Z","originalFileLocation":"calls/call-history.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Search, filter, and review all your AI agent calls with advanced filtering, auditing, and customization\">\u003cmeta data-mint-head name=\"application-name\" content=\"Meetzy Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/meetzy/ivXQnnVQAoNicdfd/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/meetzy/ivXQnnVQAoNicdfd/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/meetzy/ivXQnnVQAoNicdfd/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/meetzy/ivXQnnVQAoNicdfd/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/meetzy/ivXQnnVQAoNicdfd/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/meetzy/ivXQnnVQAoNicdfd/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/meetzy/ivXQnnVQAoNicdfd/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/meetzy/ivXQnnVQAoNicdfd/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/meetzy/ivXQnnVQAoNicdfd/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Call History - Meetzy Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Search, filter, and review all your AI agent calls with advanced filtering, auditing, and customization\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Meetzy Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.meetzy.es/calls/call-history\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://meetzy.mintlify.app/_mintlify/api/og/v2?division=Calls\u0026amp;title=Call+History\u0026amp;description=Search%2C+filter%2C+and+review+all+your+AI+agent+calls+with+advanced+filtering%2C+auditing%2C+and+customization\u0026amp;theme=b57b1f5f75c28c80e59664f9\u0026amp;signature=ec16a6f190231f484b214972036355fa1a4fc1e7211f5abed30811a7eee01369\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Call History - Meetzy Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Search, filter, and review all your AI agent calls with advanced filtering, auditing, and customization\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://meetzy.mintlify.app/_mintlify/api/og/v2?division=Calls\u0026amp;title=Call+History\u0026amp;description=Search%2C+filter%2C+and+review+all+your+AI+agent+calls+with+advanced+filtering%2C+auditing%2C+and+customization\u0026amp;theme=b57b1f5f75c28c80e59664f9\u0026amp;signature=ec16a6f190231f484b214972036355fa1a4fc1e7211f5abed30811a7eee01369\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/meetzy/ivXQnnVQAoNicdfd/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Meetzy Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0D9373\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.meetzy.es/calls/call-history\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/calls/call-history.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.meetzy.es/calls/call-history\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://docs.meetzy.es/es/calls/call-history\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.meetzy.es/calls/call-history\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.meetzy.es/#organization\",\"name\":\"Meetzy Docs\",\"url\":\"https://docs.meetzy.es\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/meetzy/sglnJPmd7ymrztkk/logo/light.png?fit=max\u0026auto=format\u0026n=sglnJPmd7ymrztkk\u0026q=85\u0026s=88dbf5cf85e77b8f1f2e2ba85cdce5c9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.meetzy.es#website\",\"name\":\"Meetzy Docs\",\"url\":\"https://docs.meetzy.es\",\"publisher\":{\"@id\":\"https://docs.meetzy.es/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.meetzy.es/calls/call-history#webpage\",\"url\":\"https://docs.meetzy.es/calls/call-history\",\"name\":\"Call History\",\"description\":\"Search, filter, and review all your AI agent calls with advanced filtering, auditing, and customization\",\"dateModified\":\"2026-08-18T11:56:53.497Z\",\"isPartOf\":{\"@id\":\"https://docs.meetzy.es#website\"},\"breadcrumb\":{\"@id\":\"https://docs.meetzy.es/calls/call-history#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.meetzy.es/calls/call-history#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Meetzy Docs\",\"item\":\"https://docs.meetzy.es\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Call History\",\"item\":\"https://docs.meetzy.es/calls/call-history\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.meetzy.es/calls/call-history#article\",\"headline\":\"Call History\",\"name\":\"Call History\",\"description\":\"Search, filter, and review all your AI agent calls with advanced filtering, auditing, and customization\",\"url\":\"https://docs.meetzy.es/calls/call-history\",\"mainEntityOfPage\":{\"@id\":\"https://docs.meetzy.es/calls/call-history#webpage\"},\"dateModified\":\"2026-08-18T11:56:53.497Z\",\"publisher\":{\"@id\":\"https://docs.meetzy.es/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.meetzy.es#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Meetzy Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Meetzy Docs","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Documentation","groups":[{"group":"Getting Started","pages":[{"title":"Introduction to Meetzy","icon":"robot","href":"/getting-started/introduction"},{"title":"Create Your First Agent","icon":"plus","href":"/getting-started/create-agent"}]},{"group":"Agents","pages":[{"title":"Manage Agents","icon":"robot","href":"/agents/manage-agents"},{"title":"Configure Phone Numbers","icon":"phone","href":"/agents/phone-numbers"},{"title":"Phone Health","icon":"signal","href":"/agents/phone-health"}]},{"group":"Advanced Editor","pages":[{"title":"Introduction to Advanced Editor","icon":"wand-magic-sparkles","href":"/advanced-editor/introduction"},{"title":"Basic Settings","icon":"gear","href":"/advanced-editor/basic-settings"},{"title":"Greetings","icon":"hand-wave","href":"/advanced-editor/greetings"},{"title":"Knowledge Base","icon":"book","href":"/advanced-editor/knowledge-base"},{"title":"Actions \u0026 Tools","icon":"wrench","href":"/advanced-editor/actions-tools"},{"title":"Input Parameters","icon":"arrow-right-to-bracket","href":"/advanced-editor/input-params"},{"title":"Output Settings","icon":"arrow-right-from-bracket","href":"/advanced-editor/output-settings"},{"title":"Evaluations","icon":"check-double","href":"/advanced-editor/evaluations"},{"title":"Playground","icon":"gamepad","href":"/advanced-editor/playground"},{"title":"Tests","icon":"clipboard-check","href":"/advanced-editor/tests"},{"title":"Copilot","icon":"robot","href":"/advanced-editor/copilot"},{"title":"Version History","icon":"clock-rotate-left","href":"/advanced-editor/version-history"}]},{"group":"Voice Library","pages":[{"title":"Choose a Voice","icon":"microphone","href":"/voices/choose-voice"},{"title":"Voice Designer","description":"Create custom voices tailored to your specific needs","icon":"palette","href":"/voices/voice-designer"}]},{"group":"Calls","pages":[{"title":"Call History","icon":"phone","href":"/calls/call-history"},{"title":"Call Details","description":"View transcription, recording, input/output data, and more for each call","icon":"file-lines","href":"/calls/call-details"},{"title":"Reporting System","icon":"chart-bar","href":"/calls/reporting"},{"title":"Advanced Calls View","icon":"table-list","href":"/calls/advanced-view"}]},{"group":"CRM","pages":[{"title":"Import Contacts","icon":"file-import","href":"/crm/import-contacts"},{"title":"Segments","icon":"layer-group","href":"/crm/segments"},{"title":"Campaigns","icon":"bullhorn","href":"/crm/campaigns"}]},{"group":"Account","pages":[{"title":"Team Members","icon":"users","href":"/account/team-members"},{"title":"Permissions \u0026 Roles","icon":"user-shield","href":"/account/permissions"},{"title":"API Tokens","icon":"key","href":"/account/api-tokens"},{"title":"Support Tickets","icon":"ticket","href":"/account/support-tickets"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},{"language":"es","pages":[{"title":"es","href":"/es/calls/call-history"}]}]},"basePath":"","title":"Call History - Meetzy Docs","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":[],"chunks":[]}