> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voxworks.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Batch Analytics & Data Export

> How to read a batch's results — headline metrics, end-reason and objective donuts, the calls table — and how to export the data your agent collected as a CSV.

## Overview

Once a batch has launched, its detail page turns into a results dashboard. The **Summary** tab shows headline metrics, charts and a call-by-call table that update live as calls complete, and the **Data Collection** tab aggregates everything your agent captured on those calls into a filterable table you can download as a CSV.

There are two ways in:

* **From the Batch Scheduler page** — click a batch row to open its Batch Summary panel, then press the **Batch Analytics** button.
* **From the batch itself** — open the batch and select the **Summary** tab. Before launch this tab shows "Ready for launch"; after launch it shows the full analytics view.

This page covers the Summary tab's analytics sections, the quick Batch Summary panel, where to watch capacity and pacing, and the Data Collection export.

***

## Batch Metrics

The **Batch Metrics** card at the top of the Summary tab gives the headline numbers. A caption line above the figures shows **Started** (the batch's start date and time), **Average Duration** and **Total Duration** (talk time across all calls that connected).

| Metric                    | What it means                                                                                                                        |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| **Scheduled Calls**       | Every call in the batch, including retry attempts.                                                                                   |
| **Completed Calls**       | Calls that reached Completed status.                                                                                                 |
| **Primary Objective Met** | Calls where the first Call Objective on the script was achieved.                                                                     |
| **Completion Rate**       | Completed Calls as a percentage of Scheduled Calls, shown as a donut.                                                                |
| **Conversation >30s**     | Of completed calls that weren't voicemail, the percentage that lasted longer than 30 seconds — a quick proxy for real conversations. |
| **Voicemail Rate**        | The percentage of completed calls that ended in voicemail.                                                                           |

The three rate metrics render as small donuts so you can read the batch's health at a glance.

***

## Call Analysis charts

The **Call Analysis** section pairs two charts:

* **Call Distribution by Time** — one bar per connected call, placed on a timeline of when the call happened. Bar height is the call's duration in seconds and bar colour is its end reason (a legend above the chart maps colours to reasons). Hover over a bar to see the contact's name, the call's duration, its end reason and the exact time. This chart makes pacing problems visible — clusters of short orange bars, for example, are a voicemail-heavy stretch.
* **End Reason** — a donut of how completed calls ended (Customer Ended, Assistant Ended, Machine Detected, and so on), with the total call count under the title. Segments large enough to label show their percentage, and the legend below lists each reason with its count. Hover over a segment for the exact count and percentage.

End reasons and statuses are explained in full on [Call Statuses & End Reasons](/calls/statuses).

***

## Call Objectives

The **Call Objectives** section aggregates the objective results from every call in the batch:

* **Primary Objective** — a donut showing the achievement rate of the script's first objective, with the achieved/total count underneath.
* **All Objectives** — a donut combining every objective across every call.
* **Objectives Summary** — a progress bar per objective, showing its description, how many calls achieved it, and the percentage.

A toggle at the top right switches the calculation base between **All calls** and **Completed** — unanswered and failed calls can't achieve objectives, so the Completed view is usually the fairer read on how the script performed in real conversations.

***

## Source Lists performance

If the batch draws its contacts from source lists, a **Source Lists** section compares them side by side: each list's priority rank, name, the script it ran (or "Batch default" if it uses the batch's script), an **A/B** badge where the list is an A/B variant, and two bar metrics — **Completion** and **Primary objective** — each shown as a percentage with its count. This is where an A/B script test is read: the same completion and primary-objective figures as the rest of the page, broken out per list so you can compare variants directly. See [Source Lists, Allocation & A/B Testing](/batches/source-lists) for how the variants are set up.

***

## All Calls table

The **All Calls** section lists every call in the batch. Click any column heading to sort, and click a row to open the full call details panel — summary, objectives, transcript and analysis, exactly as on the Call Log (see [Call Details](/calls/call-details)).

| Column         | Description                                                                                                                                     |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| (status dot)   | A coloured dot for the call's status — hover to read it. Green for completed, animated blue for in progress, red for failed outcomes.           |
| **Contact**    | The contact's name. Retry attempts show a small counter beside the name ("Retry attempt `{n}`").                                                |
| **Phone**      | The number that was dialled.                                                                                                                    |
| **Time**       | When the call actually happened.                                                                                                                |
| **Duration**   | The call's length.                                                                                                                              |
| **Evaluation** | The call's overall success/failure evaluation, as a badge.                                                                                      |
| **Objectives** | For completed calls, one tick per objective (hover for the objective's description); for other calls, a Success / Fail / Mixed / Pending badge. |
| **End reason** | How the call ended.                                                                                                                             |
| **Actions**    | Per-call follow-up actions (below).                                                                                                             |

Two follow-up actions are available on each row:

* **Re-dial** — opens the **Reschedule Call** dialog ("Select a new date and time to reschedule the call with `{contact}`"). Pick a future date and time and press **Reschedule**; a toast confirms "Call rescheduled successfully".
* **Send Email** — opens your mail client with a follow-up email addressed to the contact.

A **Send SMS** button also appears alongside these actions but isn't yet functional.

The whole Summary tab is live: as batch calls complete, the metrics, charts and table update without a refresh.

***

## The Batch Summary panel

On the **Batch Scheduler** page, clicking a batch row opens a compact **Batch Summary** panel beside the table — useful for a quick check without leaving the list. It shows the batch's **Call Script**, **List**, **Status**, **Start Date/Time**, **Total Calls**, **Remaining Calls**, **Calls Completed** (as a count and percentage), **Total Time** and **Average Time**, followed by a sortable calls table. The **Batch Analytics** button at the top opens the full Summary tab described above, and the **Actions** dropdown offers **Add New Calls** (see [Adding Contacts to a Batch](/batches/adding-contacts)) and **Cancel Batch**.

***

## Capacity and schedule progress

Analytics tells you how calls went; capacity tells you how many are still to come and when. For a running batch:

* The **Settings** tab's **Schedule** section charts each day's capacity against the calls actually planned into it, and summarises the window underneath — total window capacity across business days, calls planned, and the utilisation percentage. Daily caps, ramp profiles and the capacity maths behind this chart are covered on [Batch Scheduling & Pacing](/batches/scheduling).
* The **Queue** tab shows every contact's individual scheduling state, including suppressions and per-day groupings — see [Batch Queue Management](/batches/queue).

***

## Data Collection export

The **Data Collection** tab appears on the batch once it has run (before launch it reads "No data collection yet"). It aggregates the structured data your agent captured on each call into one table — the fields come from the script's Data Collection setup (see [Data Collection](/scripts/data-collection)).

The table shows one row per contact with a **Contact** column, a **Phone** column, and one column per Data Collection field, in the order the fields are defined on the script. If a contact was called more than once (retries, re-dials), the row shows the attempt that actually captured data, preferring the most recent. Values are formatted for reading: yes/no fields show **Yes** or **No**, multi-select answers are joined with commas, numbers include their unit, and dates use day-month-year order. Empty cells mean the agent didn't capture that field on the call.

### Script tabs, search, filters and sorting

If the batch's source lists ran different scripts, a tab row splits the table: **All** shows every contact with a **Script** column and one field column per script, and each script's own tab shows just that script's contacts and fields.

The header gives you the standard table controls:

* **Search** — matches against the contact's name, phone, script and every field value.
* **Filters** — add conditions on any column (Contact, Phone, Script, or any Data Collection field) using operators like *contains*, *starts with*, *is*, *is not*, *empty* and *not empty*. Rows must match every condition.
* **Sorts** — order the table by one or more columns.

If your conditions exclude everything, the table reads "No rows match the current filters."

### Downloading the CSV

The download button in the table header exports the current view — the rows that survive your search and filters, with a header row of Contact, Phone, Script (on the All tab only) and each field's label. The file is named after the batch and the active tab, for example `spring-campaign-data-collection-all-scripts.csv`, and a toast confirms "CSV downloaded". Filter first, then download: the export is exactly what you see, so a filtered view gives you a ready-made follow-up list.

***

## Next Steps

* [Batch Queue Management](/batches/queue) — queue statuses, suppression reasons and per-contact scheduling while the batch runs.
* [Batch Scheduling & Pacing](/batches/scheduling) — the capacity chart, daily caps and ramp profiles behind the schedule.
* [Data Collection](/scripts/data-collection) — defining the fields your agent captures on each call.
* [Call Details](/calls/call-details) — the per-call panel behind every row in the All Calls table.
