Guide
Personal Training Package Tracker: Catching Session Drift Before It Costs You a Renewal
Why session counts drift out of memory, the formula that keeps Sessions Remaining honest on its own, and the two color flags that catch a renewal moment and an unpaid balance before either slips past you.
A personal trainer selling packages is running a small tab system for every client at once — how many sessions they bought, how many they've used, how much they've actually paid versus what the package costs. None of that is hard to track for one client. It's hard to track for fifteen, across single sessions, 5-packs, 10-packs, and a couple of monthly unlimited clients, while also actually training people. A package tracker spreadsheet doesn't make the numbers more complicated; it just stops asking you to hold all of them in your head at once.
Why session counts drift
The drift is rarely one big mistake — it's small ones compounding. A client reschedules and the session gets logged a week later, or not at all. Two clients on similar packages blur together after a busy month. A package renewal happens verbally in the gym and never makes it into any record. None of these are dramatic on their own, but the failure mode they lead to is real: training a client who's actually out of sessions without realizing it, or letting a client's package run down to nothing without ever having the renewal conversation, simply because nothing flagged that the moment had arrived.
The package log: what to record per sale
Keep one row per package sold, with these columns:
| Column | Why it's there |
|---|---|
| Client Name | Who bought the package. |
| Package Type | A short dropdown — feeds the revenue-by-type breakdown below. |
| Purchase Date | When the package was sold. |
| Sessions Included | How many sessions the package covers. |
| Sessions Used | The one field you actually update as sessions happen. |
| Sessions Remaining | A live formula — Included minus Used. |
| Package Price | What the package costs in total. |
| Amount Paid | What's actually been collected so far. |
| Balance Due | A live formula — Price minus Paid. |
| Payment Status | A dropdown you set yourself: Paid, Partial, Unpaid. |
| Notes | Anything else worth remembering about the client or the sale. |
Take an actual example: a client buys a 10-session pack for $650, pays in full, and has used 4 sessions so far. Sessions Remaining reads 10 minus 4, which is 6 — no separate calculation, just log Sessions Used and the number updates. Balance Due reads $650 minus $650, which is $0. Two formulas, and the row tells you everything at a glance: six sessions left, nothing owed.
Packages sold vs sessions used
Package Type is a settings-list dropdown with six defaults — Single Session, 5-Session Pack, 10-Session Pack, 20-Session Pack, Monthly Unlimited, Other — all editable to match what you actually sell. That same list drives a Packages by Type table on the Dashboard, counting how many of each type sold and totaling revenue per type. That distinction matters because "most popular" and "most profitable" aren't always the same package: a type that sells often at a lower price can bring in less total revenue than one that sells less often at a higher price, and the count alone won't tell you which is which — the revenue column will.
Catching the renewal moment before it's missed
Sessions Remaining does more than subtract — it's watched by conditional formatting. Any row where Sessions Remaining lands at 0, 1, or 2 turns amber, with bold text, so it's visually distinct from every other row on the log the moment you open the file. That's the renewal window: close enough to running out that the conversation needs to happen now, not after the last session is already spent.
Take a second client: a 5-session pack, $325, with $200 paid so far, and all 5 sessions used. Sessions Remaining reads 5 minus 5, which is 0 — inside the amber range, so that row highlights the moment the fifth session is logged. The Dashboard's "Clients needing renewal" tile counts every client sitting between 0 and 2 remaining, so that same client is reflected in a running total you can check without scrolling the full log.
There's a real edge case worth knowing before you rely on that tile alone. If a client's Sessions Remaining goes negative — say a 5-session pack where 7 sessions actually got logged, so Sessions Remaining reads 5 minus 7, which is -2 — the row turns red as a separate flag, distinct from the amber renewal highlight. But the "Clients needing renewal" count only includes rows between 0 and 2, so a client who's already gone negative won't show up in that renewal tile, even though their row is clearly flagged red on the log itself. The tile answers "who needs a renewal conversation soon"; it doesn't answer "who's already over their limit" — for that, you still need to glance at the log for red text, not just check the Dashboard number.
Outstanding balances that don't get missed
Balance Due works the same way as Sessions Remaining — Package Price minus Amount Paid, recalculating as soon as either number changes — and any row with a balance above zero turns red, separately from the Sessions Remaining flags. In the $325 package example above, $325 minus $200 leaves a $125 balance, and that row turns red the moment the numbers are entered, regardless of what the client's session count looks like. The Dashboard pulls the same figures up a level: Revenue Collected sums Amount Paid across every client, and Outstanding Balance sums Balance Due across every client — one number for what's actually in the bank, one for what's still owed.
Payment Status is worth keeping separate in your head from that red flag. It's a dropdown — Paid, Partial, Unpaid — that you set yourself; it doesn't read the Balance Due figure and choose a value automatically. The red highlight on Balance Due and the Payment Status dropdown are two independent signals sitting on the same row, and the sheet won't reconcile them if you let one drift out of sync with the other.
What this tracker doesn't do
Worth being direct about the edges. This is a log with formulas, not a booking or notification system — it doesn't message a client when their sessions run low, doesn't process payment, and doesn't sync with a scheduling app. The amber and red highlighting are things you see when you open the file; they're not alerts that reach you anywhere else. Sessions Used and Amount Paid are both fields you update by hand as things happen, not numbers pulled automatically from a calendar or a payment processor. For a trainer running client relationships personally rather than through a large studio system, that's usually the right amount of structure — enough to catch drift, not so much that it becomes its own admin job.
If you're setting prices for the packages themselves, the personal training package pricing calculator works out per-session rates and package discounts from your numbers. For the broader session and client tracking this package log sits alongside — including no-show tracking, which this page doesn't cover — see the personal trainer client tracking spreadsheet guide.
Frequently asked questions
Why do personal trainers lose track of session counts?
Because it's easy to track roughly and hard to track exactly. A trainer running fifteen clients across single sessions, 5-packs, and 10-packs is relying on memory of who's used what, and reschedules, cancellations, and back-to-back weeks all chip away at that memory. The count doesn't need to be wrong by much to matter — a client who's actually out of sessions but gets trained anyway, or a client who's owed a renewal conversation that never happens, both come from the same small drift adding up unnoticed.
How does Sessions Remaining calculate itself?
It's a formula, not a number you maintain by hand: Sessions Included minus Sessions Used. You log the package size once when a client buys it, and from then on the only thing you ever update is Sessions Used, ticking it up as each session happens. Sessions Remaining recalculates on its own every time — a 10-session pack with 4 used always shows 6 remaining without you doing the subtraction yourself.
When does a client's row get flagged for renewal?
When Sessions Remaining lands at 0, 1, or 2, the row turns amber with bold text — a client who bought a 5-session pack and has used all five shows 0 remaining and turns amber the moment you log that fifth session. The Dashboard's 'Clients needing renewal' tile counts every client sitting in that same 0-to-2 window, so you get both a visual cue on the log itself and a running total on the Dashboard of how many renewal conversations are due.
What happens if a client uses more sessions than they paid for?
Sessions Remaining goes negative — a 5-session pack with 7 sessions used shows -2 — and that row's text turns red as a separate flag from the amber renewal highlight. Worth knowing: the Dashboard's 'Clients needing renewal' count only includes rows between 0 and 2, so a client who's already gone negative won't show up in that tile even though their row is flagged red on the log itself. Check the log directly for over-drawn clients, not just the renewal tile.
Does the payment status update automatically when a client pays?
No. Payment Status — Paid, Partial, or Unpaid — is a dropdown you set yourself; it doesn't read the Balance Due figure and choose a value for you. Balance Due does calculate on its own, as Package Price minus Amount Paid, and any row with a balance above zero turns red regardless of what you've selected in Payment Status. So the color flag and the dropdown are two separate signals — keep both current, since the sheet won't reconcile them for you.
Can I track different package types, like monthly unlimited?
Yes — six package types are set up by default (Single Session, 5-Session Pack, 10-Session Pack, 20-Session Pack, Monthly Unlimited, Other) and every one is editable from a settings list that feeds both the dropdown on the package log and a Packages by Type table on the Dashboard, which counts how many of each type sold and totals revenue per type. That's what tells you whether your 10-packs are actually earning more than your monthly unlimited clients, rather than just guessing which one 'feels' more popular.
Don't want to build the log and the flags yourself?
Everything above works in a blank sheet, and the free package pricing calculator covers the maths on any one package. The Personal Trainer & Fitness Coach Business Toolkit is for the part an article can't do: the files, already built. A Session Package & Payment Tracker with self-calculating Sessions Remaining and Balance Due, amber renewal highlighting and red unpaid-balance flags already wired up, alongside a client & session tracker and an income & expense tracker built for a training business. Every package type and dropdown is editable. Works in Excel or Google Sheets.
One-time purchase. No subscription. It's a set of spreadsheets — not a booking or client-management platform, and not fitness, nutrition, medical, legal, or tax advice.
Need a spreadsheet built around your exact packages instead? We build custom workbooks to order, delivered in 5 business days.