What is a Term Class?
A term class is a fixed-duration enrolment where players sign up for an entire block of sessions (a term). Terms have a defined start date, end date, and session schedule. Term classes are common in structured programs such as learn-to-swim, tennis coaching programs, and school-term fitness classes.
Creating a Term Class
Scheduling
When creating a class with schedule type Term:
- Set term start date and term end date
- Set the weekly day and start time for the term
- The system generates all sessions between the start and end dates on that day
A term class runs on one day at one time. A program that runs on more than one day — Tuesday after school and Saturday morning, say, at different times — is set up as a linked group: see Running a class across several days below.
Holiday exclusions
Specific dates within the term can be excluded (e.g., public holidays):
- During class creation, toggle individual session dates as Included or Excluded
- Australian public holidays are flagged automatically for review
- Excluded dates are displayed on the class detail page for players
- Enrolled players are not charged for excluded sessions
Pricing
Set a full-term price. This is the amount charged for the entire enrolment period. The per-session rate is calculated automatically for display purposes.
Booking fee: a single up-front term payment carries the term-class booking fee of 2.2% at checkout (floored at 50¢ GST-inclusive, academic for any realistic term price). If the term is paid by Stripe subscription instalments instead, each instalment is charged the subscription_payment rate of 3% per charge. The club's payout is reduced by the tier-based platform fee on the cash portion. See 05-payments-and-credits.md for the full fees model.
Paying by instalments, what everyone sees: the enrolment confirmation names who is attending (the child, when the booking is for a child), the term and its dates, the venue, and the payment plan: the amount per payment (booking fee included), how often, how many payments, and the first and last payment dates. The club's enrolment email names the same attendee, term and plan at the club's own price. Each card charge shows on the Stripe receipt as the class, term, attendee, venue and amount, with its position in the plan (for example "payment 3 of 5"). Instalment payments are never turned into credits.
More than one attendee on instalments: each child on the account gets their own payment plan for the same class, billed and paid out separately. Attendees without a saved profile share the account's one plan for that class, so a second one is asked to be saved as a profile first, or to pay for the term in full. This is checked in the cart, before anything is booked or charged. Two or more children can go on pay-weekly in one checkout: each child gets their own weekly plan at the same weekly price, the card is entered once, and each child's plan can be cancelled on its own. If one child's plan can't start on the card (for example the bank declines it), the other children stay booked and the checkout says which child isn't. A class can't mix pay weekly and pay in full in one checkout: choose pay weekly for each child, or pay for the term in full for everyone. Each child on pay weekly needs their own saved profile.
Running a Class Across Several Days
What a class group is
Some programs run the same offering on more than one day, at times that don't have to match — Tuesday 3:30pm and Saturday 9:00am, for example. On AllSquads each day is its own class, and the classes are linked into a group so that players see them together on one public page. This applies to term classes and recurring (casual/drop-in) classes — the two types where several offerings sharing a page makes sense. It does not apply to camps, private lessons or one-off (social) classes.
Each day keeps everything that makes it a class in its own right: its own sessions, its own capacity, its own waitlist, its own roster, its own price, its own cancellations, and its own class management. Only the public page is shared.
A recurring class's own Days of week field is a different thing and is unaffected by any of this: picking several weekdays there (e.g. Monday and Wednesday) keeps them as ONE class with ONE shared capacity — a player books a session, not a day. Use Days of week when the same offering genuinely runs on several days with one capacity; use a linked group (below) when each day should have its own capacity, waitlist, roster and price, or when the days start at different times.
Adding another day
Add another day from inside the class wizard, on the Schedule step, under Linked days — while creating the class, or later from Edit. Pick the day of the week and start time for each extra day; price is optional and defaults to the class's own price if left blank. Publishing (or saving) the wizard creates one linked class per row, all sharing this class's public page. Editing an existing class in a group shows its other linked days on the same step, and you can add more from there.
There is no separate "Add another day" action on the Classes list any more — the wizard is the only way to add a day.
Which class is which in the Classes tab: a group shows as one card headed by the main class (the one that owns the public page, description, images and packages), with each day listed underneath (day, time, booked / capacity). Click a day to open that day's own class: its time, venue, capacity and roster are managed there. If the group sells packages, the card has an Edit → Packages link.
What players see
The group has one address. The page shows the group's title, description and images once, then lists each day as a choice — its day and time, its price, and how many spots are left, or Join waitlist when that day is full.
Choosing a day swaps the booking panel to that day's class. The player enrols in the day they picked, and only that day's capacity is used. The other days are unaffected. The page address does not change as they switch between days, so the link a club shares always opens the whole group.
Where a group appears once
In Explore and on the club profile, a group is listed once — as its main listing — rather than once per day, so a four-day program doesn't fill a page of search results with near-identical entries. The listing appears when a player filters or searches by any of the days the group actually runs on — a Monday-created group with a Tuesday and Wednesday linked day shows up under a Tuesday or Wednesday filter too, not only the day the class was originally created on. The same holds on every page that lists classes by day: the club profile's day picker, the coaching page, a coach's profile, the club's website widget and the Classes page in the dashboard all list the class under each day it runs, showing that day's own time and session. A class that runs on several weekdays also says so in its schedule line, for example "Every Tue & Thu".
Inside the dashboard nothing is collapsed: each day appears as its own class in Classes, the calendar, the roster and reporting, because each day is a class you manage separately.
Things worth knowing
- Each day bills separately, unless the club sells packages (below). Once a class has packages, players book a package (or drop in for a single session) rather than enrolling day by day.
- Editing the group's title, description or images means editing the main listing — that is the content the shared page shows.
- Removing a day is the same as archiving any other class.
Packages: one price for several days
A term class with linked days can also sell packages: several of its days at one price. A package either covers a fixed set of days, or lets the player pick a number of them. For example, a program running sessions on Tuesday, Wednesday, Thursday and Friday might offer:
- Gold — all four days, $120 a week or $1,000 upfront
- Silver — pick any 2 of the 4 days, $65 a week or $550 upfront
Setting up a package: open the class in Edit, go to the Schedule step, and under Linked days use Packages: give the package a name, tick the days it includes (at least two), and under Players get choose either all the ticked days or "any N of the days ticked" so the player chooses. Enter the weekly price and, optionally, an upfront price, then Save packages. Removing a package stops new bookings of it; existing bookings are unaffected. Packages need the linked days to exist first, so add the days, save, then add packages.
What players see: once a class has packages, its page offers only the packages and, where the term allows them, drop-ins for a single session. There is no day-by-day term enrolment. Each package shows its name, its weekly price, its upfront price if there is one, and its days and times. The packages and the drop-in appear as options to choose from, like the other choices on a class page. Choosing a pick-the-days package ("Silver — pick any 2 days") shows the days so the player can tick the ones they want. The player then chooses to pay upfront or weekly, sees the price with the booking fee, and adds the package to their cart with the one button at the bottom. In the cart and at checkout the package shows every day with its time, the total number of sessions across all its days, and its first and last dates. The player books the package, not the individual days. They pay once upfront, or on one weekly plan for the term (one payment a week for the sessions left in the term, with the booking fee included in each payment as for any term paid in instalments). If any day in the package is full, the package shows as full and cannot be booked; for a pick-the-days package, the player can choose other days that have room.
What the club sees: the player is added to the roster of every day the package covers. In the dashboard each day is still its own class with its own roster, attendance and capacity. The whole package payment is recorded against the package's first day.
Cancelling a package: a package is cancelled as one unit. Cancelling it from any of its days cancels every day, and any credit or refund is worked out from the package price under the class's normal term cancellation rules.
Joining part-way through the term: if the class has pro-rata pricing turned on, a package booked after the term has started costs less upfront: the upfront price is reduced in proportion to the sessions left on the package's first day (for example, 6 of 10 sessions left means 60% of the upfront price). The class page shows the reduced price and how many weeks are left before the player adds it to their cart. Weekly plans keep the same weekly price and simply have fewer payments, one for each session left. If pro-rata is off, a package costs its full upfront price whenever it is booked.
Not included in packages: free trials, the annual (full-year) commitment and automatic renewal into the next term.
Drop-in Bookings
What is drop-in?
Drop-in allows casual players to book a single session in a term class without enrolling for the full term.
Enabling drop-in
Toggle "Enable drop-in" when configuring pricing. Set a separate drop-in price (typically higher than the equivalent per-session term rate).
Drop-in booking experience
When a player views a term class with drop-in enabled, the booking panel shows the next available session date and time (e.g., "Next: Tue 17 Mar · Single session"). The player is booked into that specific session, not the term as a whole.
Drop-in availability
Drop-in spots are subject to the same session capacity as full term enrolments. Drop-in players are shown on the session roster alongside term-enrolled players.
Pro-Rata Pricing
What is pro-rata?
Pro-rata pricing allows players to join a term class partway through the term and pay only for the remaining sessions, rather than the full term price.
Enabling pro-rata
Toggle "Enable pro-rata pricing" in the Pricing step of the class creation wizard (term classes only). This is a real per-class setting that can also be changed later by editing the class:
- On: a player who joins mid-term pays only for the sessions remaining, calculated automatically at the time of booking.
- Off (default): a player who joins mid-term pays the full term price — no partial discount at all, regardless of how many sessions have already passed.
Pro-rata calculation (when enabled)
Pro-rata price = Price per session × Sessions remaining at time of booking (falls back to Full term price ÷ Total sessions when no per-session rate is set)
This calculation is shown transparently to the player at checkout as "Adjusted price ($X, N sessions remaining)". When the toggle is off, the player instead sees and pays the full term price with no adjustment.
Auto-Renew
What is auto-renew?
Auto-renew allows players to opt in to automatic re-enrolment for the next term when their current term ends. The player's Stripe payment method is charged automatically.
Player opt-in
Players set their auto-renew preference directly in the booking modal before adding to cart. A toggle labelled "Auto-renew each term" appears under the full-term option when it is selected. The toggle's default follows the class's auto-renew setting (auto_renew_default_enabled) — on by default for newly created classes (clubs can switch it off per class). Subtext updates dynamically — when off it reads "this term only / no automatic re-enrolment"; when on it reads "automatically enrolled in the next term". The preference is carried through to the checkout page. Players can also change their preference at checkout or from their booking detail page at any time during the term.
Auto-renew timing
The auto-renew charge is processed 7 days before the current term ends.
Cancelling auto-renew
Players can cancel their auto-renew opt-in at any time before the charge is processed via Dashboard > My Classes > select booking > Manage Auto-Renew.
Auto-renew failure
If the auto-renew charge fails (e.g., expired card), the player is notified immediately and given the option to update their payment method and complete the renewal manually.
Term Pricing Changes
Price changes on live term classes
Changing the price of a live term class applies only to new enrolments. Existing enrolled players are charged at the price that applied at the time of their booking.
Date and Schedule Changes
Changing dates on a live term class
If the coach changes the term start date, end date, or session schedule on a class with existing enrolments:
- All enrolled players are notified immediately
- Players are given the option to cancel for a full credit refund within a response window
- Players who do not respond within the window are assumed to accept the change
Shifting the entire term
If the term needs to move (e.g., delayed start), the coach can update the start and end dates. The system automatically recalculates all session dates based on the new dates and configured schedule.
Multiple Terms
A single class can run across multiple consecutive terms. When a term ends:
- The class continues into the next configured term
- Players enrolled in auto-renew are charged and re-enrolled automatically
- Players not on auto-renew must re-enrol manually
Annual subscription
When the coach enables annual subscription on a term class with 2+ published terms, the class detail page shows a Subscribe Annually option alongside per-term enrolment. One click subscribes the player across every term — Stripe bills them at the start of each term via a Subscription Schedule.
If the coach has set an annual discount percentage, the Subscribe Annually card shows the discounted per-term price inline (e.g. "AU$135.00/term · Save 10% vs AU$150.00"). This is a percentage off each term's price, not a flat dollar amount.
In the class wizard, the annual discount field shows a helper text ("Players who subscribe annually receive this discount on each term's price") and a live price preview that calculates as you type. Adding all terms upfront is recommended — the wizard shows a soft nudge with an inline "+ Add more terms" button if only one term is configured.
This bypasses the cart flow; see 05-payments-and-credits.md for the full payment surface.
Term Class on the Roster
The session roster for term classes shows:
- Full term enrolments (with term period displayed)
- Drop-in bookings (labelled Drop-in)
- Auto-renew status per player
- Payment status per player
Holiday Camps vs Term Classes
| Feature | Term Class | Holiday Camp |
|---|---|---|
| Duration | School term (10–12 weeks typical) | School holidays (1–2 weeks typical) |
| Schedule | Regular recurring (weekly) | Multi-day block (consecutive or selected dates) |
| Pricing | Full term price, drop-in, pro-rata | Full camp, per week, day rate |
| Date change impact | Notifies enrolled players | Shifts entire program |
| Auto-renew | Supported | Not applicable |
