/Docs
Dashboard
Features

Display types

Every widget that produces a value can visualize it in multiple ways. Pick a display type that fits your data: a single number, a time-series chart, a distribution, or a full table. Widgets that return structured data unlock additional modes like multi-series charts.

Scalar vs structured data

A scalar result is a single number or string, which most widgets return by default. A structured result is a JSON array of objects (rows), where each object has named fields (columns). Widgets that can return structured data include:

  • SQL query — every query result is saved as the full row array
  • Dune Analytics — query results are saved as the full row array
  • Custom JS — return an object or array from your function to get structured output
  • Webhook — post a JSON object or array as the value to get structured output
  • Live lookup (AI) and Minecraft RCON — can also return structured data

The widget auto-detects the shape at display time. You do not need to configure anything extra for basic text or table display.

Available display types

TypeDescriptionBest for
textLarge single value with status colorKPIs, counts, prices
chartLine chart over time with filled areaTrending metrics, multi-series overlay
barsBar chart over timeCounts, comparisons side by side
candlestickOHLC candle chartPrices, multi-series overlay
histogramDistribution of categorical values over timeStatus breakdowns, error types
stacked_barProportional segments from structured data or historyPlan breakdowns, cost splits
heatmapColor-intensity grid of recent valuesVolatility, anomaly spotting
tableSortable grid of all result rowsRow results, stat summaries
event_feedScrollable list of recent string valuesLogs, status changes, alerts

The table view

When your query returns multiple rows, the table view renders a sortable grid with one row per result and one column per field. When your query returns exactly one row (for example a summary query with several aggregated columns), the table switches to a transposed layout: each field becomes its own labeled row with the field name on the left and the value on the right. This makes stat summaries much easier to read at a glance without horizontally scrolling across a single wide row.

Selecting a value key

When a widget returns structured data, a value key dropdown appears in the top bar. It lets you choose which field to use for charts and the text display. The default option, Auto, picks the first column that contains a number. You can also select a specific field by name.

When the data has only one row, you can select multiple keys at once, each becoming a separate chart series. When it has multiple rows, only one key can be selected at a time.

Single row vs all rows

The widget automatically detects which mode to use based on your data. If the latest result contains more than one row, it switches to all-rows mode. Otherwise it uses single-row mode.

  • Single row — each run produces one row. Select multiple keys and each key becomes a separate series plotted over time. Use this to overlay related metrics that come from the same query row (for example cpu and memory from a stats query).
  • All rows — each run produces multiple rows. Select one key and each row position becomes a separate series tracked across snapshots. Use this to compare rows over time (for example the cost_usd of each service, where each service is a different row).

Multi-series charts

In both single-row and all-rows modes, selecting more than one series overlays them on the same chart. Each series gets a distinct color. Hovering over any point shows a tooltip with a colored dot and label for every series at that position.

  • Chart — overlaid line/area curves, one per series
  • Bars — grouped bars side by side at each time position
  • Candlestick — candles overlaid at the same x position with per-series colors
  • Histogram — grouped bins per category label, one group per selected key

Stacked bar with structured data

The stacked bar chart has three modes depending on your key selection:

  • All rows + one key — the latest snapshot's rows become segments. Each row's first text column is used as the label and the selected key's numeric value is the weight. Use this to show a cost or revenue breakdown across services or categories.
  • Single row + multiple keys — the selected keys become segments and their numeric values are the weights. Use this to break down a single row into its proportional parts.
  • No structured data — falls back to historical mode, counting how often each value appeared across snapshots. Useful for categorical widgets like status monitors.

Table

userplanmrr
alice@acme.comPro$420
bob@corp.ioEnterprise$1,200
carol@startup.coPro$420
dan@agency.devFree$0

09:18 PM · 1h · Top users by revenue

SQL Query

Transposed

total users1842
new signups134
churn rate2.1%
mrr$18,420

09:18 PM · 1h · Monthly stats

SQL Query

Multi-series

Server metrics

44

09:18 PM · 1h

SQL Query

All rows

Cost by service

9.8

09:18 PM · 1h

SQL Query

Stacked bar

Revenue by plan

8400

Pro32%
Enterprise55%
Starter12%

09:18 PM · 1h

SQL Query