> ## Documentation Index
> Fetch the complete documentation index at: https://docs.1club.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Classes

> Create one-off or recurring classes, assign instructors, manage capacity, and run check-in and waitlists.

A class is a scheduled group activity with a capacity, optional price, one or more instructors, and an area. Owners and managers schedule classes, instructors and the front desk run attendance and check-in, and members book against a class occurrence - if the class is full they go on the waitlist.

## When to use it

Use a class for a group session with a single price per seat, whether it runs once or every week of the term. Capacity is enforced for you, and a seat that frees up 2-12 hours before the class is offered to the next person on the waitlist. For a one-off occasion with several ticket tiers or its own page, use an [event](/events/events#events-vs-classes) instead.

Typical uses:

* **A yoga class that fills up** - a vinyasa or reformer Pilates class capped at your mat count, with a drop-in price and a waitlist that offers freed seats to the next in line.
* **A free community kids' martial-arts class** - a free BJJ session where staff log attendance on the mat with no payment step.
* **A weekly spin class for the term** - one series created in full when you save, so you can move one week's class without disturbing the rest.
* **A padel clinic with friends** - a member books spots for themselves and friends in one booking, with each guest seat charged the drop-in rate.

See [Worked examples](#worked-examples) for how to set up each of these.

## The list page

The list page is under **Schedule** > **Classes** (open it from the calendar's **More actions** menu); the detail page is where you run attendance, check-in, and waitlist conversion.

The classes list has four tabs with live counts: **All**, **Active**, **Cancelled**, and **Completed**. Active is the default. Each tab is paginated and sortable. Multi-select is enabled - pick rows and use the bulk delete action.

Click any row to open the class detail page, or **Add class** to create one.

## Creating a class

The class dialog asks for:

* **Name**, **Description**, **Class type**, and **Sport**. Class types are managed under **Settings** > **Clubs** > **Class Types**; the type controls cancel-if-zero-attendance behavior and the revenue account the class books to.
* **Gym** and **Area** - where the class is held. The area selector is filtered to the chosen gym.
* **Instructors** - one or more, picked from your bookable instructors.
* **Date and time** - start and end. Multi-day classes are supported (the detail page formats the range accordingly).
* **Max capacity** - leave blank for unlimited. The class is never "full" while capacity is unlimited.
* **Price** - per booked seat, in your organization's currency. Set to `0` for a free class.
* **Visibility** - **Public**, **Member only**, or **Private**.
* **Recurrence** - turn on to repeat. Pick the pattern (daily, weekly with specific weekdays, monthly) and how the series ends: **Until date**, **After N times**, or **Never**.

A recurring class is stored as a series of N separate class occurrences, each with its own bookings, attendance, and check-ins. Editing or deleting offers a scope choice: **This instance** or **All future**.

A series that ends on a date or after a set number of repeats is created in full when you save, so the whole term shows on the schedule immediately. **Never** keeps a rolling eight-week horizon and extends itself each night, because there is no end to create up to. See [Repeating schedules](/reference/repeating-schedules) for the full model and the 520-occurrence limit.

## The class detail page

The header carries the class name, status chips (active/cancelled/completed plus time status), the visibility chip, and the class type chip. The action row exposes **Notify participants** (when the class has bookings), **Edit**, **Cancel**, and **Delete**.

The body is a two-column layout. The left card is **Information**: instructors (linked to their profiles), date and time with duration, gym, area, price, recurrence summary, review rating, sport, and description. If the class has images, a sortable gallery appears below the card.

The right column starts with three capacity tiles: **Max capacity**, **Current attendance**, and **Remaining seats**. Below them is the **Attendance** card with three action buttons:

* **Add check-in** - opens the check-in dialog. Available to anyone who can record check-ins, inside or outside the check-in window; it's disabled only for a cancelled class (see [Attendance](/schedule/attendance#check-in-window)).
* **Add to waitlist** - only enabled when the class is full (capacity set and current bookings >= max).
* **Add booking** - disabled when the class is full.

The attendance grid shows three groups: bookings (non-cancelled), anonymous check-ins (check-ins without a booking), and waitlist entries. The capacity is refetched every minute to keep counts current.

## Cancelling vs deleting

**Cancel** changes the class status to cancelled, leaves the row visible on the Cancelled tab, and notifies booked members. Cancellation refunds follow the cancellation rules on the matching [booking policy](/settings/booking-policies).

**Delete** removes the class. For a recurring class, you choose whether to delete just this instance or all future instances. Deleting fails if the class has bookings - cancel or move them first.

The right-click menu on a class block in the [Schedule](/schedule/calendar) page exposes the same cancel and delete actions.

## Waitlist

When a class is full, members can join the waitlist (from the portal) or admins can add them via **Add to waitlist** on the detail page. When a seat opens 2-12 hours before the class, the first person on the waitlist gets a notification with a claim window. The default claim window is 15 minutes and is configurable on the [booking policy](/settings/booking-policies).

Past the claim window, the offer rolls to the next person. Staff can manually move a waitlist entry to a booking from the attendance grid, even after its claim window has passed.

## Notify participants

The **Notify participants** action collects the contact IDs of all confirmed bookings and opens the [Compose](/inbox/compose) page pre-populated with the recipients. Use this for last-minute class changes, location swaps, or substitute instructors.

## Party bookings

Members can reserve more than one seat in a class in a single booking - for example, a parent bringing friends along. When booking, they pick how many seats using the **Book for** dropdown (options like "Me", "Me and another person", "Me and 2 others", plus any household members).

Each extra seat becomes a separate guest booking attached to the same order. The booker's own seat keeps its price (including any membership coverage); each guest seat is charged the class drop-in rate. All seats count toward the class capacity.

### Max party size

Party bookings are controlled per class type by **Max party size**, configured in **Settings** > **Clubs** > **Class Types**. It is the maximum number of people a member can reserve for a class at once, including themselves. The in-app help reads: "Maximum people a member can reserve for this class at once, including themselves."

The default is **1**, which effectively turns party bookings off. Raise it to allow members to book additional seats. You can also create a promotion that only applies when a party reaches a minimum size - see [Promotions](/sales/promotions).

## Worked examples

### Capacity-limited yoga class with a waitlist

Create a reformer Pilates or vinyasa class, set **Max capacity** to your mat count, and leave a price for drop-ins. When it fills, members join the waitlist; if a seat frees up 2-12 hours before, the first in line gets a claim window (default 15 minutes, set on the [booking policy](/settings/booking-policies)).

### Free community kids' martial-arts class

For a free kids' BJJ session, set **Price** to `0` and pair the class type with a [booking policy](/settings/booking-policies) whose **Enforce payment** is **None**, so staff simply log attendance on the mat with no payment step.

### Recurring weekly spin class

Turn on **Recurrence**, pick weekly with the right weekdays, and set **Ends** to **Until date** with the last day of the term. Assign the instructor and area; every week from now to that date becomes an occurrence, created the moment you save, so the court reads as occupied for the whole term. Editing offers **This instance** or **All future**, so you can move one week's class without disturbing the series.

### Padel clinic with friends

Raise **Max party size** on the clinic's class type so a member can book several spots at once. Their own seat keeps any membership coverage; each guest seat is charged the drop-in rate, and all seats count toward capacity.

## Tips & best practices

* **Configure the class type first.** It controls cancel-if-zero-attendance behavior, the revenue account the class books to, and the **Max party size** - set these before creating classes.
* **Use capacity plus waitlist for popular classes** so freed seats auto-offer to the next member instead of going empty.
* **Cancel, don't delete, a class with bookings.** Cancel keeps the record, refunds per policy, and notifies members; delete is blocked while bookings exist.
* **Leave capacity blank for open classes** that never fill - the class is never "full" and the waitlist stays off.
* **Use Notify participants for last-minute changes** (room swap, substitute instructor) - it opens Compose pre-addressed to confirmed bookings.

## Troubleshooting

**Issue**: I can't delete a class.

**Solution**: Deleting is blocked while the class has bookings. Cancel it instead (which notifies members and refunds per policy), or move the bookings first.

**Issue**: The **Add booking** button is disabled.

**Solution**: The class is full (capacity set and reached). Use **Add to waitlist**, or increase **Max capacity** if you can take more.

**Issue**: Members can't book more than one seat.

**Solution**: The class type's **Max party size** is 1. Raise it under **Settings** > **Clubs** > **Class Types** to allow party bookings.

**Issue**: A recurring edit changed every week when I meant just one.

**Solution**: Editing a recurring class asks for a scope - choose **This instance** rather than **All future**.

**Issue**: Only the next couple of months of a recurring class appear on the schedule.

**Solution**: The series ends in **Never**, which keeps a rolling eight-week horizon. Edit it with the **All future** scope and set **Ends** to **Until date** with the real last day. See [Repeating schedules](/reference/repeating-schedules).

## Related

* [Events](/events/events) - For one-off ticketed happenings with price tiers, use an event instead of a class.
* [Bookings](/schedule/bookings) - Class bookings show up here too.
* [Booking policies](/settings/booking-policies) - Payment timing and refund tiers per class type.
* [Schedule](/schedule/calendar) - Classes render as colored blocks on the calendar.
* [Attendance](/schedule/attendance) - Cross-class attendance history per member.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.