← All notesStudio data

The Sunday spreadsheet.How to build it, and why it rots.

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:

ExportThe jobFeeds the tileJoin on
1 Sales by date rangewhat money moved, and for whatRevenue MTD, pack sales vs membership salesclient id · sale date
2 Memberships sold and activewho holds an auto-renewing agreement todayActive members, MRR, churnclient id · start / end dates
3 Attendance by clientwho came, when, to whatFill by slot, visits per member, the fadeclient id · class date
4 Intros soldwho started an intro, and when it endsIntro cohort, conversion, expiring this weekclient id · first class date
5 Auto-pays that did not go throughwhich renewals failedDeclines open, recoveredclient 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

The build: exports, raw, definitions, boardsalesmembershipsattendanceintrosfailed auto-paysRawpaste, never editDefinitionsone rule per rowBoardfive tilesevery Sunday · about 90 minutes · a humanthe build that lasts longest: raw is pasted and never edited; every formula reads its rule from definitions
  • 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.

Active members · week 9 of the sheet
The board tile · formula written in March, freezes not excluded412
This week's export · memberships active today388
Last month's board · changed since it was saved401 · was 397
Which one is right?nobody can say
illustrative · three numbers for one question · the rule that would settle it lives inside a formula from March

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.

Straight answers

Common questions.

Can you connect Mindbody to Google Sheets?

The practical route most studios use is export and paste: the report screens you need export to a spreadsheet file, and a Sheet with a raw tab per export, a definitions tab, and a board tab turns them into a dashboard. It works. The catch is that every refresh is a human exporting five reports on a Sunday, and the dashboard is only as current as the last time someone did that.

Which Mindbody reports do I need for a dashboard?

Five, described by the job they do: sales by date range, memberships sold and active, attendance by client, intros sold, and the list of auto-pays that did not go through. Each maps to one tile on the board. Export them for the same date range, and join them on the client identifier rather than the name — names get retyped, identifiers do not.

Why does my studio spreadsheet stop matching Mindbody?

Four reasons, in order of how often we see them: a formula written in March still defines "member" the way March did while the studio changed its rules; the export dates and the formula dates mean different things (sale date versus visit date, and time zones on the export); a paste landed one row off; and nobody re-derived the numbers from scratch after the first month, so a drift became the baseline. The fix is a definitions tab that every formula references, and a monthly re-derivation from raw.

How much time does a studio dashboard in Sheets take to maintain?

Assume ninety minutes a week for a careful refresh — five exports, five pastes, a check that the totals still tie — and that is around seventy-eight hours a year, most of it on Sunday evening. The larger cost is what the sheet cannot do in that time: it holds counts, not people, so the fade list and the failed-payment follow-up still have to be worked separately.

Does Xyzios replace the Mindbody spreadsheet?

Yes — that is the specific job. Xyzios connects on top of Mindbody, which stays your system of record, reads the studio’s own history overnight, and keeps the board current with nobody exporting anything: the five questions, your definitions written in, goals paced from your own history, and the names behind each count, with the follow-up drafted for your approval. Nothing is written to Mindbody except what you tap or approve.

Try it on your own numbers

Every board in this piece is a screen in the product.

Shown here on demo data. Connect Mindbody and it fills with yours. The first month is $99: the whole OS, every board, hands-on onboarding.

No card today · billing starts when you're connected and say go

Every number, one screen. The studio grows.

Studio notes

A sharper studio,
one email at a time.

Occasional notes on running a tighter studio — leaks, saves, and what the numbers say. No spam, no drip campaign, unsubscribe any time.

Written by the people who build Xyzios — not a content farm. Read the latest notes →