Skip to main content
Instructors are the coaches, trainers, and class leads who teach classes or take one-on-one bookings. They live under Staff > Instructors in the admin, not under Operations - but the schedule page and booking dialog both surface them, so they’re documented here next to the rest of the operations stack.

Overview

  • Profiles with type, sports, and rate - group instructors by type, tag their sports for marketplace filtering, and set an hourly rate that seeds one-on-one booking prices.
  • Bookable or class-only - a bookable instructor takes direct one-on-one bookings and gets a schedule column; a class-only instructor can still lead classes.
  • Availability from hours or shifts - drive availability from per-day operating hours, or put an instructor on a shift roster driven by rotations.
  • Pay-rate policies - compensate instructors per class or booking, with an option to pay only for paid visits.
  • Earnings dashboard - instructors who sign in see their own earnings, classes, attendance, and PT sessions.
  • Ordering - drag to set the order instructors appear in on the schedule and in selectors.

The instructor list

The list at Staff > Instructors shows one row per instructor with these columns: drag handle, name and avatar, instructor type, status (bookable badge, inactive chip), sports (up to three with a +N overflow), gym, and hourly rate. Drag a row to reorder; the new order is what shows on the schedule and in selectors. The drag handle is disabled while a reorder request is in flight. If the server rejects the reorder, the list snaps back to the server order with a toast. Click a row to open the instructor profile, or Add instructor to create one.

Creating or editing an instructor

The user dialog handles both inviting a new instructor (which creates the contact, user, and instructor profile in one shot) and editing an existing one. The instructor section asks for:
  • Instructor type - managed under Settings > Instructor types. Picking a type can default the max concurrent bookings.
  • Hourly rate - in your organization’s currency. Used when a booking is created against this instructor; duration multiplied by this rate seeds the line total.
  • Sports - tag-style list. Used by the public marketplace for filtering and on the list row.
  • Experience and Certifications - free-text fields shown on the profile.
  • Bookable toggle - when on, the instructor appears in the booking dialog’s instructor selector and on the schedule as a bookable column. When off, the instructor can still be assigned to classes but cannot be booked directly.
  • Max concurrent bookings - only visible when bookable is on. How many overlapping one-on-one bookings the instructor accepts.
  • Active instructor toggle - inactive instructors are hidden from selectors but kept for historical bookings.
  • Operating hours - per-day working hours used by the booking dialog’s availability checks.
  • Give instructor access - when on, the user is invited with the instructor role and can sign in to the instructor dashboard.
Per-instructor display colors used on the schedule are configured separately under Settings > Operations > Schedule coloring, not on the instructor dialog itself.

How instructors show up on the schedule

The Schedule page reads bookable instructors and renders one column per instructor in day view. A class assigned to an instructor produces a “teaching” mirror event on the instructor’s column, so the instructor reads as busy during their classes (in addition to the class itself appearing under its class-type column). Instructor time off (managed via the same calendar - right-click an instructor slot or open an existing time-off entry) renders as grey blocks on the instructor’s column. When schedule staff coloring is enabled, blocks use the assigner’s profile color instead of the resource color. See Settings > Schedule coloring for the toggles.

Shift scheduling

For staff whose hours change week to week, you can drive an instructor’s availability from a shift roster instead of fixed operating hours. There’s no global on/off switch: an instructor uses their roster on any date they’re rostered - a date covered by a rotation assignment, or one with a shift placed directly on it - and falls back to their operating hours on every other date. A rostered day with no shift reads as a day off. Everything lives under Staff > Roster. The page has two parts: the Scheduled shifts grid at the top (one row per instructor, one column per day) and the Shifts & rotations panel below it, where you build the reusable pieces.

The building blocks

  • Shifts - reusable named time windows like “Morning 06:00-14:00”, each with a color and optional standard breaks (e.g. lunch). Managed in the Shifts card.
  • Rotations - a weekly pattern that picks a shift for each day, repeating over a cycle of 1-12 weeks. Managed in the Rotations card.
  • Assignments - attach an instructor to a rotation for a date range; this is what generates their roster.
  • Roster - the generated list of individual shifts, shown in the Scheduled shifts grid and editable shift by shift. An assignment with an Effective until date generates the whole roster up to that date; an Ongoing one uses a rolling 8-week window. See Repeating schedules.

Set up a rotating schedule

1

Create your shifts

In the Shifts card, choose Add shift. Give it a name, a start and end time, and a color, then add any standard breaks (name, start, end) - for example a 12:00-13:00 lunch. Breaks must fall inside the shift window. Repeat for each distinct pattern you run (e.g. “Morning”, “Evening”).
2

Build a rotation

In the Rotations card, choose Add rotation. Set a Cycle length (1-12 weeks) and a Cycle start date (the date week 1 begins). Then, for each day of each week, pick one of your shifts or leave it Off. A two-week cycle that alternates mornings and evenings, for instance, captures a typical part-time pattern.
3

Assign an instructor

In the Scheduled shifts grid, on the instructor’s row, click their rotation cell (Set regular shifts). Pick the rotation, the Starting week (which week of the cycle they begin on), and the Effective from / Effective until dates - leave the end open for an Ongoing assignment. Their roster generates immediately: to Effective until when you set one, so a coach contracted through June has their whole roster on the grid, or a rolling 8 weeks when the assignment is ongoing.
4

Adjust the roster

The grid now shows each instructor’s generated shifts with their breaks. Click any day cell to add a one-off shift or edit an existing one. Editing a generated shift marks it as a manual override, so rotation regeneration leaves it untouched; use Cancel shift to drop a single occurrence.
An assignment with an Effective until date generates its roster all the way to that date. An Ongoing assignment is generated for a rolling 8-week window and extended automatically. Either way, manual overrides and one-off shifts survive regeneration; unedited rotation shifts are replaced when you change the rotation.

Breaks

Breaks are the unavailable windows inside a working shift - most commonly lunch. Define them on a shift (in the Shifts card) as a name plus a start and end time within the shift window. Once a shift is on the roster, its breaks:
  • Block bookings during their window, so nobody can book the instructor over lunch.
  • Show on the roster grid under each shift, as a Break 12:00-13:00 line.
  • Show on the Schedule calendar as a muted, non-interactive card in the instructor’s column, labeled with the break name.
  • Are editable per shift - open any shift from the roster grid to add, edit, or remove its breaks. One-off shifts can carry their own breaks too.

Working hours on the instructor profile

On an instructor’s details page, a read-only Working hours block shows the hours derived from their roster, with a Manage shifts link back to Staff > Roster.

Rescheduling on the calendar

On the Schedule calendar you can drag a booking or class to a new time. The move keeps the same resource (area, instructor, or class type) and the same duration - only the start and end time shift. Every drop asks you to confirm the old and new time, and for recurring events you choose whether the change applies to just that occurrence or to all future ones.

Pay rates and paid-booking gating

Beyond a flat hourly rate, you can define pay rate policies that determine how an instructor is compensated for the classes and bookings they deliver.

Only compensate for paid bookings

A pay rate policy includes an Only compensate for paid bookings toggle. When it’s on, the instructor is paid only for paid visits:
  • Memberships
  • Fully-paid bookings
  • External-program visits that were both checked in and paid
Unpaid or no-show bookings earn nothing. The in-app help reads: “When on, the instructor is paid only for paid visits: memberships, fully-paid bookings, and external-program visits that were both checked in and paid. Unpaid or no-show bookings earn nothing.”

How gating works in practice

  • An instructor’s pay for a booking or check-in is only recorded once the underlying charge is settled. If a booking is still unpaid, it doesn’t pay out.
  • For recurring bookings, each occurrence is gated on its own payment - future unpaid occurrences won’t pay out until they’re charged and paid.
  • If a class is deleted, the related instructor pay-ledger rows are cleared.
Leave the toggle off to compensate the instructor for every booking regardless of payment status.

Instructor earnings

Instructors who sign in to their own dashboard get a personal Earnings page. The top of the page shows four summary cards for the selected timeframe: Total earnings, Total classes, Attendance, and Personal training sessions. Below that, a daily earnings bar chart lets the instructor drag-select a date range, or switch between Last 7 days, 30 days, 90 days, or a custom range. The summary cards and breakdown update with the selection. The breakdown table lists each class or booking with name, type (class or standalone booking), count of attendees or sessions, and the compensation earned. The numbers are computed from pay-rate policies; see Staff > Pay rates for how those are configured.

Mixed-role accounts

A user who is both an instructor and an admin or manager has access to two schedule views. The org-wide schedule lives under the Schedule menu (see Schedule). A personal “My teaching schedule” view, scoped to just their own classes and bookings, is reached through the instructor menu in the sidebar.

Worked examples

Padel coach who takes private lessons

Create the coach, set their Instructor type to Coach, add padel and tennis to Sports, set the Hourly rate, turn on Bookable, and set Max concurrent bookings to 1 for one-on-one lessons. Their operating hours (or shift roster) then gate when members can book them from the portal.

Class-only martial-arts lead

A visiting black belt leads the Saturday BJJ class but never takes private bookings. Add them, assign them to the class, and leave Bookable off. They appear on classes without cluttering the booking selector or the schedule with a bookable column.

Pilates studio on rotating shifts

A studio with part-time instructors puts them on rotating shifts: it builds a “Morning 06:00-14:00” shift with a lunch break and assigns each instructor to a weekly rotation. The generated roster becomes their bookable availability; a one-off swap is edited directly on the roster and sticks as a manual override.

Pay only for paid drop-ins

A gym that runs paid drop-in classes sets a pay-rate policy with Only compensate for paid bookings on, so coaches earn on memberships, fully-paid bookings, and paid-and-checked-in external-program visits - never on no-shows or unpaid seats.

Tips & best practices

  • Turn Bookable off for guest and class-only leads. It keeps the booking selector and schedule focused on people members can actually book.
  • Use a shift roster when hours vary week to week. Fixed operating hours are simpler for steady schedules; rosters suit part-time and rotating staff.
  • Gate pay on payment to avoid overpaying. The paid-booking toggle stops payouts on unpaid or no-show visits, and each recurring occurrence is gated on its own charge.
  • Set sports accurately. They drive marketplace filtering, so a member searching for a padel coach only sees the right people.
  • Deactivate, don’t delete, departing staff. Inactive instructors drop out of selectors but keep their history on past bookings.

Troubleshooting

Issue: An instructor isn’t in the booking dialog’s selector. Solution: Only bookable, active instructors appear. Check the Bookable and Active instructor toggles on their profile. Issue: An instructor wasn’t paid for a booking they delivered. Solution: Their pay-rate policy likely has Only compensate for paid bookings on, and the visit is unpaid or a no-show. Pay is recorded once the charge settles; for recurring bookings, each occurrence pays out only when it’s charged. Issue: The instructor can’t sign in to their dashboard. Solution: Access is only granted when Give instructor access was on at invite. Edit the instructor and enable it to send the invitation. Issue: A bookable instructor shows no availability. Solution: If the instructor is rostered for that date, availability comes from their roster, not their operating hours - and a rostered day with no shift is a day off. Assign them to a rotation or add roster shifts under Staff > Roster.
  • Schedule - Where instructor columns and time off live.
  • Classes - Instructors are assigned to classes here.
  • Bookings - One-on-one bookings against instructors.
  • Roles and permissions - What the instructor role can and can’t do.