Almost every Mindbody studio owner we know has built one. A Google Sheet, started on a quiet Sunday, with a tab for the sales export and a tab for attendance and a front page that finally puts revenue, members, and fill on one screen. It is a genuinely good idea, and for about six weeks it is the most useful thing in the business. This piece is the honest version of it: how to build one properly, so it lasts as long as it can — and then, plainly, the four ways it stops being true, because knowing those is what tells you whether to keep maintaining it.
Part one: how to build it
The five exports, by job
Ignore the report names, which shift between versions, and think in jobs. Most of Mindbody's report screens export to a spreadsheet file, and you need five of them, for the same date range, every refresh:
| Export | The job | Feeds the tile | Join on |
|---|---|---|---|
| 1 Sales by date range | what money moved, and for what | Revenue MTD, pack sales vs membership sales | client id · sale date |
| 2 Memberships sold and active | who holds an auto-renewing agreement today | Active members, MRR, churn | client id · start / end dates |
| 3 Attendance by client | who came, when, to what | Fill by slot, visits per member, the fade | client id · class date |
| 4 Intros sold | who started an intro, and when it ends | Intro cohort, conversion, expiring this week | client id · first class date |
| 5 Auto-pays that did not go through | which renewals failed | Declines open, recovered | client id · decline date |
The join key is the fourth column, and it is the single most important decision in the build: join on the client identifier, never on the name. Names get retyped, hyphenated, and married; identifiers do not. A dashboard joined on names will double-count a dozen people within a quarter and you will never find out which ones.
The three tabs
- Raw. One tab per export, pasted over in full every refresh, never edited by hand. The moment someone fixes a name in Raw, the sheet has two sources of truth.
- Definitions. One rule per row, in words and as the value the formulas read: does paid-in-full count as a member (yes); what freeze length counts as churn (over 60 days); how long an intro has to convert (30 days after it ends); which staff accounts are excluded. Every formula on the board references a cell here rather than hard-coding the rule. The definitions guide is the list of decisions this tab needs to hold.
- Board. Five tiles, each a formula over Raw filtered by Definitions, each next to the same figure for the trailing three months. Nothing on this tab is typed; everything is derived.
Two formulas do most of the work. A count of memberships whose start is on or before the date and whose end is blank or after it gives active members as of any day. A count of intros grouped by the month of their first class — not the purchase — followed by a count of those same clients holding a membership by the intro end plus thirty days, gives an honest conversion rate by cohort. Both are conditional counts over Raw with the thresholds read from Definitions.
The refresh ritual
Export the five reports for the same range. Paste each over its Raw tab in full. Check that three totals still tie: revenue on the board equals the sales export total, active members equals the memberships export count, and last month's numbers did not change. That last check is the one people skip and the one that matters — if last month moved, a definition drifted or a paste landed wrong. Budget ninety minutes and do it on the same evening each week.
Part two: why it rots
Here is the arithmetic first, because it is smaller than people expect and the point is not the time. Ninety minutes a week is about seventy-eight hours a year, most of them on Sunday. Owners who love their sheet will pay that. What retires the sheet is not the cost of maintaining it; it is that, maintained perfectly, it stops being true in four ways that are hard to see from inside it.
1. The definitions drift inside the formulas
The Definitions tab is the fix, and almost nobody builds one. What happens instead is that "member" is defined by a formula written in March — paid-in-full included, freezes ignored — and in June the studio starts freezing memberships over summer, and the March formula quietly counts thirty frozen people as active. The board says 412. The owner's sense of the room says 380. Nobody can say which is right, because the rule lives inside a formula nobody remembers writing.
2. Dates stop meaning the same thing
Sales are dated by when the money moved. Visits are dated by the class. Memberships by the agreement start. Intros — if you built it right — by the first class, not the purchase. Exports can carry a time zone the sheet does not, so a 5:30pm Pacific sale lands on tomorrow's date. A board that sums across those without deciding one date grammar produces a "great month" that was a good sales week and a poor attendance month, and it does so silently. The numbers-don't-match piece is the full anatomy of this.
3. A paste lands a row off
Not a formula error — a human one, on a Sunday evening, with a header row that was there last week and is not this week. Every total shifts by one client. The tie-out check catches it if you run it; most people stop running it in week four.
4. It holds counts, not people
This is the one that actually retires the sheet, and it has nothing to do with maintenance. A perfectly maintained board says "14 at risk" and "3 declines open." It cannot say who, ranked by how much revenue is at stake and how long since the rhythm broke, with the note to send — so the follow-up still has to be worked from a separate list, by someone, this week. The sheet is a report that learned to refresh. It still answers only the questions it was built to answer, and the questions that cost a studio money are the ones nobody thought to ask this week: which member's rhythm broke, which intro expires Friday untouched, which declined card is on day six. The dashboard piece is about the difference — a report answers, a dashboard notices.
Should you build it?
Yes, if the alternative is nothing. A studio that runs on the five tiles for six weeks learns more about its own numbers than one that never builds them, and the Definitions tab, once written, is the most valuable document in the business regardless of what reads it. Build it with Raw untouched, every formula reading Definitions, and the tie-out check every week. Then be honest about week seven.
The alternative is the same five tiles, with the same definitions written in, refreshed overnight with nobody exporting anything, and every count opening into the names behind it with the follow-up drafted. That is the shape Xyzios gives a Mindbody studio: it connects on top — Mindbody stays your system of record — reads the studio's own history, and retires the Sunday spreadsheet by doing its job every night. Nothing is written to Mindbody except what you tap or approve.
Whichever you choose, write the definitions down first. Every number on either board is only as true as the rule behind it. The full set of studio definitions is the starting list, and the Mindbody analytics page shows what the board holds when the refresh is not your job.