Dashboard
What moved this week, and can I trust the numbers?
A subscription software company’s KPI dashboard: what moved, by period, plan and channel, down to the accounts behind each figure, with checks that flag a broken feed before anyone acts.
In the week to 27 September 2026, recurring revenue fell €567 to €341,931; customer churn, 1.1%, ran above its normal range of 0.7% to 0.9%. All five checks pass.
KPI dashboard · a subscription software company, any week, month or quarter since September 2025
Checks on this load: All five checks pass.
- Data loaded: All four sources to Sunday 27 September
- Duplicate customers: None found
- Totals across sources: Reconcile: billing's 30 new customers are the CRM's 30 paid trials
- Revenue bridge: Adds up: €342,498 + €2,024 − €2,591 = €341,931
- Negative counts: None
Behind the figure
Recurring revenue
Week to 27 Sep 2026 · All plans · All channels
€341,931 of recurring revenue from 4,479 paying customers at the close
| Plan | Customers | Revenue |
|---|---|---|
| Starter−€464 in the week | 2,787 | €80,823 |
| Growth+€495 in the week | 1,224 | €121,176 |
| Scale−€598 in the week | 468 | €139,932 |
| Total | 4,479 | €341,931 |
The rows add to the figure. Click a row to open what is behind it.
Recurring revenue and its net change, thirteen weeks to 27 Sep 2026
The upper axis starts above zero. Click a period for what is behind it.
The same data as a table
| Week to | Starter | Growth | Scale | Recurring revenue | Net new |
|---|---|---|---|---|---|
| Week to 5 Jul 2026 | €79,344 | €121,671 | €135,148 | €336,163 | −€127 |
| Week to 12 Jul 2026 | €79,605 | €122,661 | €135,447 | €337,713 | +€1,550 |
| Week to 19 Jul 2026 | €79,895 | €122,463 | €136,045 | €338,403 | +€690 |
| Week to 26 Jul 2026 | €79,982 | €122,760 | €136,344 | €339,086 | +€683 |
| Week to 2 Aug 2026 | €80,301 | €122,661 | €136,045 | €339,007 | −€79 |
| Week to 9 Aug 2026 | €80,359 | €122,265 | €136,942 | €339,566 | +€559 |
| Week to 16 Aug 2026 | €80,620 | €122,265 | €137,241 | €340,126 | +€560 |
| Week to 23 Aug 2026 | €80,620 | €121,869 | €137,839 | €340,328 | +€202 |
| Week to 30 Aug 2026 | €80,678 | €121,374 | €138,437 | €340,489 | +€161 |
| Week to 6 Sep 2026 | €80,910 | €120,879 | €139,334 | €341,123 | +€634 |
| Week to 13 Sep 2026 | €80,765 | €121,473 | €140,231 | €342,469 | +€1,346 |
| Week to 20 Sep 2026 | €81,287 | €120,681 | €140,530 | €342,498 | +€29 |
| Week to 27 Sep 2026 | €80,823 | €121,176 | €139,932 | €341,931 | −€567 |
Revenue bridge, Week to 27 Sep 2026
The axis starts above zero. Click a bar for the accounts behind it.
The same data as a table
| Line | Accounts | Recurring revenue |
|---|---|---|
| At the start | 4,492 | €342,498 |
| New customers | 30 | +€870 |
| Returning customers | 6 | +€174 |
| Moved up a plan | 14 | +€980 |
| Moved down a plan | 4 | −€410 |
| Left | 49 | −€2,181 |
| At the end | 4,479 | €341,931 |
Paying customers by plan, at 27 Sep 2026
Click a plan for its channels.
The same data as a table
| Plan | Customers | Change | Recurring revenue |
|---|---|---|---|
| Starter | 2,787 | −16 | €80,823 |
| Growth | 1,224 | +5 | €121,176 |
| Scale | 468 | −2 | €139,932 |
New and lost customers, thirteen weeks to 27 Sep 2026
Moves between plans are in the bridge. Click a column for the bridge.
The same data as a table
| Week to | New | Returning | Left | Net |
|---|---|---|---|---|
| Week to 5 Jul 2026 | 39 | 7 | 39 | +7 |
| Week to 12 Jul 2026 | 33 | 9 | 22 | +20 |
| Week to 19 Jul 2026 | 39 | 5 | 34 | +10 |
| Week to 26 Jul 2026 | 32 | 6 | 31 | +7 |
| Week to 2 Aug 2026 | 32 | 7 | 30 | +9 |
| Week to 9 Aug 2026 | 35 | 7 | 41 | +1 |
| Week to 16 Aug 2026 | 37 | 10 | 37 | +10 |
| Week to 23 Aug 2026 | 27 | 7 | 36 | −2 |
| Week to 30 Aug 2026 | 30 | 8 | 39 | −1 |
| Week to 6 Sep 2026 | 36 | 6 | 36 | +6 |
| Week to 13 Sep 2026 | 31 | 11 | 38 | +4 |
| Week to 20 Sep 2026 | 32 | 11 | 32 | +11 |
| Week to 27 Sep 2026 | 30 | 6 | 49 | −13 |
Customer churn against its normal range, thirteen weeks to 27 Sep 2026
Shade: the normal range, the eight weeks before the selected one. Click a point for who left.
The same data as a table
| Week to | Left | Paying at the start | Churn |
|---|---|---|---|
| Week to 5 Jul 2026 | 39 | 4,410 | 0.9% |
| Week to 12 Jul 2026 | 22 | 4,417 | 0.5% |
| Week to 19 Jul 2026 | 34 | 4,437 | 0.8% |
| Week to 26 Jul 2026 | 31 | 4,447 | 0.7% |
| Week to 2 Aug 2026 | 30 | 4,454 | 0.7% |
| Week to 9 Aug 2026 | 41 | 4,463 | 0.9% |
| Week to 16 Aug 2026 | 37 | 4,464 | 0.8% |
| Week to 23 Aug 2026 | 36 | 4,474 | 0.8% |
| Week to 30 Aug 2026 | 39 | 4,472 | 0.9% |
| Week to 6 Sep 2026 | 36 | 4,471 | 0.8% |
| Week to 13 Sep 2026 | 38 | 4,477 | 0.8% |
| Week to 20 Sep 2026 | 32 | 4,481 | 0.7% |
| Week to 27 Sep 2026 | 49 | 4,492 | 1.1% |
Trial conversion, thirteen weeks to 27 Sep 2026
Trials end a month after sign-up. Click a column for the new customers.
The same data as a table
| Week to | Trials ended | Paid | Conversion |
|---|---|---|---|
| Week to 5 Jul 2026 | 138 | 39 | 28.3% |
| Week to 12 Jul 2026 | 113 | 33 | 29.2% |
| Week to 19 Jul 2026 | 139 | 39 | 28.1% |
| Week to 26 Jul 2026 | 136 | 32 | 23.5% |
| Week to 2 Aug 2026 | 124 | 32 | 25.8% |
| Week to 9 Aug 2026 | 155 | 35 | 22.6% |
| Week to 16 Aug 2026 | 145 | 37 | 25.5% |
| Week to 23 Aug 2026 | 124 | 27 | 21.8% |
| Week to 30 Aug 2026 | 151 | 30 | 19.9% |
| Week to 6 Sep 2026 | 161 | 36 | 22.4% |
| Week to 13 Sep 2026 | 143 | 31 | 21.7% |
| Week to 20 Sep 2026 | 136 | 32 | 23.5% |
| Week to 27 Sep 2026 | 132 | 30 | 22.7% |
Acquisition by channel, Week to 27 Sep 2026
Paid: trials that ended and paid, from the CRM. Click a channel for its new customers.
The same data as a table
| Channel | Sign-ups | Trials ended | Paid | Conversion |
|---|---|---|---|---|
| Paid search | 55 | 42 | 12 | 28.6% |
| Paid social | 34 | 38 | 7 | 18.4% |
| Referrals | 17 | 16 | 3 | 18.8% |
| Organic | 39 | 36 | 8 | 22.2% |
How a dashboard like this is built and checked
Sources
- Billing: subscription changes
- CRM: trials that ended
- Product events: sign-ups and logins
- Web analytics: sessions
Loads
- Each source loads at 06:00 every morning with the day before
- Each load records the last day it holds
Checks
- Load dates against the period's end
- Duplicate customer IDs, matched by email
- Billing's new customers against the CRM's paid trials
- The revenue bridge, start to end
- No plan below zero
Metric model
- One definition a KPI, written once
- Every figure a sum over accounts
- Slices by period, plan and channel add back to the company
Views
- Six KPI tiles with their change and range
- Seven linked charts
- A drill-down from any figure to its accounts
A failed check does not stop the dashboard. It flags every tile and chart that reads the broken source, and says what the fault does to the figures, before anyone reads them.
One definition a figure. Each KPI is written once, in the metric model, and every view reads it from there. Every figure is a sum over accounts, so a slice is the same sum over fewer of them: the plans add to the company, the channels add to the company, and at every month-end the company is the monthly revenue report’s to the euro. September 2026 closes at €342,458 of recurring revenue from 4,492 paying customers on both.
| Figure | Definition | Source | Checked by |
|---|---|---|---|
| Recurring revenue | Each paying account's plan price (€29, €99, €299 a month), summed at the period's close | Billing | The bridge: start + new + returning + upgrades − downgrades − lost = end |
| Paying customers | Accounts on a paid plan at the period's close | Billing | Plans and channels add to the total; no plan below zero |
| Customer churn | Accounts that left in the period, over the accounts paying at its start; its normal range is the range of the eight periods before | Billing | The plans' leavers are the bridge's |
| Trial sign-ups | Trials started in the period | Product events | Load dates: a short load is counted like for like |
| Trial conversion | Trials that paid, over the trials that ended | CRM and billing | Billing's new customers, after the duplicate match, are the CRM's paid trials |
| Acquisition channel | The channel an account signed up through | CRM | The channels add to the company |
The drill-down. Every tile, column, bar and row opens the rows behind it: recurring revenue by plan, then by channel, then the bridge’s lines, then the accounts that moved. At each level the rows add to the figure they open from, the accounts included: past the first eight, the rest sum in one row. The path stays above the table, so one click goes back up.
The checks catch the two planted faults. With the late load on, product events stop three days before the period ends, so every period’s sign-ups are counted to the same day and the strip names the views that read them. With the duplicate IDs on, billing gives up to two of the period’s returning customers a new customer ID; matched by email, they still count as returning, and the drill-down shows both IDs. In the week the dashboard opens on, customer churn ran above its normal range: 49 accounts left, and the drill-down lists each of them.
What this shows, and what it does not
What it shows. One run of the company, 56 weeks, 13 months and four quarters of it, read the way an analytics team reads its own: the figure, its change, its normal range, and the rows behind it. A fault moves only what it touches: recurring revenue, customers and churn stay as they were with both faults on, and the strip flags exactly the faults switched on.
What it does not. A check catches only the fault it was written for: a returning customer who signs up with a new email address passes the duplicate check and counts as new. The dashboard says what moved and leaves the why to an analysis. The plan counts are the model’s; which accounts moved, and their channels, are drawn by a stated rule that keeps those counts, so the split by channel is an assumption of the demo, not a finding. The days are simulated from a monthly model whose moves are spread over the days of each month.
The full analysis. The example weekly KPI dashboard is the week to Sunday 27 September 2026 in full, with both faults planted: every source, every check, and what changed. The cohort demo prices the four acquisition channels this dashboard slices by.
Start here
Want your weekly numbers with the checks first?
Up to thirty minutes on your billing data, then a fixed proposal.