Charts.
Charts turn the events you already send into something you can read at a glance — counted over time, or broken down by a payload attribute. They're built and arranged in the dashboard, on the /charts page, and they read live from your event stream. There's nothing extra to instrument and no warehouse round-trip.
The model
An event type, a breakdown, a shape.
A chart is a small saved definition, not a copy of your data. Three choices make one:
- i.
- event type
- Which event to count — user.signup, checkout.completed, anything you send. One chart, one type.
- ii.
- breakdown
- Optional. A payload attribute to split the count by, written $event.payload.<field>. Leave it off for a single total.
- iii.
- shape
- How to draw it: bar, line, area, pie, or donut. Switchable in one click on the card.
The numbers are recomputed from your events each time you open the page, over the window you pick. The chart stores only the definition — so editing it is instant, and the data is never stale.
// an event you already send. charts read these — nothing else to wire up.
{
"type": "user.signup",
"received_at": "2026-06-29T10:14:00Z",
"payload": {
"email": "ada@acme.co",
"plan": "growth",
"source": "landing-page",
"country": "DE"
}
}
// from this one event type you can build:
// • a count of user.signup over the last 30 days, with trend
// • the same count split by $event.payload.source
// • or by $event.payload.plan, or $event.payload.countryDashboards
A named board for every question.
Charts live on dashboards. A dashboard is a named collection — onboarding, billing, a launch you're watching — and each chart belongs to exactly one of them. Create as many as you need and switch between them from the board picker at the top of the page.
- Default board. One dashboard is your default — it's what /charts opens to. Set any board as default from its menu.
- Its own time window. Each board remembers its own period (7, 30, or 90 days), so a billing board can sit on 90d while onboarding stays on 7d.
- An icon. Give a board an icon to tell it apart at a glance in the picker.
Deleting a board removes its charts too. You always keep at least one board, and deleting your default promotes another in its place.
Breakdowns
Split a count by what it carries.
Counting an event is a start; counting it by an attribute is the answer. Point a chart's breakdown at any scalar field on the payload — $event.payload.source, $event.payload.plan — and the single count splits into one series per value, each colour-keyed, with a legend showing its share of the whole.
When a breakdown has many values, the top eight are kept and the rest fold into a single (other) series, so a high-cardinality attribute stays readable. The attribute picker only offers fields it actually sees on recent events, so you're never guessing at a path. The $event.payload dialect is the same one used across pipelines — see template syntax.
Window
Last 7, 30, or 90 days — with trend.
Every chart counts over the board's active window and shows the total plus a trend against the period immediately before it — last 30 days versus the 30 before, so “up 44%” means something. Change the window from the period control and the whole board recomputes; the choice sticks to that board.
Shapes
Five ways to draw it.
Switch a chart's shape from the small selector on its header — no need to rebuild it. Pie and donut show a share of the whole, so they need a breakdown to divide; the rest work with or without one.
barneeds —Counts over time, stacked when broken down. The default.lineneeds —Trend at a glance; one line per breakdown value.areaneeds —Like line, filled — good for cumulative-feeling volume.pieneeds a breakdownShare of a whole at the current moment, by value.donutneeds a breakdownSame as pie, with the total in the middle.
Layout
Arrange it the way you think.
Drag a chart by its grip to reorder it and drag a corner to resize — width snaps to the grid, height is yours. The layout is saved per board and reflows responsively, so it reads on a laptop or a wall display. Teammates with view-only access see the full board, just without the editing handles.
Charts vs insights
Two different questions.
Insights (the /insights page) answers an operational question — are events flowing through the pipeline, from which sources to which destinations, and what failed. Charts answer a product question — what the events themselves are telling you about signups, usage, and revenue. For cross-step conversion funnels, the warehouse export is still the path; charts cover counts and breakdowns today.