Skip to main content

Call History

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.

Accessing Call History

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.

Switching Between Views

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.

Interface Overview

The calls interface consists of:

Configurable Columns

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: 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.

Pinned Columns

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.

Saved Views

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.

Legacy Column Configuration Migration

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:
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.

Default Column Set

Out of the box, the improved view includes: 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.

Review & Audit Workflow

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:
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.

AI Latency Metrics

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:
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.

Latency Detail Modal

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.
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.

Recording Player with Waveform

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:
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.

Excel Export

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:
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.

Advanced Filter System

Filter Visibility Configuration

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.

Date Range Filter

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:
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.

Status Filter

Filter by call status with visual indicators:

Direction Filter

  • Inbound - Calls received by your agents with 📞 icon
  • Outbound - Calls initiated by your agents with 📲 icon
  • All - Both directions

Success Filter

Filter by call outcome with enhanced evaluation criteria:
  • Successful - Calls marked as successful based on your evaluations
  • Unsuccessful - Calls that didn’t meet success criteria
  • All - All calls regardless of outcome

Goal Filter

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.

Latency Range Filter

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.
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.

Suspicious Calls Filter

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:
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.

Dynamic Tags Filter with Autocomplete

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.

Evaluations Filter

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.

Filter Presets

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.

Enhanced Visual Indicators

Filter Status Indicators

The interface now includes improved visual feedback:
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.

Selection Status

When calls are selected:
  • Selection Counter - Shows “Export selection (N)” in the header once at least one call is checked
  • Bulk Action Bar - Appears with available actions for selected calls
  • Clear Selection - One-click option to deselect all calls

Call Table

The call table displays key information for each call with enhanced visual design:
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.

LLM and LLM Detail Columns

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.
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.

Bulk Actions

When you select multiple calls:
  1. The “Export selection (N)” button appears in the header, next to the general Export to Excel button
  2. Bulk export options become available immediately, no separate confirmation step required
  3. Additional bulk actions appear in the action bar
  4. Deselect individual rows or clear the whole selection to hide the selective export button again

Enhanced Sorting

Click column headers to sort with improved indicators:
  • Single Click - Ascending order with ↑ arrow
  • Double Click - Descending order with ↓ arrow
  • Sort Memory - Last sort preference is remembered
  • Multi-Column Sort - Hold Shift to sort by multiple columns

Pagination

Enhanced pagination controls:
  • Smart Page Sizes - 25, 50, 100, 300 calls per page
  • Jump to Page - Direct page number input
  • Results Counter - “Showing X to Y of Z calls” with total count
  • Performance Optimization - Efficient loading for large datasets

Quick Actions

For each call row with improved accessibility: