Skip to main content
Managing Classes & Bookings

Class Types

The six class types on AllSquads and how each is scheduled, priced, and booked.

AllSquads supports six class types. Each type has distinct scheduling, pricing, and booking behaviour.


1. Group Lesson (Recurring)

What it is: A regularly scheduled class that repeats on a set cadence — weekly, fortnightly, or daily. The most common class type on the platform.

Scheduling: Coach sets a start date, recurring frequency, day(s) of week, start time, and duration. The platform auto-generates sessions on a rolling basis.

Pricing: Standard price per session. Optional member pricing.

Booking options:

  • Players book individual sessions (casual/one-off)
  • Drop-in enabled: players can book into any session without a full enrolment

Capacity: Set per class. Waitlist activates automatically when full.

Cancellation: Governed by the class cancellation policy (configurable per class — see Cancellation Policy document).

Common use cases: Weekly tennis group, swim squad, yoga class, bootcamp.


2. Social Session (One-off)

What it is: A single, non-recurring event. Scheduled once with a specific date and time.

Scheduling: Single date, start time, duration. No recurrence.

Pricing: Standard price per session.

Booking options: Players book into the single session.

Capacity: Set per event.

Common use cases: Club social day, one-off clinic, tournament warm-up session, guest coach event.


3. Holiday Camp

What it is: A multi-day intensive program typically running across school holiday periods. Players enrol for the full camp or individual weeks.

Scheduling: Coach defines camp dates (individual days, not necessarily consecutive). Can span multiple weeks.

Pricing:

  • Day rate — the primary price. Every camp day a player selects is charged at the day rate.
  • Full-week price (optional, set per week) — when a player selects every day of a camp week, that week is charged at its full-week price instead of day rate × days. Partial weeks stay at the day rate, and taking a day back out of a full week returns the rest to the day rate. Multi-week camps are evaluated one week at a time (a player can book week 1 in full plus two days of week 2). The full-week price replaces the week's day-rate total outright — it does not stack with multi-day % discounts — and it only applies when it is genuinely cheaper than the day-rate total. Half-day (AM / PM) selections are always charged per day. The server applies this rule to the cart on every add or remove, so the class page's quote, the cart, checkout and the charge all agree.
  • Half-day AM / PM and full-day session options with their own per-day prices (if configured)

Booking options:

  • Full week (select every day of the week)
  • Individual days

Capacity: Set per camp.

Date changes: Changing the dates of a camp shifts the entire program. Enrolled players are notified and given the option to cancel for full credits.

Common use cases: School holiday tennis camp, swimming intensive, school holiday sports program.


4. Private Lesson

What it is: A one-on-one (or semi-private) lesson between a coach and a player. Requires both a coach and a court/facility to be free at the requested time.

Scheduling: Player selects a date and time; the system checks coach availability and court availability simultaneously. Both must be free for the booking to proceed.

Pricing: Tiered by duration:

  • 30 minutes
  • 45 minutes
  • 60 minutes

Each duration tier has its own price. Semi-private mode is configured PER DURATION TIER: a coach can set a separate flat price for a tier that 2 or more players (up to that tier's own max) share one lesson slot — e.g. a 60-minute lesson might be $88 solo or $98 semi-private for up to 2 players. It is a single flat price for the whole party ("booker pays full amount"), not a per-extra-player surcharge and not a reduced per-player rate. A duration with no semi-private price set never offers it. Shown before paying, so the displayed price always matches the charge.

Booking flow:

  1. Player selects coach
  2. Player selects preferred date and duration
  3. System checks availability (coach + court)
  4. Player confirms and pays
  5. Coach receives booking request (approval required unless auto-approval enabled)
  6. Coach can accept or decline. If declined, coach may suggest an alternative time.

Approval: Private lessons require coach approval by default. Auto-approval can be enabled per class.

Minimum lead time: Coaches can set a minimum booking lead time (in hours) for private lessons. When configured, players cannot book slots within this window — e.g., a 24-hour lead time means players must book at least 24 hours in advance. The availability calendar and time slot picker both enforce this automatically, in the coach's club timezone.

Common use cases: One-on-one tennis lesson, private swimming lesson, personal training session.

Discoverability on the club page: private lessons render in their own dedicated area, not mixed into the club page's general "Upcoming classes" list (which is a date-sorted schedule and a private lesson has no fixed next-session date). Selecting "Private" from that list's Type filter — or opening the club's Coaching tab directly — shows every published private lesson with a working Book link.


5. Court Hire

What it is: A direct facility booking — players or members hire a court, lane, or facility without a coach. Managed under the Court Hire tab, separate from the class/squad system.

Scheduling: Players select date, court, start time, and duration (in 30-minute increments). The system checks court availability in real time.

Pricing:

  • Standard rate (per 30-minute block or per hour)
  • Member rate (reduced price for club members)
  • Day rate vs night rate (configurable time thresholds, e.g., before/after 5pm)

Recurring bookings: Players can set a court hire booking to recur weekly or fortnightly (up to 12 weeks). A series can be cancelled in bulk.

Cancellation: Governed by a separate court hire cancellation policy (configurable per club).

Common use cases: Social tennis hit, casual lane swimming, court practice session.


6. Retreat

What it is: A multi-day immersive program at a fixed venue, typically with accommodation, meals, and a structured coaching schedule. Players enrol for the full retreat — not individual days.

Scheduling: Coach defines start date, end date, and an optional itinerary per day. Treated as a single bookable unit; no per-day or per-session breakdown for players.

Pricing:

  • Full retreat price (single line item)
  • Optional add-ons handled outside the booking (e.g. coach invoices directly for room upgrades)

Booking options: Full retreat enrolment only. Deposits and instalment payments can be configured via subscriptions or payment links.

Capacity: Set per retreat. Waitlist activates automatically when full.

Cancellation: Governed by the class cancellation policy. Most retreat coaches set a longer cancellation window than weekly classes (e.g. 30 days) given accommodation and travel commitments.

Common use cases: Tennis training week abroad, yoga and tennis retreat, junior development week, off-season coaching intensive.


Class Visibility (Listing Access)

All class types support three visibility settings:

SettingWho can see it
PublicAnyone on AllSquads and via search
PrivateOnly people with the direct link
Invite-onlyOnly players who have been explicitly invited

Class Statuses

StatusMeaning
DraftCreated but not yet published. Not visible to players.
ActiveLive and bookable.
PausedTemporarily hidden. Existing bookings unaffected.
ArchivedPermanently closed. Cannot be re-activated. Used instead of deletion when bookings exist.

Important: A class type cannot be changed once the class is created — this applies regardless of whether it has bookings yet, and duplicating a class always keeps the same type as the original. Archive the class and create a new one if the type needs to change.


Canonical taxonomy values (ADR-035)

Two orthogonal fields classify a class. They serve different purposes and must not be conflated.

`squad_type` — the product label (what the player/coach sees; drives UI labels, agent responses, analytics grouping, pricing-tier display). Canonical values:

ValueMeaning
groupAny group class — recurring weekly, term-based, or one-off
privatePrivate lesson (one player or small group, coach-led)
socialSocial session (player-organised, informal)
campHoliday camp or multi-day intensive
court_hireCourt hire (no coach)

`schedule_type` — the billing/session model (drives session generation, billing, cancellation policy, pro-rata, term windows). Canonical values: recurring, term, one_off, camp, private.

A "Recurring Group" class is squad_type = group + schedule_type = recurring — orthogonal. Legacy values were merged: group_class/recurring(as squad_type)/term(as squad_type) → group; private_lessonprivate; holiday_campcamp; one_off(as squad_type) dropped (covered by schedule_type). Full spec: ADR-035.