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
| Type | Description | Best for |
|---|---|---|
text | Large single value with status color | KPIs, counts, prices |
chart | Line chart over time with filled area | Trending metrics, multi-series overlay |
bars | Bar chart over time | Counts, comparisons side by side |
candlestick | OHLC candle chart | Prices, multi-series overlay |
histogram | Distribution of categorical values over time | Status breakdowns, error types |
stacked_bar | Proportional segments from structured data or history | Plan breakdowns, cost splits |
heatmap | Color-intensity grid of recent values | Volatility, anomaly spotting |
table | Sortable grid of all result rows | Row results, stat summaries |
event_feed | Scrollable list of recent string values | Logs, 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
cpuandmemoryfrom 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_usdof 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
| user | plan | mrr |
|---|---|---|
| alice@acme.com | Pro | $420 |
| bob@corp.io | Enterprise | $1,200 |
| carol@startup.co | Pro | $420 |
| dan@agency.dev | Free | $0 |
09:18 PM · 1h · Top users by revenue
Transposed
09:18 PM · 1h · Monthly stats
Multi-series
Server metrics
44
09:18 PM · 1h
SQL QueryAll rows
Cost by service
9.8
09:18 PM · 1h
SQL QueryStacked bar
Revenue by plan
8400
09:18 PM · 1h
SQL Query