A personal-training session that a member simply doesn't show up for is a real cost — a trainer's blocked time that can't be recovered — but a policy that feels punitive damages the relationship just as much as no policy at all.
Distinguish cancelled from no-show
A member who cancels with notice and a member who simply never appears are not the same situation, and shouldn't be recorded or handled the same way. Tracking the distinction matters for both fairness and for understanding which trainers or time slots see the most no-shows.
Set a notice window, and honor it consistently
A clear cutoff — cancel more than a set number of hours ahead with no penalty, less than that and the session counts as used — is far easier for members to accept than an inconsistent, case-by-case judgment call.
Use the data to adjust scheduling, not just to penalize
A pattern of no-shows at a specific time slot might be a scheduling problem, not a member-accountability problem. Reviewing no-show data periodically catches this before it's blamed entirely on individual members.