
# Build your own analytics tabs

**Dashboard → + New tab** *(sign-in required)* adds a tab of your own beside the built-in ones. Each widget on it is one question — *How do conversations end?*, *Which hours are busiest?*, *Average call length by outcome* — answered from the same analysis that feeds [Conversation Insights](/help/reports/conversation-insights), so a figure here is the figure there. The same tabs exist on every agent's conversations page, locked to that agent.

## Where the tabs are

- **The dashboard.** After the built-in tabs come your own tabs, then the ones your team shared with you (a small dot marks a shared tab), then **+ New tab**. Six show; the rest sit under **More**.
- **An agent's conversations page.** A chat agent's **Conversations**, a voice agent's **Calls**, an SMS agent's **SMS Conversations** and a mail agent's **Emails** page carry a **List | Analytics** strip under the header. **Analytics** holds the tabs built for that one agent: every widget counts that agent's conversations only, and the date range is the page's own range (the last 30 days when the list has none). An agent's tabs are separate from the dashboard's.

A tab is yours: nobody else sees it until you share it (below).

## Start from a question

**+ New tab** offers a starter or a blank tab:

| Starter | What it answers |
| --- | --- |
| **Service quality** | How conversations end, how people feel, whether the resolved share is improving, unanswered questions. |
| **Where conversations come from** | The pages chats start on, the channels, the ad campaigns behind them. |
| **Agents side by side** | Outcomes and volume per agent. |
| **Busy hours** | Which hours and days conversations land on. |
| **This agent at a glance** *(agent pages only)* | Outcomes, feeling, knowledge gaps, topics and timing for the one agent. |

A blank tab shows three one-click suggestions and **Build my own**. Every starter widget can be edited or removed afterwards. A tab holds up to 24 widgets; at the cap, **Add widget** is disabled and the tab says so — remove one, or start a second tab.

## Add a widget

**Add widget** opens the builder. One sentence builds the widget, and the preview on the right redraws as you change it:

- **Question** — the line the card shows as its title. The builder drafts one from your choices; you can rewrite it.
- **Show me** — *Conversations* (a count), the *share* of conversations where a field passes a test, or the *average* or *sum* of a number (call length, effort, a score, revenue from a pack). A share's test is **is**, **starts with**, **contains** or **matches pattern**, several values joined with `|`. On a list field such as **Pages visited** a conversation passes when any one of its values does, so *Pages visited · starts with · /membership/* is the share of chats that reached that section at any point. A share or an average needs no split: leave **Broken down by** empty and the widget is one number (*18% of 38 conversations*), named for its condition, with a bar as long as the share.
- **Broken down by** — the field that splits the count: outcome, topic, feeling, the page a chat started or ended on, the hour or weekday, the agent, the channel, the device, the place, how the visitor arrived, and every field your summary prompt or a process pack adds. A number splits into ranges you set by their edges (*<60 · 60-300 · 300+* seconds, for example).
- **Chart** — the charts that fit what you chose are live and the best fit is picked for you. A chart that does not fit is greyed with the reason (*a time split draws over time*, *needs a second split to stack*); tap it to read why. Radar, polar area, pie, word cloud and treemap sit under **More charts**: they still work, but a bar reads the same figures more accurately. Changing the chart never changes the figures — it is the same count drawn another way.
- **Compare with** — *the previous period* or *the same period last year* adds a change badge to a tile, a washed-out *Before* bar beside every bar, and a dashed line of the previous window on a trend. *Two values side by side* compares two values of one field (two agents, two channels, two pages). *One value vs everything else* sets one value of a field against every other conversation (the new section of the site against the rest, one campaign against all others) with no second value to pick: each bar becomes two side by side, the value in colour and *Everything else* in grey. With either comparison, the sentence names where the two differ most, each as a share of its own side (*Trv newsletter: 43% incomplete (3 of 7) vs 19% for everyone else (6 of 31)*), and *Two values side by side* says in its footer how many of the tab's conversations the two hold (*11 of 38 are …*).

**Advanced** (remembered per person) adds a second split (*and by*; after a time split it offers *Hour of day* and *Day of week*, so hour × day of week is the staffing heatmap), **Panels by** (one small chart per value of a third field), **Filter** (up to six conditions, with your workspace's own values offered — see *Filter a tab* for the conditions), **Format**, **Top N** and **Min cell**. **Add to tab** saves the widget (**Save changes** when editing one); the tab runs again.

## Which chart for what

One split offers **Bar** and **Column** (longest first), **Doughnut** (part of a whole; past six slices the rest fold into *All others*, which the table still lists in full) and **Pareto** (bars ranked with the running share and an 80 % line, for *which few values make most of the volume*). Under **More charts**: **Pie** and **Polar area**, **Radar** (an outline over three or more values), **Treemap** (share of the whole as area) and **Word cloud** (free values sized by count). A split by **Country**, **Region** or **City** also offers the **Map**: one circle per place, sized by its count — or coloured by the share or average when that is what you chose — with the place the sentence names in colour and the six biggest named. Hover a circle for its figure; click it to list its conversations. A place the platform cannot put on the map is listed under it; give it a latitude and longitude under **⋯ → Rename values…** and the circle appears. Countries and the provinces and states of Canada, the US, Australia and the UK are placed on their own; a city is placed where its conversations were, which needs conversations closed after the location point began being recorded. A split by a **list** — *Topic path*, *Labels*, *Pages visited*, *Tools used* — also offers the **Topic map**: every value a circle sized by its conversations, every pair of values that share a conversation a line, coloured by the share you chose under **Show me** (picking the map on a plain count sets it to *Outcome is resolved or likely resolved*). The **hardest bridges** — the pairs where the most conversations miss that share — keep their colour and carry a 1, 2, 3 badge; the panel beside the map lists them with *N of M missed*, above two figures that say whether conversations that stay on one topic fare better than those that cross topics. Hover a circle or a line to read it; click a circle for its conversations, a line for the conversations that carry both ends. The map shows the twenty most common values and always both ends of every bridge; raise **Top N** for more. On a small tab no pair may reach the widget's **Min cell**: those pairs are still drawn, faint and dashed, and the panel lists the strongest as *Pairs seen*, with the min cell you would need to rank them — read them as anecdotes until the tab has volume. Topics you have merged or renamed under **Analytics & Insights → Vocabulary** (the *Topics* section) draw under their governed name. A time split offers **Area**, **Line** and **Columns over time**. Two splits offer the **Heatmap** (a count heatmap reads as the share of each row, or as counts when you choose *Heatmap reads: Counts* under Advanced; the card's toggle switches the view either way), **Stacked bar** and **100% stacked** (share within each bar), and, with time first, the same area, line and columns with one series per value plus **Rank over time** (a bump chart: which value led each week). Three or four splits offer the **Flow**. Ordered scales (a feeling, an effort, a funnel step) keep their order and their colour ramp whatever the chart, and a clock or a week keeps every hour and day, including the empty ones. An agent split names the agent, not its id.

**Colour points at the answer.** A bar chart starts grey and puts one colour on the bar the card's sentence is about: the leader, the outlier, the value you set against everything else. Good-to-bad scales (outcome, feeling) keep their green-to-red steps, and dark mode has its own steps, checked for colour-blind readers on each background. Every coloured mark also carries its label, so colour is never the only way to read it.

## Filter a tab: one part of the site, one campaign, one language

The **Filter** button in the filter row sets conditions **every widget on the tab inherits**, and the line above the widgets, the footers and the drill-downs count only the conversations that match. Up to six conditions, all of which must hold; a chip under the row says each one in words, and anyone reading a shared tab sees the same chips.

A condition is a field, a comparison and a value. The value box offers your workspace's most common values for the field, and as you type it offers the values that contain what you typed, so a long list of pages or topics is reachable. Besides *is*, *is not*, *is one of* and *is set*, the text comparisons select by shape, so a section of the site needs no list of pages:

- **starts with** — *Start page · starts with · /concierge/* keeps every chat that opened under that section, new pages included.
- **contains** — *Start page · contains · pricing*; *Topic · contains · refund*.
- **matches pattern** — `*` stands for anything: *Start page · matches pattern · /clinics/\*/book* keeps the booking page of every clinic.
- Each has a **does not** twin, several alternatives are joined with `|` (*/concierge/|/help/*), and case does not matter.

So "what happens on the new part of the site" is one tab: **Filter** → *Start page · starts with · /the-section/*, then widgets for outcomes, topics, feeling, hour of day, where the chat ended and whether the visitor was new, with *Compare with the previous period* on the one that matters. The same conditions are offered on a single widget under **Advanced → Filter** when only that widget should narrow.

**Start page** is the page the chat opened on; **End page** is the page the visitor last wrote from, which is empty for conversations closed before your workspace's close-time facts were filled in (see *What the figures count*).

## Arrange the tab

**Edit layout** turns on the handles: drag a widget by its handle, resize it from the corner, or use the kebab's **Move & size** row. **Move up** and **Move down** swap the widget with the one before or after it in reading order; **Move left** and **Move right** swap it with the widget beside it; the size arrows make it a cell wider, narrower, taller or shorter. On a phone the kebab offers **Move up** and **Move down** only. **Done** turns the handles off again. The layout saves on its own (*Saved* appears in the header). Reading a tab shows no handles at all, and a widget whose chart needs more room than its cell grows to fit rather than scrolling inside itself; the widgets beside it on the same row grow with it, so the row stays level.

The row above the widgets narrows **every widget on the tab together**: the channel and the handled-by chips, and the tab's own **Compare** setting (*vs previous period*, *vs same period last year*) for every widget that does not set its own. The date range is the dashboard's range, or the page's range on an agent page.

Clicking a bar, a slice or a cell lists the conversations behind it, exactly as on Conversation Insights (the newest hundred, with the whole count under the list); a widget's kebab exports its data as **CSV** (any widget) or **PNG** (a bar, line, doughnut or stat; a heatmap or a table exports as CSV).

## Alerts, and what changed

**A rule on a widget.** Under **Advanced → Alert me** the builder takes a rule on the widget's one figure: *when the figure is at or above / at or below N over the last D days*. The figure is what the card's sentence leads with: the Yes share of a yes/no field (type 60 for 60%), the number of conversations the widget counted, an average or a sum, a rate; a heatmap, a flow or a table has no single figure and takes no rule. A bell on the card says the rule in words. Once a day the platform runs the widget over its window and, when the rule holds, notifies you — or, on a shared tab, everyone who can read analytics — through the usual notification settings (**Reports → A widget on an analytics tab crossed its threshold**, in-app by default). One notification per widget per day while it holds.

**What changed this week.** Once a week, every tab sends a digest: each widget's one-line answer over the last seven days against the seven before, biggest change first — the change each line states, in points for a share and in percent for a count (**Reports → What changed on an analytics tab this week**). A digest for an agent's tab names the agent. On the tab itself, set **Compare** to *vs previous period* and a *What changed* strip above the widgets lists the three whose line moved most; two widgets that say the same line are listed once.

Both run inside the daily insight-alert check; turning that check off under **Settings → Analytics & Insights → Cards & alerts** turns these off too.

## Share, duplicate, delete

The tab's kebab (⋯) holds **Share with the team** — the tab appears for everyone in your workspace who can read analytics, read-only for them, and the header says *Shared with everyone who can read analytics*. **Stop sharing** takes it back. Sharing needs the *analytics: manage* permission; reading a shared tab needs *analytics: read*.

**Rename values…** (needs *analytics: manage*) gives a stored value the name your team uses: pick a field, and beside each of its values type a name (*trv_newsletter* → *Travel newsletter*). The names apply to every tab, every sentence and the connector, across the workspace; a blank name shows the value as stored again. The panel lists the workspace's most common values of the field and, first, every value a widget on this tab draws — an article path, a rare campaign, the buckets a widget derives (*0-1* on a range, *low* on a score) — so anything you can see, you can name. For **Country**, **Region** and **City** each row also takes a latitude and longitude: where that place sits on the **Map** chart.

**Duplicate** makes a private copy of your own tab; on a tab shared with you it is **Duplicate to my tabs** — the way to start from a colleague's work. The pencil beside the tab's name renames it in place. **Delete tab** removes it for good.

## What the figures count

A share or an average over a value with fewer conversations than the widget's **Min cell** (three unless you change it) is not drawn: a 0% bar over one conversation is noise, not a finding. The footer says how many values were left out. The sentence's outlier is picked among values that hold at least 1% of the widget's conversations.


A widget counts what [Conversation Insights](/help/reports/conversation-insights) counts: every closed, billable conversation on every channel in the range, handled by a production agent. On an agent page, only that agent's. A card's footer says how many conversations in the range carry the field it reads (*35 of 38 carry it*; on a heatmap, the conversations that carry both of its fields) and, when **Top N** hides some values, how many there were (*top 10 of 14 shown*). A share in the sentence is of the conversations that carry the field, never of the bars left after Top N, so hiding values never inflates a share.

The sentence under each title names the answer, not the tallest bar:

- a count names the leader, its share and a close runner-up (*Travel leads: 5 of 35 (14%); All inclusive 4*);
- a good-to-bad scale reads both ends (*76% resolved or likely resolved; 24% incomplete (of 38)*); a share under 10% keeps a decimal (*0.8%*);
- a score or a range of numbers (trust, effort) reads its two ends (*Low: 15 (0.3%) · High: 131 (2%) (of 5,995)*);
- a share split by a field names the value furthest from the rest, among values that hold at least 5% of the card's conversations (*Travel: 60% (n 10) against 92% elsewhere*), and an **Alert me** rule on that widget tests the same figure;
- a trend compares the last full period with the one before and the average before that (a week still in progress is never the latest);
- a heatmap names the cell that departs most from its column, among rows holding at least 5% of the grid, and how many small cells it hid. **Top N** trims a heatmap's rows. A share or an average over a period with no conversations is a gap in the line, not a zero. When a widget reads a field the platform began recording after the start of your range, a line above the widgets says so once (*3 widgets: fields available since …*): earlier conversations do not carry it. The footer's figure matters for the fields written at the end of a conversation:

- **Where a chat ended** is the page the visitor last wrote from, not where the browser went afterwards. **Pages visited** lists every page the visitor viewed during the chat, in order, so *Pages visited · starts with · /the-section/* selects chats that touched the section at any point, whether they started there or walked in later.
- **Device** (desktop, phone, tablet; the browser and the system) comes from the chat widget's page visits; chats that happened before the widget reported it have none.
- **New or returning** is whether the same contact had an earlier conversation on any channel; a conversation without a contact is *anonymous*.
- **Tools used** and **tool errors** come from the conversation's own log; SMS and email conversations cannot tell an errored tool call from a successful one, so their error count is not reported.
- **How the visitor arrived** (the referring site, UTM) is what the chat page recorded; it is the page's attribution, not the first touch. **Traffic source** rolls it up to *Your site*, *Search*, *Email*, *Social*, *Other sites* or *Direct*: the UTM medium and source decide first, then the referring site, and a chat with nothing recorded has no source rather than being counted as *Direct*. Common referring sites read by name (*Gmail*, *Google search*, *Facebook*), and the addresses of one site count as one bar (the phone and desktop addresses of Facebook are one *Facebook*). Traffic source is filled in for conversations closed from 2026-10-20 on, and for older ones once your workspace's facts are refreshed.

The **Emails** page's Analytics counts the email **threads** the agent handled; the list beside it counts sent emails, failed and skipped ones included, so the two differ by design.

## Reading a tab from a connector

An MCP connector can list the tabs shared with the team (`list_dashboards`) and run one (`run_dashboard`) for the same figures the screen shows. A connector has no login of its own, so it never sees a private tab. See [MCP servers](/help/integrations/mcp-servers).
