← Documentation

Scheduling classes

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

Updated October 2, 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

Four ways members get marked present:

  • Schedule → Check-in — the staffed front-desk roster on a desktop: today’s classes, tap to check in, plus a walk-in flow for people without a booking.
  • Schedule → Floor mode — the same job on a phone or a tablet. See below.
  • A paired kiosk — Settings → 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.

Floor mode: running a class from a phone or tablet

Schedule → Floor mode is the same check-in, the same reservations and the same walk-in flow, laid out for a device someone is holding — or one bolted to the wall at the desk. Everything is a finger-sized target, the whole screen is the class you’re running, and there’s no sidebar to get lost in.

It opens on today. Pick the class from the list — each row shows the time, the name, how full it is, and how many people have actually arrived — and you get the roster: one tap per person to check them in. The arrows at the top move you to another day for prep or a correction; check-in is only offered on today, because it’s a record of who was in the room.

There are two modes, and the tabs at the top switch between them:

  • Front desk — check-in, reserving a spot for a member, and walking someone in (selling them a day pass in the same step). This is the mode to leave a desk tablet parked in.
  • Coaching — everything Front desk does, plus Sign up: pick a plan and hold up the QR code so a drop-in can join from their own phone. Coaching mode is only offered to a coach, head coach, admin or owner.

Entering scores. If the class type is linked to a programming track, a Scores card sits under the roster listing everyone who checked in, with a Score button each. It’s the after-the-workout pass down the list. If the day has several parts, pick which one you’re scoring. Entering a score for someone else is a coaching action, so it needs the coach role or above — it appears in either mode for a coach, and in neither for a front-desk account.

The button at the top right of the header holds the rest: which gym and location this device is running, the language, and — in Coaching mode — the way back to the full dashboard. Set the location once when you put the tablet on its shelf.

Locking a tablet to the front desk. Opening Front desk never locks anything on its own. When you open it, it asks Lock this tablet to the front desk? — and a tablet is locked only if you say so there (or later with Lock this tablet in the settings button), and confirm. The confirmation says how to get back out. A locked tablet stays on the Front desk screen: the back button, a typed web address or an old bookmark all land back on Front desk, so nobody who walks up can reach members, billing or reports. There’s no Coaching tab, no search and no assistant on a locked tablet.

  • Lock with a PIN. You choose the PIN when you lock — it works on this tablet only. On a locked tablet the settings button asks for it before showing anything; once it’s entered you get Unlock this tablet, which takes it back to the dashboard. Too many wrong tries pause the PIN pad, and the pause gets longer each time.
  • Lock without a PIN. Then signing out is the only way to unlock the tablet — and anyone at the desk can sign it out.
  • Forgot the PIN? Tap Forgot the PIN? Sign out under the PIN pad. Signing out always unlocks the tablet; sign back in and lock it again with a new PIN.
  • Don’t lock — just use it here opens Front desk on this device without locking it, for a desk someone is always standing at.
  • It tidies itself up. After about a minute and a half with nobody touching a locked tablet, the screen clears any name typed into the roster search, closes anything left open, and asks for the PIN again. The day and the class you picked stay put.
  • If the session simply expires, signing back in returns a locked tablet to Front desk.

When someone’s membership won’t cover the class, you get the same plain-language reason the desk gets, and the way forward right underneath it — normally Sell a day pass instead, which is the walk-in flow.

Letting someone train anyway. In Coaching mode there’s a second way forward: Check in anyway. It’s for the call a coach makes standing in front of the class — the pack that lapsed yesterday and is being renewed on Monday, the member whose card bounced while they were away. You type a short reason, and that reason is kept with the check-in: who overrode it, for whom, when, why, and what the app had refused. It’s on your gym’s record permanently, so it reads back months later.

Two deliberate limits. It’s a coach, head coach, admin or owner action — a front-desk account doesn’t get the button, because the desk’s answer to “your membership won’t cover this” is to sell a drop-in, not to wave it through. And it only grants access: if the booking was already holding a punch, that punch is still spent, and a membership that hasn’t started yet stays unstarted — an override never quietly begins someone’s billing.

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 — including all of floor mode’s Front desk tab — needs front desk or above. Coaching mode, entering a score for another athlete, and checking someone in anyway over a membership problem all need coach 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.