Every session draws from the right contract. No spreadsheets. No guessing. Staff and clients always see the same number.
Clients buy session packages. They use sessions over weeks or months. Somewhere in between, the numbers stop matching. You've seen it before:
The root problem isn't bad data entry. It's that your software wasn't designed for session packages in the first place. It was designed for class passes and memberships, and session tracking was bolted on.
Session packages are the core data model, not an add-on. Every session is tied to a contract, and the math is always visible.
| Date | Time | Trainer | Status |
|---|---|---|---|
| Mar 18 | 9:00 AM | Coach Dan | Completed |
| Mar 20 | 9:00 AM | Coach Dan | Completed |
| Mar 25 | 9:00 AM | Coach Dan | Scheduled |
| Mar 27 | 9:00 AM | Coach Dan | Scheduled |
When a client has sessions left on an old contract and buys a new one, sessions draw from the oldest contract first. No manual tracking. No overlap confusion. The system always picks the right one.
Every contract shows four numbers: used, scheduled, available, and total. "Available" means sessions that haven't been used or scheduled yet. No ambiguity.
Cancelled sessions go back into the available pool. No-shows count as used. Every status change is logged with a timestamp so you have a full audit trail.
Because session counts are accurate, commissions calculate automatically. Flat fee or percentage per session, with date ranges and payment intervals. Generate payouts with one click.
| Trainer | Period | Sessions | Commission | Status |
|---|---|---|---|---|
| Coach Dan | Mar 1 - Mar 31 | 32 | $1,280 | Pending |
| Coach Maria | Mar 1 - Mar 31 | 24 | $960 | Pending |
| Coach Dan | Feb 1 - Feb 28 | 28 | $1,120 | Paid |
| Coach Maria | Feb 1 - Feb 28 | 22 | $880 | Paid |
The dashboard flags contracts that are running low on sessions, sorted by urgency. You know who needs to renew before they run out, not after.