One self-hosted console to run your entire business — commerce, ERP, HRM, CRM & manufacturing

The 12 KPIs a growing business should watch, and a dashboard people actually use

Twelve KPIs across sales, operations and finance, each with a formula, an owner and a cadence. A full month of worked arithmetic, dashboard design rules, and what to do the day a number turns red.

Author

Anichur Rahaman

2 days ago9 min read2 views
The 12 KPIs a growing business should watch, and a dashboard people actually use

It is Monday, 8:40. The owner of a small retailer with one online store and one shop opens three spreadsheets and a banking app. The shop export says September revenue was 52,000. Accounting says 51,300. The courier portal has its own idea of how many parcels arrived late. She spends the first hour of the week reconciling numbers instead of deciding anything.

By 9:45 she has a figure she half trusts, and no clear sense of what to change. The scene is illustrative, but the pattern is real: the business has plenty of data and no shared definition of what its numbers mean.

This article makes the case for twelve KPIs, each with one formula, one owner and one source, shown on a single page. It walks through the definitions, a full month of worked arithmetic, the design rules that keep a dashboard in daily use, and what to do the day a number turns red.

Why dashboards go unread

Most dashboards die in the same way. Someone builds forty charts in a burst of enthusiasm. A month later two charts show different revenue, because one counts orders when they are placed and the other when they are paid. Nobody can say which is right, so people go back to their own spreadsheets.

The cause is not the charting tool. It is that a KPI was never defined as a piece of code or a query: what counts, over which period, from which table, with which exclusions. When the definition lives in someone's head, every export produces a slightly different number.

What one source of truth looks like

The fix is boring and effective. Each KPI is computed by one named query against the system that records the events: orders, stock movements, deliveries and journal entries. A nightly (or hourly) job writes the result into a snapshot table, one row per KPI per period, for example kpi_id = fill_rate, period = 2026-09, value = 94.0, definition_version = 2. The dashboard reads only that table.

The definition_version column matters more than it looks. When you change how return rate is counted, the old months keep their old version and the chart shows the break. Without it, a redefinition quietly rewrites history, and nobody trusts the trend again. Software that writes orders, stock movements and accounting journals into one database makes this much easier, because the KPI query joins tables instead of reconciling files; the inventory side of StoreConsole is built that way.

Leading, lagging, and the tree that links them

A lagging indicator tells you what already happened: revenue, gross margin, cash. A leading indicator moves first and predicts them: conversion, stock accuracy, fill rate. A dashboard of lagging numbers is a rear-view mirror. A dashboard of leading numbers alone is a guess. You need both, connected.

The connection is a tree. Profit sits at the top. It splits into gross margin and sales volume, and each of those splits again until you reach drivers a person can change this week: the conversion of one landing page, the share of orders shipped complete, the days a pallet of stock sits unsold.

KPI tree: profit splits into sales, margin and cash branches, down to daily drivers such as conversion, fill rate and returns
From profit down to the numbers someone can move before lunch.

The tree also stops a common mistake: tracking a number nobody can influence. If a KPI has no path to profit or cash on the tree, it is decoration.

The twelve KPIs, with formulas

Twelve is a ceiling, not a target. These cover sales, operations and finance, which is enough for a business with one to a few dozen outlets.

KPIFormulaCadenceOwner
Net revenueSales minus discounts and returnsDailyHead of sales
Conversion rateOrders ÷ sessionsDailyE-commerce lead
Average order valueNet revenue ÷ ordersDailyE-commerce lead
Repeat rateBuying customers who bought before ÷ all buying customersWeeklyMarketing
Stock accuracyCounted items matching the system ÷ items countedWeeklyInventory manager
Fill rateOrders shipped complete the first time ÷ orders receivedDailyOperations lead
On-time deliveryOrders delivered by the promised date ÷ orders deliveredDailyOperations lead
Return rateUnits returned ÷ units soldWeeklyOperations lead
Gross margin(Net revenue − cost of goods sold) ÷ net revenueWeeklyFinance
Cash conversion cycleDIO + DSO − DPOMonthlyFinance
Days sales outstandingReceivables ÷ credit sales × days in periodMonthlyFinance
Cash runwayCash balance ÷ monthly net cash burnMonthlyOwner

Fill rate and stock accuracy are the two most often skipped and the two that explain the most trouble downstream. A shop that cannot ship what it sold has a stock-accuracy problem long before it has a customer-service problem.

One month, worked through

An illustrative example: a small retailer's September, in US dollars. The inputs are invented but internally consistent, so every figure below can be checked by hand.

  • 40,000 sessions, 1,000 orders, 780 buying customers, 312 of whom had bought before.
  • Net revenue 52,000; cost of goods sold 33,800; 2,400 units sold, 168 returned.
  • 940 orders shipped complete the first time; 960 delivered, 864 of them by the promised date.
  • A stock count of 400 items found 368 matching the system.
  • Average inventory 67,600; receivables 6,000 on credit sales of 12,000; payables 25,350.
  • Cash 54,000 against an average net burn of 6,000 a month.
KPIArithmeticResultTarget
Conversion1,000 ÷ 40,0002.5%2.4%
Average order value52,000 ÷ 1,00052.0052.00
Repeat rate312 ÷ 78040.0%38%
Stock accuracy368 ÷ 40092.0%97%
Fill rate940 ÷ 1,00094.0%96%
On-time delivery864 ÷ 96090.0%92%
Return rate168 ÷ 2,4007.0%6%
Gross margin(52,000 − 33,800) ÷ 52,000 = 18,200 ÷ 52,00035.0%36%
Days inventory (DIO)67,600 ÷ 33,800 × 3060 days55 days
Days sales outstanding (DSO)6,000 ÷ 12,000 × 3015 days15 days
Days payable (DPO)25,350 ÷ 33,800 × 3022.5 days25 days
Cash conversion cycle60 + 15 − 22.552.5 days45 days
Cash runway54,000 ÷ 6,0009.0 months9 months

Read the table the way an owner would. Conversion and repeat rate beat target, so demand is fine. Six numbers miss. Four of them are one chain: stock accuracy, fill rate, return rate and the cash cycle. A stock count that is 8% wrong means some orders are accepted for items that are not on the shelf, which drags fill rate to 94%. Those sales are shipped late, partly or not at all, and returns follow. Meanwhile 67,600 of inventory sits for 60 days, so the cash conversion cycle lands at 52.5 days instead of 45. Fixing one input moves several outputs, and the tree shows which one to fix first.

A note on the cash cycle: DIO and DPO use cost of goods sold as the base, DSO uses credit sales, and all three use the same 30-day period. Mixing periods or bases is the commonest way to get a wrong answer that looks plausible.

Dashboard design rules

Twelve numbers fit on one screen. The rest is discipline about what each tile shows.

  • Value, trend and target on every tile. A bare number says nothing. 94.0% beside a 96% target and a six-week line says plenty.
  • Cadence follows the decision. Fill rate decides what operations does today, so it is daily. Cash runway decides next quarter, so a daily refresh only adds noise.
  • Drill down in one click. A red fill-rate tile should open the list of orders that shipped incomplete, with the missing SKU on each row.
  • Same definition everywhere. The tile, the weekly email and the board pack call one query.
  • One owner per tile. A tile with two owners has none.
Dashboard wireframe: twelve KPI tiles in sales, operations and finance rows, each with value, trend line and target, plus a drill-down list
One screen, three rows, twelve tiles. Each one answers: how much, which way, against what.

When a KPI turns red

The dashboard is only useful if red means something. Before anyone acts, ask whether the number is wrong or the business is.

Check the pipeline first. Did the nightly job run, is a channel missing from the feed, did a definition change? A fill rate that falls from 94% to 61% overnight is usually a broken feed, not a warehouse disaster. If the data is sound, the change is real, and it needs four things written down: an owner, a cause, an action and a review date. A red tile without a review date turns amber on its own after two weeks of nobody looking.

Flowchart: KPI turns red, is it a data problem? yes fix the pipeline and backfill, no confirm the change is real, then assign owner, cause, action and review date
Fix the data or fix the business, never both at once, and never without a date.

Vanity metrics and other traps

  • Traffic and followers. Sessions only matter through conversion. A 30% traffic spike at 1.2% conversion is a cost, not a win.
  • Revenue without margin. A discount campaign can lift revenue 20% and cut gross profit.
  • Averages that hide the tail. A 90% on-time rate can hide one courier at 60%. Allow a split by courier, outlet or channel.
  • Too many KPIs. At twenty, people stop looking. Retire a tile each time you add one.
  • Targets set once. A target from last January is a story about last January.

Four weeks to a dashboard people open

  1. Week 1: write the twelve definitions in one page, including exclusions (test orders, cancelled orders, internal transfers).
  2. Week 1: name one owner per KPI and agree its cadence.
  3. Week 2: build each KPI as one query against the system of record, and compare it to your current spreadsheet number. Explain every difference.
  4. Week 3: create the snapshot table and the single dashboard page, with value, trend and target on each tile.
  5. Week 3: add the drill-down lists for the four tiles that will most often turn red.
  6. Week 4: run the Monday review from the dashboard only, with the red-tile routine, and retire the old spreadsheets.

Monday morning, again

Return to the owner at 8:40. With the snapshot table in place, she opens one page. Revenue says 52,000, the same figure accounting sees, because both read the same orders. Six tiles are red. Fill rate is 94% against 96%, the drill-down lists 60 incomplete orders, and 41 of them name the same six SKUs.

The cause is stock accuracy, so the inventory manager owns the action: recount those six SKUs, with a review on Friday. The meeting takes fifteen minutes. The hour that used to go on reconciling now goes on the six SKUs.

Key takeaways

  • Define each KPI once, as a query, with a version; a dashboard is only as trustworthy as its definitions.
  • Pair lagging numbers (revenue, margin, cash) with leading ones (conversion, stock accuracy, fill rate) and link them in a tree.
  • Twelve KPIs cover sales, operations and finance. Each needs a formula, an owner and a cadence.
  • Show value, trend and target on every tile, and make every red tile drill down to rows.
  • When a KPI turns red, check the data first; if the change is real, record an owner, cause, action and review date.
  • In the worked example, one weak input, stock accuracy at 92%, sat behind a missed fill rate, higher returns and 7.5 extra days in the cash cycle.

Anichur Rahaman is a software architect and the creator of StoreConsole. He designs commerce and ERP systems for growing businesses, with a focus on event-driven architecture, data integrity and self-hosted operations.

About the Author

Anichur Rahaman

Continue Reading