← Documentation

Scheduling classes

Class types, recurring time slots, capacity and waitlists, cancellations, and check-in.

Updated September 6, 2026

Everything on your timetable is built from three layers. Get the layers straight and the rest of this page is obvious.

Class types, time slots, and sessions

LayerWhat it isExample
Class typeThe kind of class, and its defaults”CrossFit WOD”, 60 min, cap 20, blue
Time slotA recurring rule on top of a typeMon/Wed/Fri 6:00am at Downtown
SessionOne dated instance a member booksWed 14 Aug, 6:00am

You edit types and slots; sessions are generated from the slots on a rolling horizon. Both live at Schedule → Classes; the generated sessions show up at Schedule → Calendar.

Create a class type

Schedule → Classes → New class type.

  • Name — what members see, e.g. “CrossFit WOD”.
  • Default duration (min).
  • Default capacity — leave it blank for no limit. An uncapped class never fills, never opens a waitlist, and shows members “Open” instead of a spots count.
  • Default coach — time slots without their own coach inherit this one.
  • Color — how it reads on the calendar.
  • Programming track (optional) — links this class type to a programming track, so the right workout shows on the right class. No track yet? New track sits right beside the picker: name it and it’s selected. See Using workouts and programming.

These are defaults, not settings. A slot that leaves a field blank inherits it, permanently — change the class type’s default later and every inheriting slot follows. A slot that fills the field in overrides it and is left alone. That inheritance is the whole reason to use class types: “make every CrossFit class 55 minutes” is one edit.

Add recurring time slots

Schedule → Classes → New recurring time slots. Each row is one slot:

  • On these days — the weekdays it runs.
  • Start time (gym time) — the location’s local wall clock, so a 6:00am class stays 6:00am across daylight-saving changes.
  • Location.
  • Override defaults — coach, capacity, duration. Blank means “Class default”.
  • Advanced repeat — start date, optional end date, and non-weekly patterns.

Before anything is created, Preview sessions tells you how many upcoming sessions each row generates. Use it. A rule that produces zero sessions is almost always a wrong start date.

Add several rows in one pass — a typical timetable is 5–15 slots.

The calendar

Schedule → Calendar is the working view of everything generated. Click a session to open its peek panel: who’s booked, who’s waitlisted, the coach, and the edit / cancel / substitute actions for that one session.

A change made from the peek panel is a single-session exception. Exceptions are first-class and are never overwritten by a later edit to the slot they came from — so “just this Thursday, Sam covers and we cap it at 12” survives you reorganising the slot next month.

One-off classes and events

Not everything repeats. Add a single dated session straight from the calendar for a one-off, and use Schedule → Events for workshops, competitions, and socials that aren’t part of the weekly rhythm.

Capacity, waitlists, and how a freed seat is filled

When a capped class is full, further bookings join the waitlist. The order is first-come, first-served within priority tier — a plan with a higher waitlist priority tier jumps ahead of lower tiers, but never bumps an offer that has already gone out.

When a seat frees up, what happens depends on how soon the class is:

  • More than 12 hours away (the gym default): the next member is auto-booked and notified — “you’re in”.
  • Closer than that: they get a 30-minute offer they have to accept. During that window the seat is genuinely held — a walk-in cannot take it out from under them. If the offer expires, the seat passes to the next person.

At promotion time we re-check that the member is still entitled to the class — membership active, credits remaining, account not past due. If they aren’t, they’re told why, and the seat immediately passes to the next eligible person in the same pass. A held seat is never left empty while someone on the list qualifies for it.

Remaining waitlist entries are closed out when the class starts. No fee, and nothing is consumed from their plan.

Uncapped classes have no waitlist at all, because they can’t be full.

Who can book, and how far ahead

Booking opens booking window days before the class, counted in gym-local time. The default comes from Settings → Gym settings → Policies; any plan can override it, which is how a premium tier gets to book earlier. A member booking too early is told the exact time their window opens.

Whether a member may book at all is a separate question from what their role allows — it’s their membership state: active plan, credits left, not past due. See the plan setup in Onboarding from zero.

Cancellations, late cancels, and no-shows

Configured at Billing → Booking policies:

  • A cancellation before the late-cancel cutoff (12 hours by default) is free, refunds the credit, and triggers waitlist promotion.
  • A cancellation after it is a late cancel: it still frees the seat and promotes the waitlist, but bills the late-cancel fee if you’ve set one.
  • A member who never checks in is marked a no-show automatically once the class has ended plus a grace period. The visit is consumed and the no-show fee, if any, is billed.

Fees land on the member’s balance rather than hard-blocking them. Blocking is your dunning policy’s job: an account that goes past due can’t book, and you control that threshold in one place.

Changing a schedule that already has bookings

This is where scheduling tools usually hurt people, so the rules are explicit. Editing a slot only ever touches future sessions, and:

  • Single-session exceptions are never touched.
  • If the session still exists under the new rule, it’s updated in place and bookings stay attached. If the time moved, booked members are notified.
  • If the new rule no longer produces a session and nobody is booked, the session is cancelled.
  • If it no longer produces a session and people are booked, the session is kept and flagged for you to explicitly cancel-with-notification or keep. Members are never silently unbooked.
  • Lowering capacity below the current booking count grandfathers everyone in. The session is flagged as over capacity and waitlist promotion pauses until it’s back under.
  • Cancelling a session cancels its bookings with no fees, refunds the credits, and notifies everyone.

Every one of these actions previews first: you see the exact counts — updated, created, cancelled, flagged, members notified — before anything is committed.

Two dedicated verbs handle the common reshuffles:

  • End a time slot — “this stops running after date X”. Future sessions past that date are cancelled (or kept and flagged if booked); past classes stay on the record untouched.
  • Split a time slot — “move all future Fridays to 7am” when Fridays live in a Mon/Wed/Fri slot. The extracted weekdays become their own slot, existing sessions are adopted by it, bookings ride along, and a time change re-notifies the members.

Coach substitutions

A coach can request a sub from the session’s peek panel with a reason (sick, vacation, schedule conflict, other). Someone with schedule permissions approves or rejects it. An approved substitution wins over the slot’s assigned coach, so later edits to the slot won’t quietly undo it.

Check-in

Three ways members get marked present:

  • Schedule → Check-in — the staffed front-desk roster: today’s classes, tap to check in, plus a walk-in flow for people without a booking.
  • A paired kioskSettings → Devices, for unattended self-check-in on a tablet.
  • The member’s own phone — the QR self-check-in in their app.

Entitlement is re-checked at check-in, not just at booking, which is what catches the membership that lapsed in between.

Bulk edits and the assistant

“Cancel all my 8:30am classes next week”, “move every class back 15 minutes”, “set all HYROX classes to a capacity of 25” — these are one action, not fifty. Use the bulk edit dialog from Schedule → Classes, or just ask the assistant in plain language. Both run the same operation, and both show you a preview of exactly what will change before anything is saved.

Who can do what

Managing class types, time slots, and bulk edits needs the head coach role or above. Running check-in and booking on a member’s behalf needs front desk or above. A coach can always manage substitutions for their own sessions. Details in Onboarding staff and staff roles.


Something here out of date, or a step that didn't work? Tell us at support@ourgym.app.