To build a KPI dashboard in Google Sheets: put clean data on one tab, summarize it with pivot tables or the QUERY function, chart the results, and add one slicer wired to everything so a single click filters the whole screen. That's not a workaround — Google's own help pages document every piece of this and even call it a "custom dashboard." No Apps Script, no add-ons.
Here's the full build, step by step, using a clinic's numbers as the running example — plus the two limits that matter most for whether Sheets is the right home for your dashboard — the cell ceiling, and how "live" your data really is — and a few smaller ones worth knowing.
The architecture (get this right and the rest is clicking)
Almost every messy Sheets dashboard fails the same way: someone builds each chart from a different range on a different tab, then discovers the filter only moves one of them. So start from the shape, not the styling:
- One clean data tab — every row is one event (a visit, a claim, an appointment). This is the only place raw data lives.
- One summary layer — pivot tables and
QUERYformulas that roll that data up into each KPI, all reading from that same tab. - One dashboard tab that shows the charts and numbers — with a single slicer that drives every chart and pivot at once.
Google documents each of these pieces itself: pivot tables to summarize, charts to visualize, and slicers that — in Google's words — let you "add a slicer to filter your tables, charts, or pivot tables" when "you create a custom dashboard." Follow the architecture and the dashboard is mostly assembly.
Step by step
Get your data onto one clean tab
Export from your practice-management system and lay it out so one row = one visit: date, provider, location, service, amount billed, amount collected, appointment status. One header row, no merged cells, no blank rows, no totals mixed into the data.
One habit here pays off later: reference closed ranges (A2:A50000) rather than whole-column open ranges (A:A). Google's performance guidance notes that open ranges read every row — including the empty ones — so a closed range keeps a growing sheet quick. Just size it comfortably above the rows you expect, or tomorrow's records fall outside it.
Summarize with pivot tables
Insert > Pivot table, pointing at your data tab. A pivot table is Google's tool to "narrow down a large data set" and "see relationships between data points" — which is how you turn a raw export into a KPI. Make one for each question: revenue by month, visits by provider, no-shows by weekday, collected versus billed by payer.
And the part most tutorials skip: pivot tables in Sheets update themselves. Google states plainly that "the pivot table refreshes any time you change the source data cells it's drawn from." Change a number in the source, the KPI moves. No rebuild.
Do the heavy lifting with functions
Where a pivot can't reach, three functions carry a dashboard. QUERY "runs a Google Visualization API Query Language query across data" — SQL-style summaries in one cell. FILTER "returns a filtered version of the source range… only rows or columns which meet the specified conditions." UNIQUE "returns unique rows in the provided source range, discarding duplicates" — perfect for a clean list of providers to feed a dropdown.
For the trend that sits next to a KPI number, SPARKLINE "creates a miniature chart contained within a single cell." A twelve-month sparkline beside the revenue figure tells the story a big chart doesn't have room for.
Chart the results
Select a pivot or a summary range and Insert > Chart. Google's chart editor covers the types a dashboard needs — column, bar, line, area, pie, combo and more. Like the pivots, a chart follows its source: change the underlying numbers and the chart redraws.
Keep chart types boring on purpose — columns for time, bars for ranking, a line for trend. Nobody ever made a better decision because of a 3-D pie.
Wire ONE slicer to everything — this is the dashboard
On the dashboard tab, Data > Add a slicer and pick a field (Location, Provider, Service). This is the step that turns a pile of charts into a dashboard: one click on "Location: North" and every KPI on the screen re-filters together. Google is explicit that "slicers apply to all charts and pivot tables in a sheet that use the same data set" — and that last clause is the rule that makes or breaks the whole build.
Make it shareable without letting anyone break it
When several people open the same dashboard, a plain filter is a hazard: Google notes that "when you add a filter, anyone with access to your spreadsheet will find the filter too" — so one viewer's filtering rearranges everyone's screen. Use a filter view instead, which "only applies to your view of the spreadsheet." Then share by link with view-only access, and the dashboard stays put.
How "live" is live? (pulling in outside data)
The tempting move is to link one master sheet to others with IMPORTRANGE so the dashboard "updates itself." It can — but it pays to know exactly what "live" means here, because this is where Sheets is most often oversold. Straight from Google's documentation:
- It's not real time. IMPORTRANGE "automatically checks for updates every hour while the document is open." A number changed at 9:05 may not arrive until 10.
- It has a size ceiling. Each pull is "capped at 10MB of received data per request."
- It can't use volatile helpers. Import functions "can't directly or indirectly reference a volatile function like NOW, RAND, or RANDBETWEEN" — the one exception being
TODAY. - It travels the internet even inside your own account. Google warns that the import "still goes through the internet" even if you own the file — and that as a result "you may experience delays and intermittent connections that slow load speed."
For a small dashboard fed by data that already lives in the same file, none of this bites — pivots and charts refresh on change and you'll never notice. It's the moment you stitch many files together with IMPORTRANGE that "live" turns into "hourly, over the wire, under 10MB."
Where Google Sheets is the right tool — and where it breaks
Sheets is a genuinely good dashboard tool, and for a single-location practice it may be all you ever need. Google itself markets it that way — a Workspace post from January 2026, "The 5-minute data dashboard," pitches building one to "share the story behind the data with easy-to-understand charts and graphs." Where Sheets wins is real: it's free, installs nothing, and is built for live collaboration — a file "can only be edited on up to 100 open tabs or devices" at once, which is a limit most teams will never reach.
But it has documented ceilings, and they're worth knowing before you build your whole reporting life on top of them:
Two more constraints are worth naming honestly. First, performance drifts as the sheet grows: Google cautions that NOW is "a volatile function, updating on every edit made to the spreadsheet, and can hurt spreadsheet performance," and that conditional formatting "can take a long time to calculate… As the data grows, there are more and more evaluations that need to happen." Second — and this one isn't a Google quote but a design fact — Sheets has no formal relational data model. There's no equivalent of Excel's Data Model or Power BI's relationships; you join tables with lookups and QUERY, which is fine for one flat table and strains once you have several that need to relate.
So the honest boundary: reach for Sheets when the data is small and live, the team is collaborating in the browser, and free-and-instant matters more than structure. Outgrow any of those — many locations, a real model, data that won't sit inside one file — and the cracks show. That's the point where a purpose-built model earns its keep, and Power BI is free to build on the desktop. One more myth worth retiring: none of this is gated behind paid Google Workspace. Google documents a single 10-million-cell limit for every Sheet and its function list isn't plan-restricted — a free account builds the same dashboard; Workspace buys admin, sharing controls and support, not capability.
What to actually put on it
The mechanics are the easy half. The harder question is which numbers earn a spot — and the answer isn't "all of them." Start with the handful that change decisions: revenue and collection rate, no-shows, provider utilisation, new and returning patients. Each belongs on the dashboard because someone will do something about it on Monday. We break down the full set in the 12 KPIs every medical practice should track. And if you're weighing Sheets against a spreadsheet you can take offline, here's the same build done in Excel — and six dashboard layouts and when each one fits.
Or skip the build entirely
Clinic Vitals — Excel Edition is a finished five-page clinic dashboard that reads your own file. Drop in your export, refresh, and you're looking at your practice — every pivot and slicer already wired, no assembly. It's a structured, single-file layout you own outright and refresh yourself when new numbers come in. Sheets wins on free, live, in-the-browser collaboration; this wins on done-for-you structure.
See the templates →Frequently asked questions
How do you build a dashboard in Google Sheets?
Put clean data on one tab, summarize it with pivot tables or the QUERY function, chart the results, then add a slicer so a single click filters everything at once. Google itself calls this a custom dashboard and documents slicers, pivot tables and charts as the tools for it — no Apps Script required.
What is the cell limit in Google Sheets?
Google documents a limit of up to 10 million cells or 18,278 columns per spreadsheet, for sheets created in or converted to Google Sheets. Every tab in the file shares that same 10-million-cell pool — there is no per-tab allowance.
Do Google Sheets pivot tables and charts update automatically?
Yes. Google states the pivot table refreshes any time you change the source data cells it's drawn from, and charts follow their source. The one thing that isn't instant is data pulled from another file with IMPORTRANGE, which checks for updates hourly.
Does IMPORTRANGE update in real time?
No. Google states IMPORTRANGE automatically checks for updates every hour while the document is open, is capped at 10MB of received data per request, and can't reference volatile functions like NOW, RAND or RANDBETWEEN. It's a periodic pull, not a live feed.
Do I need paid Google Workspace to build a dashboard?
No. Google documents a single 10-million-cell limit for every Google Sheet and its function list isn't plan-gated, so a free account builds the same dashboard. Google Workspace adds admin controls, sharing management, storage and support — not dashboard capability.
Every Google Sheets feature, limit and quote in this guide is taken from Google's own documentation, linked below. Menu paths and some limits can change over time and can differ between browsers and account types. Lucid Vitals is not affiliated with Google.
Sources — all Google official
- Google — Filter charts and tables with Slicers ("custom dashboard"; same-data-set rule)
- Google — Create & use pivot tables (purpose; auto-refresh on source change)
- Google — Files you can store in Google Drive (10 million cells / 18,278 columns)
- Google — IMPORTRANGE (hourly refresh; 10MB cap; no volatile functions)
- Google — Google Sheets function list (QUERY, FILTER, UNIQUE, SPARKLINE)
- Google — Add & edit a chart or graph
- Google — Optimize your data references to improve Sheets performance (open vs closed ranges; imports go over the internet)
- Google — Improve Sheets performance (conditional formatting at scale)
- Google — NOW is a volatile function and can hurt performance
- Google — Filter views vs filters ("only applies to your view")
- Google — Share files from Google Drive (link sharing; up to 100 open tabs or devices)
- Google — Work on Google Docs, Sheets & Slides offline
- Google Workspace — The 5-minute data dashboard: Visualize and analyze with Sheets (Jan 2026)