ingestlayer/docs

docs · 02 concepts

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.

event · what a chart reads
// 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.country

Dashboards

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.

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.

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.


deliveriesback to docsnext: all fourteen actions