A spreadsheet can track personal training packages properly up to about fifteen active clients and one trainer. Past that it doesn't fail on arithmetic — it fails on the second person entering data, and it fails at payday. Below is the sheet that works while it works: two tabs, seven columns each, four formulas. Then the five signals that you've outgrown it, and what software genuinely does differently rather than the usual list of features.
I'd rather you used the sheet for a year than paid for software you don't need yet. So this is written to make the sheet good, and to be honest about where it stops.
What the tracking system has to answer
Whatever you use, it exists to answer four questions, and it needs to answer them on demand — not after a Sunday of reconciling.
- How many sessions does this client have left, and when does the pack expire?
- How many sessions did each trainer deliver this month — done, late-cancelled, no-show?
- Which packs are about to run out or expire in the next two weeks?
- What do I owe each trainer, and what has each client paid?
The Etsy and Striive templates you'll find on the first page of search answer the first question. Almost none answer the second and fourth, which is where the money is — trainer payouts computed on delivered sessions need a log of delivered sessions, per trainer, per month.
The two-tab sheet, column by column
Build it in Google Sheets so it's on every phone. Tab one is the list of packages; tab two is the log of sessions. Everything else is a formula off those two.
| Tab 1: Packages — column | What goes in it | How |
|---|---|---|
| A · Client | Name, spelled the same way every time | Typed once at sale; use a dropdown from a Clients list |
| B · Trainer | Assigned trainer | Dropdown |
| C · Pack size | 8, 12, 24 | Typed at sale |
| D · Paid | Amount and date, e.g. "3600 · 17 Sep" | Typed at sale |
| E · Valid to | Expiry date | Typed at sale, from the receipt |
| F · Used | Sessions delivered or forfeited so far | =COUNTIFS(Sessions!B:B, A2, Sessions!D:D, "<>cancelled-in-time") — counts done, late cancels and no-shows for this client |
| G · Left | Balance | =C2-F2 |
| H · Status | Active / Low / Expired / Finished | =IF(G2<=0,"Finished",IF(E2<TODAY(),"Expired",IF(G2<=2,"Low","Active"))) |
| Tab 2: Sessions — column | What goes in it | How |
|---|---|---|
| A · Date | Session date | Typed, same day |
| B · Client | Same spelling as tab 1 | Dropdown |
| C · Trainer | Who delivered it | Dropdown |
| D · Status | done / late-cancel / no-show / cancelled-in-time | Dropdown — this column is the whole system |
| E · Note | Anything worth remembering | Optional |
| F · Payable | Does the trainer get paid for it? | =IF(OR(D2="done",D2="late-cancel",D2="no-show"),1,0) — or drop late cancels if your pay policy does |
The month's payout for each trainer is one more formula on a third tab: =SUMIFS(Sessions!F:F, Sessions!C:C, "Ahmed", Sessions!A:A, ">="&DATE(2026,9,1), Sessions!A:A, "<"&DATE(2026,10,1)) multiplied by their per-session rate. Add a base salary column and you've got the payroll input. The "running out this week" list is a filter on tab 1 for Status = Low or Valid-to within 14 days.
That's the whole thing. Four formulas. It answers all four questions, and for a single trainer who logs their own sessions it's honestly good.
The rules that keep the sheet honest
- One person enters sessions. If the trainer logs their own, the owner spot-checks a week a month against the calendar. If the owner logs, the trainer sends a message after every session. Never both.
- Log the session the same day. A Sunday catch-up from memory is where the numbers start to drift.
- A late cancel or no-show is a row. It comes off the client's balance the same as a delivered session, so it has to be logged like one. This is where most sheets go wrong — the trainer feels bad and doesn't log it, and the balance is wrong from then on.
- Never edit a past row. If something was wrong, add a correcting row with a note. You want to be able to see what changed at payday.
- Tell the client their balance after each session — a message, a line on the receipt. The sheet is only as trustworthy as the last time a client could check it.
The five signals you've outgrown it
None of these is "you have too many clients". Client count isn't the problem; people and payday are.
- A second trainer logs sessions. Now two people are entering, one of them from memory, and the first payday where the trainer says 64 and the sheet says 61 costs you an afternoon and some trust. This is the crossover, and it usually arrives before twenty clients.
- A client asks "how many do I have left?" and the answer is "let me check". Every time that happens the client learns the number is soft, and a soft number is the beginning of every expiry argument in the agreement post.
- The sheet lives on one phone. The owner's, usually. When they're away, sessions get logged on Monday, and see rule two above.
- Renewals happen by accident. The "Low" status is right there in column H, but nobody looks at column H on a Tuesday evening. The renewal routine starts at two sessions left, and that needs a nudge that reaches the trainer and the client without anyone opening a spreadsheet.
- Payday takes a weekend. Three trainers, three pay models, late cancels that are payable for one and not another, a base for two of them — the SUMIFS still works, but you're now maintaining payroll logic in a sheet, and a wrong cell reference is a wrong salary.
What software actually changes
Here's the honest comparison on the four questions, plus the one that decides it — who can see the answer.
| The two-tab sheet | PT studio software | |
|---|---|---|
| Sessions left, per client | Yes, if every session got logged | Yes — and the client sees the same number on their phone |
| Delivered per trainer, per month | Yes, via COUNTIFS | Yes, from sessions the trainer marked done, with a timestamp |
| Running out or expiring soon | A filter someone has to remember to run | A list on the owner's screen, and a nudge to trainer and client at two left |
| Owed to each trainer | Yes, if you maintain the payout logic | Computed from the pay model you set per trainer |
| Who enters the session | Whoever has the sheet | The trainer who delivered it, from their phone, right after |
| Who can see the balance | Whoever has the sheet | The trainer, the client and the owner — the same number |
| Booking | A separate calendar | Clients book into the trainer's real availability from the app; the trainer confirms — one calendar across the team |
| Cost | Free | From about $79 a month — roughly one session |
The rows that matter are the last four. Software doesn't do better arithmetic than your sheet. It moves the entry to the person who was in the room, at the moment it happened, and it shows the result to the person who paid for it. That's what ends the payday disagreement and the "let me check" — not a feature, a change in who holds the number.
For one trainer and a dozen clients, the sheet above will hold for a while. For a studio with a team, the change is the difference between owning the business and owning a reconciliation problem — and the switch takes an afternoon, because the sheet's two tabs are exactly the two things the software imports. We built the trainer app in ManageYourGym around one tap after the session precisely because every studio we talked to had a version of the sheet above, and every one of them had stopped trusting it the month the second trainer started.
Frequently asked questions
How do personal trainers keep track of client sessions?
Solo trainers mostly use a spreadsheet or a notes app: a list of packages with a balance, and a log of sessions with a status. That works while one person enters everything the same day. Studios with more than one trainer use software where each trainer marks their own sessions from their phone and the client sees their balance, because the sheet stops being trustworthy once two people write to it.
What should a PT client tracking spreadsheet include?
Two tabs. A packages tab with client, trainer, pack size, amount paid, expiry, sessions used (a COUNTIFS off the log), sessions left and a status. A sessions tab with date, client, trainer and a status of done, late-cancel, no-show or cancelled-in-time. Payouts per trainer and the "running out soon" list are formulas and filters off those two.
When should a PT studio move from a spreadsheet to software?
When a second trainer starts logging sessions, or earlier if you're answering "how many do I have left?" with "let me check". Client count matters less than the number of people entering data and how long payday takes. Most studios cross that line somewhere between fifteen and twenty-five clients.
Should late cancellations count as a session?
If your policy says they're deducted from the package, then yes, and they must be logged as a row exactly like a delivered session — that's what keeps the client's balance right. Whether the trainer is paid for a late cancel is a separate decision; make it once, write it into the pay model, and apply it every time.