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

# Insights → Analytics console

> Operator guide to the Insights → Analytics page: the real-time cross-channel rollup that stacks SMS, WhatsApp, email, RCS, and voice in one time-series, with a comparative map to the other Insights surfaces and API parity over GET /analytics.

# Insights → Analytics console

The Insights section has many specialized surfaces. **Insights → Analytics** (console route `/insights/analytics`, page title "Analytics — real-time communication analytics and insights") is the general-purpose cross-channel rollup: it stacks volume across SMS, WhatsApp, email, RCS, and voice in one view and updates live as messages deliver. Open it when your question is "across all my channels — volume, delivery, spend — what happened in this window?"

## What the page shows

Four header KPI cards — **Total messages**, **Delivery rate**, **Active contacts**, **Total spend** — computed over the window you pick in the date filter (`24h`, `7d`, `30d`, `90d`, `12m`, or a custom calendar range). The cards carry built-in definitions; hover a card's info affordance to see exactly what the metric counts (for example, delivery rate = (delivered + read) / terminal messages, in-flight rows excluded).

Below the cards, the **Ask your data** panel answers plain-English questions against the same metrics snapshot — it is fully client-side and deterministic, no LLM call. The rest of the page is the breakdown set, each card scoped to the same selected window:

* **Message volume** — a stacked time series with one series per channel (SMS, WhatsApp, email, RCS, voice, and any other channels you send on).
* **Channel distribution** — a donut of each channel's share of the windowed volume.
* **Delivery funnel** — sent → delivered → read, with a root-cause drill-down that groups failed messages by rejection code.
* **Geographic distribution** and a **delivery-by-country** table — sent / failed counts and delivery rate per destination country.
* **Peak hours** — which hour and day carry your traffic, bucketed in your organization's timezone.
* **Top recipients** — your ten most-messaged contacts in the window.

Filters persist in the URL, so a teammate opening your link sees the same range. A **Today: Nh** badge appears on the short windows (24h, 7d) so a partial day is not mistaken for a drop, and an **Export** button pulls every visible section into one CSV. The page refreshes on `message.delivered` / `message.failed` / `message.sent` / `campaign.completed` events, so a delivery lands in the series within seconds rather than on a fixed poll.

Access is role-scoped. Because the page exposes aggregate recipient, geography, and peak-hour breakdowns, the **owner, admin, developer, and billing** roles see it; **agent** and **viewer** see the dashboard-Home summary instead. The **Export** button hands the same range-filtered reports to stakeholders without console access.

## How Analytics differs from the neighboring Insights surfaces

These three pages overlap in vocabulary but answer different questions:

* **Insights → Analytics** (this page) — cross-channel volume, delivery, and spend aggregates for a window. Read it for "how much moved, where, and what it cost."
* **Insights → Costs** (`/insights/costs`) — cost-per-channel detail: spend, volume, and average cost per message per channel, with a daily spend trend. Reach for it when the question is a cost split rather than a delivery funnel.
* **Insights → Conversations** (`/insights/conversations`) — conversation-level intelligence: AI-powered analysis over individual conversations across channels. Reach for it when you need per-thread detail, not aggregates.

The **Ask your data** panel on this page answers the aggregate questions in sentence form when you do not want to read a chart.

## Use-cases per channel

* **Delivery funnel (SMS, WhatsApp, RCS)** — where the send → delivered → read chain leaks, with the top carrier rejection codes behind the drill-down.
* **Region split (all messaging channels)** — geographic distribution plus the per-country delivery table: sent, failed, and delivery rate per destination.
* **Link clicks (SMS)** — campaign-level click-through reporting lives on **Insights → SMS CTR** (`/insights/sms-ctr`); pair it with this page's funnel when "delivered" is not the metric that matters.
* **Voice minutes and spend** — the voice series is folded into header KPIs and the Ask-your-data snapshot alongside messaging, so reading total spend does not require the channels → Voice page.

## When to use Analytics vs a channels/\[channel] tile

The per-channel pages under **Channels** (for example `channels/sms`, `channels/whatsapp`) show that channel's own configuration and its native tile view. Use **Insights → Analytics** when the question crosses channels or needs a mixed-channel comparison; use the single-channel page when you already know which channel is implicated. The Analytics page's channel donut and volume series tell you which single-channel page to open next.

## Comparative table — which Insights page answers which question

| Operator question                                                               | Surface                                           | Route                     |
| ------------------------------------------------------------------------------- | ------------------------------------------------- | ------------------------- |
| How much total volume moved, and how healthy was delivery, across all channels? | Insights → Analytics (this page)                  | `/insights/analytics`     |
| What did each channel cost, and what is the average cost per message?           | Insights → Costs                                  | `/insights/costs`         |
| Show me individual conversations and AI analysis over them                      | Insights → Conversations                          | `/insights/conversations` |
| Which hour/day should I schedule campaigns on?                                  | Insights → Analytics — Peak hours card            | `/insights/analytics`     |
| Which destination country is failing deliveries?                                | Insights → Analytics — Delivery by country        | `/insights/analytics`     |
| What are the top carrier rejection codes behind funnel drop-off?                | Insights → Analytics — Delivery funnel drill-down | `/insights/analytics`     |
| Which channel carries the largest share of my traffic?                          | Insights → Analytics — Channel distribution       | `/insights/analytics`     |
| Did recipients actually click my SMS links?                                     | Insights → SMS CTR                                | `/insights/sms-ctr`       |

## API parity — the same rollup over GET /analytics

Everything on the page is also readable from the public Analytics API under `/api/v1/analytics`, so scheduled exports and embedded BI pulls never need console access. Use an API key with the `analytics:read` scope; analytics endpoints are tenant-rate-limited at 60 requests per minute. For the full endpoint reference — per-channel, per-country, error-code, and cost breakdowns — see the [Analytics API page](/channels/analytics).

### Volume and delivery

```bash theme={null}
curl -G https://api.orbit.devotel.io/api/v1/analytics/messages \
  -H "X-API-Key: dv_live_sk_..." \
  --data-urlencode "start_date=2026-08-01T00:00:00Z" \
  --data-urlencode "end_date=2026-09-01T00:00:00Z" \
  --data-urlencode "group_by=day"
```

### Per-channel breakdown (the donut)

```bash theme={null}
curl -G https://api.orbit.devotel.io/api/v1/analytics/messages/by-channel \
  -H "X-API-Key: dv_live_sk_..." \
  --data-urlencode "start_date=2026-08-01T00:00:00Z" \
  --data-urlencode "end_date=2026-09-01T00:00:00Z"
```

### Per-country delivery (the destination table)

```bash theme={null}
curl -G https://api.orbit.devotel.io/api/v1/analytics/messages/by-country \
  -H "X-API-Key: dv_live_sk_..." \
  --data-urlencode "start_date=2026-08-01T00:00:00Z" \
  --data-urlencode "end_date=2026-09-01T00:00:00Z"
```

### Spend (the Total spend card)

```bash theme={null}
curl -G https://api.orbit.devotel.io/api/v1/analytics/costs \
  -H "X-API-Key: dv_live_sk_..." \
  --data-urlencode "start_date=2026-08-01T00:00:00Z" \
  --data-urlencode "end_date=2026-09-01T00:00:00Z"
```

### Funnel drop reasons (the drill-down)

```bash theme={null}
curl -G https://api.orbit.devotel.io/api/v1/analytics/funnel/sent/drop-reasons \
  -H "X-API-Key: dv_live_sk_..." \
  --data-urlencode "channel=sms" \
  --data-urlencode "limit=5"
```

Omit `start_date` / `end_date` and the API defaults to the last 30 days; both bounds accept ISO 8601 timestamps and the range may not exceed 365 days. A `422 VALIDATION_ERROR` names the offending parameter in `error.details.issues`.

## See also

* [Analytics API (channels/analytics)](/channels/analytics) — full endpoint reference for the curl family above
* [Insights dashboards overview](/guides/insights-dashboards) — the specialized Insights surfaces beyond this rollup
* [SMS click-throughs guide](/guides/short-links-and-click-tracking) — pairing funnel metrics with link CTR
