A good class schedule looks obvious in hindsight and is genuinely hard to build the first time. The temptation when you open is to fill every slot — vanity schedule. The temptation when you've been open a year is to never change anything — stale schedule. Both fail. A great schedule is demand-driven, ruthlessly reviewed, and willing to kill its own darlings.
Here's what we've learned watching hundreds of boutique studios run their weekly grid on Chronix Hub. Some of it will feel obvious. Some of it will hurt.
Build for demand, not for vanity
When you open, you don't know your demand curve. So you guess. That's fine. The mistake is not updating once data comes in. Three months in, you have enough booking data to see where the demand actually is. That's when most studio owners freeze — they don't want to remove the 11am Wednesday class because Sarah teaches it or we've always had it.
Kill the class. The 4-attendee 11am Wednesday slot is costing you instructor pay against light revenue. The instructor will be happier teaching a packed 7pm slot than a sparse 11am.
The ghost class problem
A ghost class is a class that runs every week with 1–4 attendees. The instructor is paid (floor of your pay model). The room is blocked. The lights are on. And the revenue barely covers the instructor's pay — definitely not the rent slice.
Run this calculation for every class in your schedule, every quarter:
- Revenue per class = average attendance × average revenue-per-attendee (members + drop-ins blended)
- Cost per class = instructor fee + (rent + utilities + software) / weekly classes
- Margin per class = revenue − cost
Classes with negative or near-zero margin are ghost classes. You have three options: (1) kill the slot, (2) move the slot to a higher-demand time, or (3) replace the modality with something the market actually wants in that slot. Doing nothing is the failure mode.
Capacity sweet spots
Capacity choice is a margin lever and an experience lever at the same time. The right number depends on modality:
| Modality | Typical capacity | Why this range |
|---|---|---|
| Reformer pilates | 6–12 | Equipment-bound — one reformer per attendee |
| Mat pilates / yoga / barre | 12–25 | Floor-space-bound — needs personal mat radius |
| CrossFit | 10–18 | Coach-attention bound — too many = bad form goes uncaught |
| Boxing / kickboxing | 8–16 | Bag-bound or pad-work coach-bound |
| Spin / indoor cycling | 20–45 | Bike-bound — fill the bikes |
| Dance | 10–20 | Floor-space + mirror-line bound |
Bigger isn't better. A 30-cap yoga class running at 25 attendees feels packed; the same 30-cap class at 12 attendees feels dead. Lower your cap to where the room feels full at 70% capacity and you'll improve both retention and instructor energy.
Weekday vs weekend mix
For boutique fitness in urban markets, peak demand is Mon-Thu 6:30am–8am, Mon-Thu 5:30pm–7:30pm, and Sat 8:30am–11am. That's it. Those slots will fill themselves. Off-peak slots (10am–4pm weekdays, late Friday, all of Sunday afternoon) need a reason — special programming, signature class, or accept lower attendance.
Don't try to mirror your peak schedule on a Sunday. Sunday is a 60% schedule at most. Same for Friday evening — most members aren't planning their weekend around a 7pm class.
Peak vs off-peak template
| Time block | Mon–Thu | Fri | Sat | Sun |
|---|---|---|---|---|
| 6:00–8:00 (early) | 3 classes/day | 2 classes | 2 classes | 1 class |
| 9:00–11:00 (late morning) | 2 classes/day | 1 class | 3 classes | 2 classes |
| 12:00–14:00 (lunch) | 1 class/day | 1 class | 1 class | 0–1 class |
| 17:00–20:00 (evening) | 3 classes/day | 1 class | 0–1 class | 1 class |
Adjust for your local rhythm — but use this template as the sanity check. If you've got 5 classes on a Sunday afternoon, you're probably running ghost classes.
The popular instructor — leverage carefully
Every studio has one or two instructors who fill any slot they touch. The temptation is to put them on every prime slot. Don't. Two reasons: (1) they burn out, and (2) you concentrate retention risk on a single person.
Better play: use the popular instructor to anchor a new slot. They take a 6pm Tuesday slot that's been struggling, and the demand transfer fills it. Once the slot is established (typically 6–10 weeks), move them to launch the next struggling slot, and put a strong-but-less-famous instructor on the now-stable slot.
Pay matters here. A flagship instructor often gets a hybrid retainer model — see our instructor payroll guide for the structures.
The no-show instructor protocol
It will happen. Once a quarter, an instructor doesn't show. You have 20 members in the lobby and 4 more on their way. Have a written protocol so the front desk doesn't panic:
- T-15 min: instructor not at studio. Text them. If no response in 5 min, treat as a no-show.
- T-10 min: front desk pulls up the sub list. Has 2 instructors on call for emergency subs (paid a small standby fee, e.g., $15 even if not used).
- T-5 min: if no sub is available, the studio owner / senior instructor teaches. Yes, you. Always have one person on-site who can step in.
- T+0 min: if literally no one can teach, refund the class credit + offer a 1:1 makeup. Don't make members watch you scramble.
- T+24 hrs: instructor follow-up. Genuine emergency? Forgiven. Pattern? Performance conversation.
The standby instructor fee is the cheapest insurance you'll buy. $30/week ($15 × 2 standby instructors) prevents the catastrophe scenario where 20 paying members walk out angry.
Waitlist mechanics done right
The waitlist is one of the highest-friction features in any studio system. Done well, it converts no-shows into revenue. Done poorly, it pisses off members who got auto-promoted at 5:45am for a 6am class.
- Auto-promote up to X hours before class. Most studios set 2–4 hours. After that, waitlisted members are notified but not auto-booked — they have to confirm.
- Give waitlisted members a head's-up window. When a spot opens, the first waitlist member gets 30 minutes to claim it before it goes to the next person.
- Don't penalize waitlist no-shows. If a member got auto-promoted at midnight for a 6am class, don't charge them a no-show fee. That's how you lose members.
- Show waitlist position. Members want to know you're #3 of 7. Mystery waitlists feel like vapor.
Chronix Hub handles all of these defaults out of the box — waitlist auto-promote with confirmation, position visibility, and a separate no-show rule for waitlist-promoted bookings. The point isn't that we have it; the point is to use whatever system you use to enforce these rules.
The quarterly schedule review
Block a half-day every quarter. Pull last 90 days of attendance data. Per class, compute:
- Average attendance
- Fill rate (attendance / capacity)
- Margin per class
- Cancellation rate (especially late-cancels)
Then make changes. Add 1–2 slots in your strongest demand window. Kill or move 1–2 ghost slots. Don't overhaul — the schedule has a momentum, and members rely on consistency. Three small changes per quarter compound far better than one disruptive annual rewrite.