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

# Call Analytics

> View headline call metrics, daily call volume and outcome distribution for your account

The *Call Analytics* page provides a concise, data-rich overview of how your voice agent is performing during the last **30 days**. It combines four headline metrics with two interactive charts so that you can monitor trends at a glance.

## Headline metrics

<Columns cols={2}>
  <Card title="Total" icon="phone">
    Absolute number of calls handled by the workspace.
  </Card>

  <Card title="Unique Callers" icon="users">
    Count of distinct phone numbers that reached your agent.
  </Card>

  <Card title="Avg Duration" icon="clock">
    Average conversation length expressed in minutes and seconds.
  </Card>

  <Card title="Resolution Rate" icon="badge-check">
    Percentage of calls counted as resolved out of all calls in the selected period. See [Resolution Rate](#resolution-rate) below for how a call qualifies as resolved.
  </Card>

  <Card title="User Satisfaction" icon="thumbs-up">
    Percentage of calls marked **Satisfied** by the AI-inferred evaluation. See [Customer Satisfaction (CSAT)](#customer-satisfaction-csat) below for how this score is determined.
  </Card>
</Columns>

Each metric also shows a % change compared with the *previous* 30-day window so you can quickly spot positive or negative trends.

## Charts

### Call volume by day

<ResponseField name="Call volume by day" type="chart">
  A bar chart that plots the number of calls for every calendar day in the selected period. Hover over a bar to inspect the exact count for that day.
</ResponseField>

### Call outcomes

<ResponseField name="Call outcomes" type="chart">
  A donut chart that breaks down the final outcome of each call:

  * **Contained** – issue resolved entirely by the AI agent
  * **Transferred** – call was handed to a human agent
  * **Caller-Hungup** – caller hung up before the agent completed the flow
  * **Insufficient-Balance** – call was rejected due to insufficient account balance
  * **Error** – call ended due to a system or bot error

  Each slice is labelled with its percentage share and absolute call count.
</ResponseField>

### Transfer dispositions

<ResponseField name="Transfer dispositions" type="chart">
  A donut chart that shows the breakdown of transfer reasons when calls are handed to a human agent. Each disposition represents the specific reason why the AI agent transferred the call. You can manage which transfer dispositions count as **contained** (resolved) via the **Manage containment** button, allowing you to fine-tune your resolution rate metric.
</ResponseField>

## Resolution Rate

Resolution Rate is the percentage of calls that count as **resolved** out of all calls in the selected time window.

A call is counted as resolved if it meets **any one** of the following criteria:

* **AI-contained** — the AI agent resolved the caller's query and closed the session without escalation.
* **Caller hung up after resolution** — the caller ended the call after receiving the answer they were looking for. The AI judge evaluates the conversation transcript to determine whether the hang-up followed a successful resolution.
* **Escalated per agent configuration** — the call was transferred to a human agent as designed (i.e. the escalation was intentional, not a failure). You can control which transfer dispositions count toward resolution via the **Manage containment** button on the dashboard.

<Note>
  If a caller hangs up immediately after the AI provides an answer, the AI judge evaluates the transcript and can mark that call as resolved — so abrupt hang-ups after a correct response do not automatically hurt your resolution rate.
</Note>

## Customer Satisfaction (CSAT)

Every completed call automatically receives a **Satisfied** or **Not Satisfied** label — no post-call survey is required. The score is inferred by AI the moment the conversation ends and is visible on the call record immediately.

### Evaluation criteria

The satisfaction score measures **whether the bot handled the interaction correctly**, not whether the caller was happy with the business outcome. This is an important distinction.

<AccordionGroup>
  <Accordion title="Marked as Satisfied (true)">
    The bot is marked **Satisfied** when any of the following are true:

    * **Protocol Accuracy** — The bot delivered correct information or enforced a policy (even a restrictive one) clearly and accurately.
    * **Procedural Completion** — The bot reached a definitive state, provided a valid justification for a refusal, or offered the next available step.
    * **Successful Handoff** — The bot correctly identified the need for a human agent and transitioned the caller without error.
    * **Technical Competence** — The bot addressed the specific intent of the user without circular logic or irrelevant tangents.
    * **Passive Success** — The caller ended the call after receiving a correct (even if unwanted) answer, or there was no further user input following a correct final response.
  </Accordion>

  <Accordion title="Marked as Not Satisfied (false)">
    The bot is marked **Not Satisfied** only when one of the following occurred:

    * **Functional Failure** — The bot provided incorrect information, hallucinated a policy, or failed to perform a requested action it is capable of.
    * **Logic Loops** — The bot repeated scripts or failed to progress the conversation despite user clarity.
    * **Navigation Error** — The bot refused a request without providing a reason, or its response actively prevented the user from reaching a resolution.
    * **Incoherence** — The bot's response was non-sequitur or failed to recognize the user's primary intent.
  </Accordion>
</AccordionGroup>

<Note>
  **Outcome Independence** — If a caller is upset because they were denied a request (e.g. a refund or credit), but the bot's denial was based on correct policy, the call is still marked **Satisfied**. The system distinguishes between an *upset human* (due to the situation) and a *failed interaction* (due to the bot). High caller frustration does not equal a bot failure when the bot was clear, correct, and professional.
</Note>

## Data source & refresh cadence

The analytics are computed server-side from call records stored in **BigQuery**. Data is updated in real-time, refreshing immediately after each call is completed to ensure you always have the most current insights.

## Advanced Filtering

To help you perform more granular analysis, the Call Analytics dashboard includes an **AI Agent Filter**. This allows you to:

* **Analyze Single Agents**: View performance metrics for a specific AI agent.
* **Compare Agent Groups**: Select multiple AI agents to see aggregated data across a specific set of assistants.
* **Identify Trends**: Quickly isolate results to understand which agents are driving your key metrics.

## Where to go next

<Columns cols={2}>
  <Card title="Call History" icon="history" href="/analyze/call-history">
    Drill into individual calls, listen to recordings and read transcripts.
  </Card>

  <Card title="Analytics Dashboard" icon="bar-chart" href="/analyze/dashboard">
    View a wider set of operational metrics across your entire workspace.
  </Card>
</Columns>
