Build a custom Insights dashboard
The Insights section ships one fixed hub page plus a set of purpose-built surfaces (retention, funnels, deliverability, LLM spend, and so on). Where those pages stop, the Dashboard Builder starts: it is the no-code composition surface at Insights → Dashboard Builder (/insights/dashboards) that lets you arrange the metrics that already
exist behind the per-pillar endpoints into a layout of your own, and share
that layout as a signed, embeddable link.
This guide covers the builder mechanics — the palette, the grid, widget
configuration, layout validation, and the share/embed flow. For how to
read the individual Insights surfaces (retention curves, journey paths,
topic intelligence, and the rest), see Read the Insights
dashboards.
What a widget is
Every widget in the palette maps to one read-only metric endpoint the API already serves — message volume, deliverability, voice quality, CDP health, agent QA, LLM spend, burn rate, carbon, and more. The builder never invents a new query: placing a widget means “render the output of that existing endpoint inside my layout.” When the layout is later rendered, each tile fetches its own backing endpoint with the normal authenticated, tenant-scoped request, so a dashboard can never widen the data access the widget’s source endpoint already enforces. Because widgets reference the live endpoint catalog, a widget only exists in the palette when its backing metric is live for your tenant — if a surface you expected is missing, check that pillar’s data is actually flowing.Create a dashboard
- Open Insights → Dashboard Builder in the console (visible to the owner, admin, developer, and viewer roles).
- Set a Dashboard name and pick the grid column count — 6, 8, 12, 16, or 24 columns. 12 is the default; use more columns when you want finer placement control.
- From the Widget palette on the left, click a widget to drop it onto the canvas. The palette groups widgets by category (Messaging, Deliverability, Voice, CDP, Agents, Quality, Spend, Sustainability) and each entry shows its visualization type — stat, line, bar, table, or gauge — so you know what shape the tile will take before you add it. A dashboard can hold up to 50 widgets.
- For each placed widget use the editor card on the right to:
- override the title (leave blank to keep the widget’s own name),
- adjust width (1 to the column count) and height (1–24 row units) with the steppers,
- reorder tiles with the up/down controls, or remove them.
- When the layout reads right, click Validate layout. Validation is a dry-run against the API: it checks the layout shape, clamps coordinates, de-duplicates tile ids, and confirms every required parameter is set. On success the canvas adopts the normalized layout the server returned.
Widget parameters
Most widgets accept awindow parameter — the look-back window for the
metric, one of 24h, 7d, 30d, or 90d — and many also accept a
channel filter (sms, whatsapp, rcs, email, voice, telegram). Some widgets
bind to a specific object through a required path parameter: the
Queue live state widget needs a queue id, the Agent QA scorecard widget an
agent id. Required parameters are marked with an asterisk in the widget
editor; the canvas warns and the Validate layout button stays disabled
until every required value is supplied. Enum-constrained parameters (like
window) accept only their listed values — validation rejects anything
else.
Validate, don’t guess
Validation runs the same normalizer the API uses on a saved or shared layout, so a layout that validates is one the embed renderer will render unchanged. The builder also adopts normalized coordinates back onto the canvas, so what you see after validation is exactly what a recipient of the dashboard will see.Share and embed
Minting a share link is a governance action on the API (the link anyone with the URL can open exposes tenant metrics), so Share & embed is restricted to the owner and admin roles; the button only renders for them, and the API rejects the request for other roles.- Fill in the dashboard name and every required widget parameter (the button stays disabled until those are set).
- Click Share & embed.
- Pick a lifetime — 1, 7, 30, 60, or 90 days (the default is 30, and the API clamps every request to 1–90 days) — optionally a title override, and Generate link.
- Copy either:
- the Embed URL, which opens a public, white-label page rendering the dashboard, or
- the Embed snippet, a ready-made
<iframe>pointing at that URL to drop into an intranet, portal, or backing-app page.
Limits and failure modes
Where exports live
The builder itself composes and shares layouts — it is not a data-export surface. If you need a spreadsheet or an image of the numbers, use the export affordance on the individual Insights metric page (for example the Deliverability and Link-tracking surfaces ship CSV/workbook exports), or pull the same endpoints the widgets call through the Analytics API and export from your own tooling. A dashboard link answers “show someone the composition,” not “hand them a file of the data.”How this fits with the other Insights guides
- Read the Insights dashboards — what each fixed Insights surface answers and how to read it.
- Insights API reference — the endpoint shapes behind the fixed surfaces (the widget catalog reuses the same read-only family).
- Scheduled reports — recurring email digests, when you need the numbers pushed to you rather than composed on a page.