← All articles
Guide

How to Build a KPI Dashboard in Google Sheets (Step by Step)

By Olha · clinic data analyst9 min readUpdated July 2026

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:

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.

The one rule that breaks Sheets dashboards: Google says a slicer filters "all charts and pivot tables in a sheet that use the same data set." Build one pivot from your Visits tab and another from a copy-pasted range, and the slicer will quietly skip the second one. Point every chart and pivot at the same source tab, and this never happens.

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:

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:

10 million
cells per spreadsheet (or 18,278 columns) — every tab shares this one pool
every hour
how often IMPORTRANGE checks another file for updates — not live
10 MB
cap on data received per IMPORTRANGE request

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.

Olha, clinic data analyst
Written by
Olha · clinic data analyst
I build the reporting our managers open every morning at a multi-branch medical clinic — and package it so other practices don't have to start from scratch.

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.