> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.vapi.ai/llms.txt.
> For full documentation content, see https://docs.vapi.ai/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.vapi.ai/_mcp/server.

# Boards quickstart

## Overview

Boards is Vapi's custom analytics dashboard system that enables you to create visual dashboards with real-time insights. Build drag-and-drop dashboards tailored to your teams, use cases, and reporting needs—all through the Vapi Dashboard interface.

<iframe src="https://www.tella.tv/video/cmgu88ocu00110bl24dhdan0p/embed?b=0&title=0&a=1&loop=0&t=0&muted=0&wt=1" allowfullscreen allowtransparency />

**Boards allow you to:**

* Add and configure insights (bar charts, line charts, pie charts, text metrics)
* Apply global time range filters and granularity settings
* Build queries visually with field selectors and filter builders
* Create calculated metrics using formulas
* Drag, resize, and position widgets on a responsive grid

### When to use Boards

Boards are ideal for:

* **Sales tracking** - Monitor call volume, conversion rates, and booking metrics
* **Support metrics** - Track resolution times, issue categories, and customer satisfaction
* **Cost monitoring** - Analyze spending patterns, cost per call, and budget tracking
* **Performance analysis** - Measure assistant performance, call quality, and efficiency

## What you'll build

A Sales Performance Dashboard that displays:

* Total calls and bookings for today
* Call volume trends over the past 30 days
* Bookings by assistant
* Call outcomes distribution
* Booking conversion rate (calculated metric)

## Prerequisites

Account with Boards access enabled

Existing call data helps create meaningful visualizations

Boards are accessible through the Vapi Dashboard at
[dashboard.vapi.ai](https://dashboard.vapi.ai)

## Step 1: Access Boards

Navigate to the Boards feature in your dashboard.

1. Log into your Vapi Dashboard at [dashboard.vapi.ai](https://dashboard.vapi.ai)
2. Click **Boards** in the left sidebar (under the "Reporting" or "Analytics" section)
3. Your board will be automatically created on first visit

Your board is created automatically when you first access the Boards page.
You'll see an empty 6-column grid layout where you can add insights.

## Step 2: Add your first insights

Start with key performance indicators that show single important numbers.

1. Click **Add Widget** or the **+** button
2. Select **Text** widget type
3. Configure the insight:
   * **Name**: "Total Calls Today"
   * **Data Source**: Select "Calls"
   * **Metric**: Choose "Count"
   * **Field**: Select "Call ID"
   * **Time Range**: Set to "Last 24 hours"
4. Click **Preview** to see the result
5. Click **Add to Board**
6. Drag the insight to your desired position
7. Resize if needed by dragging the bottom-right corner

The number updates in real-time. Hover over the insight to see additional details.

Repeat the process for a second insight:

1. Click **Add Widget** → **Text**
2. Configure:
   * **Name**: "Total Bookings Today"
   * **Data Source**: Calls
   * **Metric**: Count of Call ID
   * **Time Range**: Last 24 hours
3. Add a filter to count only successful bookings:
   * Click **Add Filter**
   * **Field**: Status
   * **Operator**: equals (=)
   * **Value**: "ended"
4. Click **Add to Board**
5. Position it next to your first insight

## Step 3: Create visualizations

Add charts to visualize trends and patterns in your data.

Create a bar chart showing calls by assistant:

1. Click **Add Widget**
2. Select **Bar Chart**
3. Configure:
   * **Name**: "Calls by Assistant"
   * **Data Source**: Calls
   * **Metric**: Count of Call ID
   * **Group By**: Select "Assistant" from dropdown
   * **Time Range**: Last 7 days
   * **Group By Time**: Day
4. Click **Preview** to see bars showing calls per assistant per day
5. Customize appearance (optional):
   * **X-axis Label**: "Date"
   * **Y-axis Label**: "Number of Calls"
   * **Colors**: Choose color scheme
6. Click **Add to Board**

{" "}

Track call volume over time: 1. Click **Add Widget** 2. Select **Line Chart**
3\. Configure: - **Name**: "Call Volume Trend" - **Data Source**: Calls -
**Metric**: Count of Call ID - **Time Range**: Last 30 days - **Group By
Time**: Day 4. Optional - Add multiple lines: - Click **Add Another Metric** -
Configure second metric (e.g., "Average Duration") 5. Click **Add to Board**

Line charts are ideal for showing trends over time. Use them to identify
patterns and anomalies.

Show distribution of call outcomes:

1. Click **Add Widget**
2. Select **Pie Chart**
3. Configure:
   * **Name**: "Calls by Status"
   * **Data Source**: Calls
   * **Metric**: Count of Call ID
   * **Group By**: Select "Status"
   * **Time Range**: Last 7 days
4. Click **Add to Board**

Pie charts don't have time series grouping. They show distribution across categories only.

## Step 4: Apply filters to insights

Filter data to focus on specific segments or conditions.

Open any insight's settings and add filters:

1. Click the **⚙️ (settings)** icon on any insight
2. Click **Add Filter** button
3. Configure first filter:
   * **Field**: Select "Status" from dropdown
   * **Operator**: Choose "equals" (=)
   * **Value**: Type or select "ended"
4. Click **Add Another Filter** for multiple conditions
5. Example second filter:
   * **Field**: Cost
   * **Operator**: Greater than (>)
   * **Value**: 0.50
6. Click **Save**

**Common filter patterns:**

* Filter by assistant: `Assistant ID = <select assistant>`
* Filter by date range: `Started At > <date>`
* Filter by cost: `Cost > <value>`
* Filter by status: `Status = ended`

## Step 5: Create calculated metrics

Build custom metrics using formulas to calculate rates, averages, and more. Formulas use [Math.js](https://mathjs.org/) syntax for calculations.

Calculate booking rate using a formula:

1. Click **Add Widget** → **Text**
2. Enter **Name**: "Booking Rate (%)"
3. Click **Enable Formula Mode** toggle
4. Add first query:
   * **Query Name**: totalBookings
   * **Metric**: Count of Call ID
   * Add filter: Status = "booking\_confirmed"
5. Click **Add Query** to add second query:
   * **Query Name**: totalCalls
   * **Metric**: Count of Call ID
6. Enter formula in the formula editor:
   ```
   ({{totalBookings}} / {{totalCalls}}) * 100
   ```
7. Click **Preview** to validate
8. Click **Add to Board**

The formula editor supports syntax highlighting and variable autocomplete. Type `{{` to see available queries.

### Formula examples

Common calculated metrics you can create using Math.js syntax:

```javascript
// Average Cost Per Minute
{{totalCost}} / ({{totalMinutes}} / 60)

// Conversion Rate (percentage)
({{conversions}} / {{totalCalls}}) * 100

// Average Handle Time
{{totalDuration}} / {{totalCalls}}

// Cost Per Call
{{totalCost}} / {{totalCalls}}

// Success Rate
({{successfulCalls}} / {{totalCalls}}) * 100
```

**Formula editor features:** - Syntax highlighting - Variable autocomplete -
Validation on preview - Supports all [Math.js](https://mathjs.org/)
operations: `+`, `-`, `*`, `/`, `%`, parentheses, and more

## Step 6: Organize your dashboard

Arrange insights for optimal visual hierarchy and readability.

**Layout actions:**

* **Drag insights**: Click and hold the drag handle (**⋮⋮** icon) in insight header
* **Resize insights**: Drag the resize handle in bottom-right corner
* **Delete insights**: Click trash icon (**🗑️**) in insight settings
* **Edit insights**: Click settings icon (**⚙️**) to modify configuration

### Layout tips

* KPI cards: 1-2 column widths - Charts: 3-4 column widths - Tables: 4-6
  column widths

- Place most important metrics at the top - Group related metrics together -
  Use consistent sizing for similar insights

## Step 7: Apply global filters

Control time range and granularity for all insights at once.

Look for the filter bar at the top of your board: 1. **Time Range Picker**:

* Click the time range dropdown - Choose preset: Today, Yesterday, Last 7
  days, Last 30 days, This month, Last month - Or select **Custom Range** to
  pick specific dates 2. **Granularity Selector** (appears next to "grouped
  by"): - Choose: Minute, Hour, Day, Week, Month, Quarter, Year - Available
  options depend on time range 3. Click **Apply** button to update all
  insights

All insights on the board update simultaneously. Applied filters show in
the filter bar, and unsaved changes display a blue "Apply" button.

You can't group by minute for a year of data. Granularity options are limited
based on the selected time range.

## Example dashboards

### Sales Performance Dashboard

Track sales metrics and conversion rates:

**Insights:**

1. **Text**: Total Calls (last 24h)
2. **Text**: Total Bookings (last 24h)
3. **Text**: Booking Rate - formula: `(bookings/calls) * 100`
4. **Line Chart**: Daily call volume (last 30 days)
5. **Bar Chart**: Bookings by assistant (last 7 days)
6. **Pie Chart**: Call outcomes distribution

### Support Metrics Dashboard

Monitor customer support performance:

**Insights:**

1. **Text**: Average call duration
2. **Text**: Total support tickets
3. **Text**: Resolution rate
4. **Line Chart**: Call volume trend
5. **Bar Chart**: Issues by category
6. **Bar Chart**: Average resolution time by agent

### Cost Monitoring Dashboard

Analyze spending and optimize costs:

**Insights:**

1. **Text**: Total cost today
2. **Text**: Average cost per call
3. **Text**: Cost per minute
4. **Line Chart**: Daily spending trend
5. **Bar Chart**: Cost by assistant
6. **Pie Chart**: Cost by call type (inbound/outbound)

## Best practices

### Dashboard design

**Best practices:**

* Start with 3-5 key metrics (avoid overcrowding)
* Use consistent time ranges across related insights
* Place most important metrics at the top
* Use appropriate chart types for your data
* Add filters to focus on specific segments

**Avoid these mistakes:**

* Too many insights (impacts performance)
* Mix incompatible time granularities
* Ignore visual hierarchy
* Use pie charts for time-series data
* Query years of data when you need today's metrics

### Data strategy

* **Text insights** for single important numbers
* **Line charts** for trends over time
* **Bar charts** for comparing categories
* **Pie charts** for proportional breakdowns (not time-series)
* Apply filters to remove noise from data

### Performance considerations

Boards with 10+ complex insights may load slower. Use appropriate time ranges
and shorter time periods for better performance.

## Sharing and viewing

### Fullscreen mode

Click the fullscreen icon (**⛶**) to display your board in fullscreen—great for TV displays or presentations.

### Refreshing data

* Boards auto-refresh based on time range
* Manual refresh: Click refresh icon (**🔄**) if available

## Troubleshooting

| Issue                       | Solution                                                                            |
| --------------------------- | ----------------------------------------------------------------------------------- |
| Insight shows "No data"     | Check time range—may be too narrow or no data exists for that period                |
| Insight not loading         | Verify query configuration, check if filters are too restrictive                    |
| Can't see "Apply" button    | Filters haven't changed—button only appears when you modify settings                |
| Insight appears empty       | Data may exist but filters exclude it—try removing filters                          |
| Drag not working            | Click the drag handle (**⋮⋮**) icon, not the insight body                           |
| Granularity options missing | Time range may be too narrow—Day granularity requires multi-day range               |
| Formula shows error         | Check syntax—variables must be wrapped in `{{}}` and query names must match exactly |
| Insight won't resize        | May have reached minimum size limit                                                 |

### Common errors

**"Query failed"**: Check your filters and ensure fields exist in your data

**"Invalid time range"**: Adjust time range to valid dates

**"Formula syntax error"**: Verify formula uses correct Math.js variable names matching your query names

## Next steps

Master complex filtering techniques for precise data analysis

{" "}

Explore more formula patterns for custom metrics

{" "}

Learn about call analysis and insights

Access analytics data programmatically via API

## Tips for success

**Getting started:** - Start simple with a few key metrics - Test with real
data from your calls - Iterate based on team feedback - Use global filters to
quickly analyze different time periods - Combine text insights with charts for
comprehensive views