Concepts & Glossary
The handful of nouns the dashboards docs lean on: query, widget, pin, dashboard, scope, snapshot, and publish mode, defined once and tied together.
10 min read
On this page
The rest of the dashboards docs reuse a small set of words: a query, a widget, a pin, a scope, a snapshot, a publish mode. This page defines each one in plain terms and shows how they fit together, so the other pages read cleanly. You do not need any of this to build a dashboard (the editor does it for you), but it helps when a feature behaves in a way that only makes sense once you know the model underneath.
Availability
The three layers: query, widget, dashboard#
The single most useful idea is that there are three separate things, stacked. Most of the time the editor collapses them into one screen, but they are distinct, and a few behaviors only make sense once you can tell them apart.
Query
The data definition. Which feed (or bank, or static table) to read, and how to filter and summarize it. No colors, no chart, just rows.
Widget
The visual. A query plus a chart kind and its styling: what goes on each axis, how numbers are formatted, the title. This is the thing you see and reuse.
Dashboard
The page. A grid of placed widgets, plus dashboard-wide filters and a layout. Each placement is a "pin" of a widget.
Read it bottom to top: a dashboard holds widgets, and each widget reads from a query. Or read it as a sentence: a dashboard shows widgets, a widget draws a query, a query pulls your data.
| Layer | Answers the question | Reusable? |
|---|---|---|
| Query | "Which numbers, and summarized how?" | Yes, across many widgets. |
| Widget | "Drawn as what, and styled how?" | Yes, pinned onto many dashboards. |
| Dashboard | "Arranged where, with which filters?" | It is the page itself. |
Why the split matters
Query#
A query is a reusable, named pull of data: one source (a feed, a live bank, a small static table you type in, or two feeds combined) plus an optional pipeline that filters, summarizes, sorts, and limits the rows. It produces rows; it has no opinion about charts. Because a query is a first-class object in your workspace, two widgets pointing at the same query share a single read and (usually) a single round of summarizing.
You often will not create a query directly. When you point a widget at a feed in the inspector, BankSync authors a query for you behind the scenes. The Binding data guide is, in effect, the guide to authoring a query without ever using the word.
Widget#
A widget is the renderable unit: a query, plus a chart kind, plus styling. It is what you place, resize, and look at. A widget comes in one of two shapes:
- A view widget renders data: a chart, a KPI tile, a gauge, or a table. It carries a query (or an inline one-off data definition) and the field bindings that map columns onto the chart.
- A control widget emits state or an action instead of reading data: a filter control (like a date-range picker), a button, or a text input. It has no query of its own.
A view widget can also overlay a few named datasets alongside its main one, so a single chart can show, say, actual spend from one feed and a budget line from another at the same time. That is an advanced case; most widgets read exactly one query.
Dashboard#
A dashboard is the page: a grid layout, the widgets placed on it, the dashboard-wide filters in the header, an optional theme, and a few settings like a default time zone. The grid is twelve columns wide; each widget sits in a cell you can drag and resize. Mobile layouts are stacked into a single column automatically, so you only ever arrange the desktop layout.

Pin vs. duplicate#
When you add a widget you already built to another dashboard, you are choosing between two very different actions. The words matter.
| Pin | Duplicate | |
|---|---|---|
| What you place | The same widget again | A new, independent copy |
| Edits flow through? | Yes, edit it once, every pin updates | No, the copy is on its own from then on |
| Good for | One chart shown on several dashboards | A starting point you want to change freely |
Pinning places a reference to one widget. Internally each placement is a small "join" record that says "this widget, at this size, in this cell, on this dashboard," optionally with a per-placement title or filter override. The widget itself is stored once. So if you pin your "Monthly spend" chart onto three dashboards and later change its colors, all three update, because they are the same widget. BankSync tracks how many times a widget is used (its reference count) so it can warn you before you delete one that is pinned in several places.
Duplicating makes a brand-new widget that happens to start out identical. From the moment you duplicate, the two are unrelated: editing one never touches the other. Reach for duplicate when you want a variant ("same chart, but for the other account") that you intend to diverge.
Per-placement overrides
Scope: workspace vs. family#
Every query reads at one of two scopes. Most reads are workspace-scoped; family scope is a capability for people who run several client workspaces.
- Workspace (the default): the query reads data from this workspace only, and only workspace members can see it.
- Family: the query rolls up across the child workspaces under a parent. For a client portal setup, that means one chart can total figures across every client workspace at once, instead of one chart per client.
If you only have a single workspace, scope never matters and you can ignore it: everything is workspace-scoped. Family scope is the lever that makes a multi-client roll-up possible, and it is the reason a number on a parent-workspace dashboard can be larger than what any single child workspace would show.
Family scope is a permission, not a default
Snapshots and freshness#
A snapshot is BankSync's internal, cached copy of the rows behind a source. You never see or manage snapshots directly; they exist so that two widgets reading the same data do not fetch it twice, and so a dashboard loads fast. The important part for you is how a snapshot stays honest:
- Every snapshot is stamped with a version. For a feed, the version tracks your last sync; for a live bank source, it is a short time window.
- A new version means the data may have changed, so the old snapshot is thrown out. A stale snapshot is never served. When your feed syncs, the next dashboard load reads the fresh copy.
This is why a dashboard does not need a refresh button: it re-reads its sources when it loads, and the snapshot version guarantees you are looking at current data, as current as your most recent sync.
| Source | How fresh is it? |
|---|---|
| Feed | As fresh as your last sync (typically hourly or daily). |
| Live bank / provider | Read from the bank each time, the most up-to-the-moment, at the cost of a slower load. |
The one exception to "always current" is a frozen published link, covered next.
Publish mode: frozen vs. live#
When you publish a dashboard or a widget to share it, you pick one of two modes. This is the central trade-off of sharing, and it decides whether your shared link tracks new data.
Frozen (default)
A snapshot taken at publish time is packaged and served from a fast edge cache. Nothing is read from your live data on the viewer's side. The link shows exactly what existed when you published, and will not change until you publish again.
Live
Each viewer's load reads your current data through the normal data path. The link reflects new syncs as they happen, at the cost of a live read per view.
A frozen link does not update on its own
See Publishing and sharing for how to publish, regenerate a link, and embed.
Where things are created and where they live#
A quick map of provenance, because a widget on your canvas did not necessarily come from you.
- Origin records who or what made a widget or dashboard: you, a built-in template, an AI agent (if you drive BankSync through one), or custom code. It is a label, not a permission.
- A template is a prebuilt dashboard you can instantiate against your own feeds. A dashboard made from a template remembers where it came from, which is what powers the "update available" prompt when the template is improved. See Dashboard templates.
- Size presets (small, medium, large, full-width) give a widget a sensible default footprint on the grid whether you place it in the app or through an agent, so the same widget lands the same size either way.
A worked example, end to end#
Suppose you want monthly spend on two dashboards, one of which also needs a client-specific heading.
- You point a widget at your Transactions feed and set it to sum Amount by month. Behind the scenes this is a query (the data) wrapped in a widget (drawn as a bar chart).
- You pin that widget onto your "Cashflow" dashboard. The placement records its cell and size.
- You pin the same widget onto your "Board pack" dashboard, and give that placement a per-pin title override ("Spend, last 12 months"). Same widget, local heading.
- Later you recolor the chart once. Both dashboards update, because both are pins of one widget.
- For a client you instead duplicate the widget and switch its source to that client's feed. The copy is independent and will not change when you edit the original.
- You publish the "Board pack" dashboard in frozen mode for a month-end snapshot. The shared link stays fixed until you re-publish, even as new transactions arrive.
That sequence touches every term on this page: query, widget, pin, override, duplicate, and frozen publish mode.
Glossary at a glance#
| Term | In one line |
|---|---|
| Query | A reusable, named data pull: one source plus filter / summarize / sort. Produces rows. |
| Widget | A query drawn as a chart, KPI, gauge, or table, with styling. The thing you reuse. |
| View widget | A widget that renders data and carries a query. |
| Control widget | A widget that emits a filter, button, or input, with no query. |
| Dashboard | The page: a grid of pinned widgets plus dashboard-wide filters. |
| Pin | A placement of an existing widget on a dashboard. Shared, edits flow through. |
| Duplicate | A new, independent copy of a widget. Diverges freely. |
| Reference count | How many places a widget is used; warns you before deleting a shared one. |
| Scope | Workspace (this workspace only) or family (rolled up across child workspaces). |
| Snapshot | BankSync's internal cached rows for a source, versioned so stale data is never served. |
| Publish mode | Frozen (point-in-time, edge-served) or live (reads current data per view). |
| Origin | Who made it: you, a built-in template, an AI agent, or custom code. |
| Template | A prebuilt dashboard you point at your own feeds. |
Related guides#
- Dashboards & widgets overview: the big picture and the editor.
- Binding data: authoring a query without using the word.
- KPI, table & gauge widgets: the non-chart view widgets.
- Dashboard templates: start from a prebuilt dashboard.
- Publishing and sharing: frozen vs. live, links, and embeds.
- Filters & cross-filtering: control widgets and dashboard-wide filters.
Learn to bind data
Use this page with your AI assistant
Every BankSync doc is available as plain Markdown for agents and LLMs.
