---
title: "Dashboards"
description: "Generate a dashboard from your datasets, add and edit widgets by describing them, drill from an overview into row detail, and share the result."
url: "https://www.jsonify.com/docs/analytics/dashboards"
---

[Documentation](https://www.jsonify.com/docs/) Filter pages

## Getting started

*   [What is Jsonify?](https://www.jsonify.com/docs/)
*   [How pipelines work](https://www.jsonify.com/docs/how-jsonify-works)
*   [Your first pipeline](https://www.jsonify.com/docs/getting-started/first-pipeline)
*   [Workspaces](https://www.jsonify.com/docs/getting-started/workspaces)
*   [Glossary](https://www.jsonify.com/docs/getting-started/glossary)

## Tutorials

*   [Track the Hacker News front page](https://www.jsonify.com/docs/tutorials/hacker-news)
*   [Monitor prices across retailers](https://www.jsonify.com/docs/tutorials/price-monitoring)
*   [Get a Slack alert when a price drops](https://www.jsonify.com/docs/tutorials/slack-price-alert)
*   [Use a dataset from your agent](https://www.jsonify.com/docs/tutorials/agent-query)

## Jason

*   [Chatting with Jason](https://www.jsonify.com/docs/jason/chat)
*   [Changing a pipeline](https://www.jsonify.com/docs/jason/changing-a-pipeline)
*   [Agents, workers and repairs](https://www.jsonify.com/docs/data-agents)

## Pipelines

*   [The pipeline page](https://www.jsonify.com/docs/pipelines/overview)
*   [Statement of work and steps](https://www.jsonify.com/docs/pipelines/statement-of-work)
*   [Inputs and parameters](https://www.jsonify.com/docs/pipelines/inputs)
*   [Settings reference](https://www.jsonify.com/docs/pipelines/settings)
*   [Versions and changelog](https://www.jsonify.com/docs/pipelines/versions)

## Runs

*   [Running a pipeline](https://www.jsonify.com/docs/runs/running)
*   [Scheduling](https://www.jsonify.com/docs/runs/scheduling)
*   [Run detail](https://www.jsonify.com/docs/runs/run-detail)
*   [Run lifecycle](https://www.jsonify.com/docs/runs/lifecycle)
*   [Verification and repair](https://www.jsonify.com/docs/runs/verification-and-repair)

## Datasets

*   [Dataset pages](https://www.jsonify.com/docs/datasets/overview)
*   [Versions](https://www.jsonify.com/docs/datasets/versions)
*   [Query and export](https://www.jsonify.com/docs/datasets/query-and-export)
*   [Row detail and provenance](https://www.jsonify.com/docs/datasets/provenance)
*   [Sharing](https://www.jsonify.com/docs/datasets/sharing)

## Analytics

*   [Dashboards](https://www.jsonify.com/docs/analytics/dashboards)
*   [Newsletters](https://www.jsonify.com/docs/analytics/newsletters)

## Alerts

*   [Alert rules](https://www.jsonify.com/docs/alerts/rules)
*   [Alert history and notifications](https://www.jsonify.com/docs/alerts/history)

## Integrations

*   [Integrations overview](https://www.jsonify.com/docs/integrations/overview)
*   [Slack and email](https://www.jsonify.com/docs/integrations/slack-and-email)
*   [Sheets, warehouses and webhooks](https://www.jsonify.com/docs/integrations/destinations)
*   [Ingest and serve API](https://www.jsonify.com/docs/integrations/api)
*   [Connect your agent (MCP)](https://www.jsonify.com/docs/integrations/mcp)
*   [Command line](https://www.jsonify.com/docs/integrations/cli)

## Workspace and account

*   [Workspace settings](https://www.jsonify.com/docs/workspace/settings)
*   [Team](https://www.jsonify.com/docs/workspace/team)
*   [Billing and usage](https://www.jsonify.com/docs/workspace/billing)
*   [Data retention](https://www.jsonify.com/docs/workspace/data-retention)

## Plans

*   [Radar or Benchmark? Enterprise](https://www.jsonify.com/docs/radar-vs-benchmark)
*   [Row pricing and managed service](https://www.jsonify.com/docs/pricing-model)

## More

*   [Connect your agent](https://www.jsonify.com/connect)
*   [Pricing](https://www.jsonify.com/pricing)
*   [Contact support](https://www.jsonify.com/contact)

[Docs](https://www.jsonify.com/docs/)/Analytics

# Dashboards

Generate a dashboard from your datasets, add and edit widgets by describing them, drill from an overview into row detail, and share the result.

A dashboard is a grid of widgets, each answering one question of one or more datasets: a metric, a chart, a table, a map or a list of insights. Widgets are written from a description and recompute whenever a new dataset version lands, so a dashboard stays current without anyone editing it.

## The Analytics page

**Analytics** in the sidebar opens one list of every dashboard and newsletter in the workspace.

![The All Analytics page listing dashboard and newsletter cards with the New Dashboard button](/assets/images/product/analytics-page.png)

All Analytics. Dashboards and newsletters share one list; the badge on each card says which is which.

*   **Cards.** A bar-chart icon for dashboards, an envelope for newsletters; the name; “14 widgets” for a dashboard or the brief for a newsletter; a **Dashboard** or **Newsletter** badge; and when it was last updated. Click a card to open it.
*   **Search** (placeholder “Search dashboards & newsletters…”) matches names. **Sort** by **Last Updated** (default) or **Name**.
*   **View.** Large grid, small grid or list, remembered per page.
*   **Folders.** **New folder**, drag cards into folders, **Move to folder** on a selection. Dashboards created by the wizard are filed automatically in a folder named after their main dataset.
*   **Delete.** From a card’s menu, or select several and use **Delete**. Deleting a dashboard is permanent; deleting a newsletter also deletes its issues.
*   **New Dashboard.** The primary button; it opens the wizard below. There is no “New Newsletter” button: newsletters are created by asking Jason. See [Newsletters](https://www.jsonify.com/docs/analytics/newsletters).

Hovering **Analytics** in the sidebar lists every dashboard and newsletter for quick switching, and the last breadcrumb on any dashboard is a dropdown of the same list.

## Creating a dashboard: the wizard

**New Dashboard** opens a six-step dialog. The first three ask you questions; the fourth and sixth are waiting steps; the fifth is a preview you can edit.

![The New Dashboard wizard on its first step, Choose Datasets, with ready datasets ticked](/assets/images/product/analytics-wizard.png)

Step 1. Every ready dataset is ticked by default.

1.  **Choose Datasets.** Tick the datasets the dashboard may read. Only datasets with data are listed, each with its row count; all are ticked by default and you need at least one. Press **Next** (it reads “Finding relationships…” while Jsonify scans the datasets for columns that link them).
2.  **Confirm Relationships.** Shown only when links were found, such as `offers/main.product_id → products/main.id`, each with a reason, the kind of link (many to one, one to one) and how many values match. Tick the ones that are real; ones you confirmed in an earlier wizard run are pre-ticked and labelled “previously confirmed”. Confirmed relationships are remembered by the workspace and let widgets join across datasets. Press **Next**.
3.  **Describe Goal.** Optional. Say what you want to learn, for example “find which retailers change prices most and where we are undercut”. Left blank, the workspace goal is used. Press **Design**.
4.  **Designing dashboards…** Ten to thirty seconds. Jsonify proposes a small set of linked dashboards rather than one big one.
5.  **Preview.** A tree of the proposed dashboards: an **Overview**, and under it **Row Detail** dashboards (one per entity, reached by clicking a row) and **Filter** dashboards (one per category column). Each shows its widget count. Click a name to rename it; the cross removes a dashboard (its children move up a level). Press **Create N dashboards**.
6.  **Generating widgets…** Ten to thirty seconds again while each widget’s query is written and tested and the drill-down links are wired. You land on the overview dashboard.

| Step | Option | Values | Default | What it does |
| --- | --- | --- | --- | --- |
| 1 | Dataset checkboxes | Any ready dataset | All ticked | Which datasets the dashboards may read. |
| 2 | Relationship checkboxes | Each proposed link | Previously confirmed ones ticked | Which links to store and use for cross-dataset widgets. |
| 3 | Goal | Free text | Blank (workspace goal) | Steers which widgets are proposed. |
| 5 | Dashboard names and the remove cross | Free text | Proposed names | What gets created. |

> The wizard reads your data to design the dashboards but writes nothing to the datasets. Confirmed relationships are the only thing kept from steps 1 to 3, and they are reused by every later dashboard and by Jason.

You can also ask Jason for a dashboard in chat, for example “make me a dashboard of price changes by retailer over the last 30 days”. Jason creates it and it appears in the list.

## The dashboard page

![The Competitive Market Pulse dashboard with metric tiles, charts, a donut and a table](/assets/images/product/analytics-dashboard.png)

A dashboard. Metrics across the top, charts in the middle, tables at the bottom.

*   **Title.** Click to rename. There is no description field.
*   **Widget count and source button.** “14 widgets” and a database-icon button naming the first linked dataset with “(+1)” if there are more. Click it to open **Sources**.
*   **Add widget.** The primary button; see below. Its menu holds **Recalculate layout**.
*   **The grid.** Twelve columns wide on a desktop. Drag a widget by its title to move it; drag its corner to resize. Changes save on their own. On narrower screens the grid re-flows to eight columns or a single stack and cannot be rearranged.

Widgets load one by one after the page opens; each shows a spinner until its data arrives. Reload the page to refresh the data, or wait: a new dataset version recomputes every widget.

Deleting a dashboard, and sharing it, are not done from this page: delete from the Analytics list, share from the share icon in the top bar.

### Sources

The **Sources** dialog lists the datasets the dashboard can query, with their columns. **Edit sources** switches to a checklist of every ready dataset with **All** / **None** shortcuts. After **Save**, every existing widget is tested against the new set:

*   **All Widgets OK.** Nothing else to do.
*   **Broken Widgets.** Widgets whose query no longer works are listed with the error. Tick the ones to rebuild and press **Regenerate (N)**, or **Skip**. Regeneration keeps each widget’s title and type and writes a new query against the new sources.

## Widget types

Eleven kinds of widget. When you describe a widget without naming a type, one is chosen for you; name the type (“as a donut”, “as a table”) to be sure.

| Type | Shows | What the query must return |
| --- | --- | --- |
| metric | One big number with an optional caption and a change pill | One row: value, and optionally subtitle and change. The change pill means “versus the average or peers”, not “since last period”. |
| bar | Vertical bars, up to 7 categories (8 when grouped, up to 4 series) | Labels and values, or labels with several series. A tall narrow card flips to horizontal automatically. |
| horizontal_bar | Horizontal bars, up to 8 rows | Labels and values. |
| pie | A pie with a legend of up to 6 entries plus “+N more” | Labels and values. |
| donut | The same with a hollow centre | Labels and values. |
| line | Up to 3 smoothed lines over time or an ordered axis | Labels and one to three series. |
| area | Lines with a filled area beneath | Labels and one to three series. |
| scatter | Labelled points on two axes | Points with label, x, y, and axis names. |
| table | A paged, sortable, searchable table | Any columns. Rows can link to a drill-down dashboard. |
| insights | Three to five written observations about the data | Any rows; the sentences are written from them and cached until the data changes. |
| map | Markers on a map, zoomed to fit | Rows with lat/latitude and lng/lon/longitude, and optionally name or label. Markers can drill down. |

Charts use a single purple ramp so a dashboard reads as one piece; a grey bucket is reserved for “other”.

### Table widgets

Tables page on the server: 50 rows per page (25 or 100 selectable), a **Search…** box, and a click-to-sort header. With six rows or fewer a table switches to a **Records** view that stacks each row as label/value pairs; toggle between **Table** and **Records** at the top. Click a row to open it in a dialog with **Prev** / **Next** (Left and Right arrow keys). Column headers are humanised: `avg_price` becomes “Avg Price”.

## Adding a widget

Press **Add widget**.

1.  **Pick a suggestion or describe the widget.** Four suggestions that complement what is already on the dashboard appear under “Suggested widgets”; clicking one adds it straight away. Or type in the box under “Or describe what you want” (for example “Show top 5 retailers by average discount, as a horizontal bar”) and press **Add Widget** or Enter.
2.  **Wait a few seconds.** A title and query are written, the query is run once to prove it works, and the widget is sized and placed in the first free slot. The toast reads “Widget added”.

If a query cannot be written or returns nothing useful, the dialog says “Could not generate a valid query…” — name the columns you mean and try again.

> Show the share of products in each availability state, as a donut, for the Live product offers dataset

## Editing, explaining and deleting a widget

Hover a widget and open its three-dot menu.

*   **Edit.** Shows the current title and asks “What should this widget show?” Describe the change (“only products under $100”, “group by category instead of brand”) and press **Regenerate**. The widget keeps its type, gets a new title and query, and reloads. Toast: “Widget updated”.
*   **Explain.** Shows the exact SQL the widget runs and the raw rows it returned, so you can check what a number means.
*   **Delete.** Removes the widget. Toast: “Widget deleted”.

> **Delete** has no confirmation. The widget and its place in the layout are removed the moment you click. If you delete one by mistake, add it again by describing it; **Explain** on a neighbouring widget is a handy reminder of the column names.

## Recalculate layout

From the **Add widget** menu. Re-packs every widget from scratch: metrics in a row at the top (three, four or six abreast depending on how many), charts and maps next, insights, then tables full width at the bottom. Use it after deleting several widgets or when a hand-arranged layout has become untidy. Your manual positions are replaced; toast “Layout recalculated”.

Only the desktop layout is stored. Tablet and phone layouts are derived from it.

## Parameters, filters and drill-down

The wizard builds a small graph of dashboards rather than one page: an overview, plus **Row Detail** dashboards that take one entity (a product, a retailer) as a parameter, and **Filter** dashboards that take one category value.

*   **Following a link.** In a table widget, cells with a drill-down render as links; on a map, markers are clickable. Clicking opens the target dashboard with the parameter in the address, for example `/dashboards/{id}?product_id=MR-100001`. The breadcrumb shows the parent dashboard and the current entity’s name.
*   **Picking a value.** Opening a parameterised dashboard without a value shows a **Pick a product** dialog listing up to 200 values from the source dataset with a search box. Choose one or close the dialog to go back to the parent.
*   **Stepping through.** On a Row Detail dashboard a bar above the grid reads “Prev · 3 of 120 · AirPods Pro · Next” so you can step through every entity, or click the middle to pick.

Parameters are set up by the wizard; there is no editor for adding them to a dashboard by hand. Ask Jason if you want a new drill-down.

## Sharing a dashboard

Use the share icon in the top bar to add the dashboard to the workspace share. Viewers see the same grid, read-only, with every widget computed at the time they open the page. A dashboard with more than 50 widgets cannot be shared; split it. Parameterised dashboards have no picker on the public page, so share the overview. See [Sharing](https://www.jsonify.com/docs/datasets/sharing).

## Home page analytics

The **Analytics** section of the workspace home page is not a dashboard: it shows pipeline run metrics (rows processed, runs, failures, success rate) for a chosen pipeline and period. Dashboards are about your data; the home tiles are about your pipelines.

## What’s next

[**Newsletters**

Turn the same data into a scheduled written brief.

](https://www.jsonify.com/docs/analytics/newsletters)[**Sharing**

Publish a read-only link to the dashboard.

](https://www.jsonify.com/docs/datasets/sharing)[**Query and export**

Try a question in SQL before making it a widget.

](https://www.jsonify.com/docs/datasets/query-and-export)[**Tutorial: price monitoring**

A multi-retailer tracker with a dashboard at the end.

](https://www.jsonify.com/docs/tutorials/price-monitoring)

[PreviousSharing](https://www.jsonify.com/docs/datasets/sharing) [NextNewsletters](https://www.jsonify.com/docs/analytics/newsletters)

Something missing or wrong? [Tell us](https://www.jsonify.com/contact).[Build it →](https://factory.jsonify.com/setup)

## On this page
