Manage classes without overselling seats.
First checks
- One occurrence
The class has its own time, instructor, place, resources, and status.
- Many attendee records
A headcount does not replace names, payments, credits, and individual state.
- Finite confirmed seats
Temporary checkout holds must expire without overselling the final place.
- Waitlisted is not booked
An offer needs an order, expiry, acceptance, and fallback rule.

Can this party be confirmed, split, waitlisted, or declined?
Enter the class limit, confirmed attendees, temporary holds, and requested party size. Then choose whether the party must stay together and whether a waitlist is available.
Waitlist the whole party
Keep the party together and place all 3 requested seats on the waitlist.
- Seats currently available
- 2
- Confirm now
- 0
- Place on waitlist
- 3
- Decline
- 0
This planning aid does not create a reservation, expire checkout holds, order a real waitlist, charge money, restore credits, validate safety limits, or prove product behavior.
Shared time does not mean shared customer state.
If twelve people attend one class, the system should not create twelve unrelated copies of the instructor's time or one anonymous booking with a headcount of twelve. It needs one occurrence plus attendee-level reservations that cannot exceed the effective limit.
Available seats = effective class limit - confirmed attendees - active temporary holds
A ten-seat class has seven confirmed attendees and one active checkout hold. A party requesting three seats cannot be confirmed together because only two seats are currently available.
Follow the complete class-booking workflow
A class is one scheduled occurrence with several attendee places. The instructor and time may be shared, but every attendee still needs a clear seat, customer record, payment or entitlement state, cancellation outcome, and message.
Keep the class, each attendee, every temporary hold, and the waitlist in one explainable state.
- Create one class occurrence
Give the occurrence its own start, duration, instructor, location or link, required resources, status, and effective capacity.
- Define the booking unit
Decide whether customers reserve one seat, several named attendees, a whole private group, or enrollment in an entire course.
- Calculate the effective limit
The safe capacity is the smallest applicable limit across the class rule, room, equipment, instructor, and any operational or reviewed safety constraint.
- Protect checkout holds
Temporarily held seats count against availability, expire predictably, and become confirmed only after the required booking and payment steps succeed.
- Keep the waitlist separate
Joining a queue expresses interest. It does not consume a confirmed seat, charge as attendance, or guarantee that the customer will receive an offer.
- Reconcile every later change
Attendee cancellation, class cancellation, capacity changes, substitutions, and promotions must update seats, money, credits, calendars, and messages together.
Compare the five booking models
Individual class seats
Example: a weekly yoga class where each customer books one place in the same occurrence.
- Rule
- Track every attendee separately while all confirmed seats consume the one occurrence's effective capacity.
- Watch for
- Do not represent the class as repeated one-to-one appointments that each block the instructor again.
Party booking into a shared class
Example: one customer requests three places for family members in a public workshop.
- Rule
- State whether the party must remain together, which attendee details are required, and who controls changes and payment.
- Watch for
- Do not silently confirm two people and reject or waitlist the third when the customer expected one group outcome.
Private group reservation
Example: one organization reserves the whole event for up to twelve named or later-supplied attendees.
- Rule
- Reserve the occurrence for one buyer while keeping attendee collection, capacity, price, changes, and responsibility explicit.
- Watch for
- A private group is not automatically the same as buying twelve independent public-class seats.
Course or series enrollment
Example: registration covers six linked class dates rather than one repeating private appointment.
- Rule
- Define whether capacity, attendance, cancellation, and payment belong to the course, each occurrence, or both.
- Watch for
- A single missed date should not silently cancel the entire enrollment or free every future place.
Resource-limited class
Example: the class limit is twelve, but only eight machines or ten safe room places are available.
- Rule
- Use the smallest active constraint as the effective capacity and recalculate when a room or resource changes.
- Watch for
- A class-capacity setting cannot make a scarce room, machine, station, or instructor available.
Handle attendee changes and demo failures
One attendee cancels
Free one person's seat and reconcile their stateApply the correct refund or credit rule, preserve the other attendees, then decide whether and how the newly free seat is offered.
The whole class is cancelled
Change the occurrence and every attendeeStop new bookings, release resources, update calendars, notify everyone, and reconcile each payment or entitlement without treating it as an attendee cancellation.
Capacity changes
Protect existing people before selling moreA higher limit may open seats; a lower room or equipment limit may require an explicit resolution for already confirmed attendees.
Party size changes
Recheck the complete party outcomeAdding guests must respect live holds and capacity. Removing one person should not cancel or refund unrelated members of the party.
Instructor, room, or link changes
Revalidate the occurrenceConfirm qualification, resource capacity, timing, location, remote access, calendars, and messages before preserving the class as bookable.
A waitlist offer expires or fails
Move to the next eligible personRelease the temporary offer, preserve order and audit history, and prevent two customers from accepting the final seat.
Only the headcount is stored
Staff can see that eight places are used but cannot identify each attendee, payment, waiver, credit, cancellation, or notification state.
The waitlist is only an email form
Interest is collected, but there is no order, eligibility check, offer expiry, acceptance step, or protection for the final seat.
Checkout holds never expire
Abandoned checkouts make a class appear full, or ignored holds let several customers buy the last place.
Class and attendee cancellation are identical
Cancelling one person alters the occurrence or everyone else, while cancelling the class leaves individual money, credit, or message states unresolved.
Recurring edits rewrite the wrong scope
Changing one class occurrence unexpectedly changes every date, attendee, capacity, room, or link in the course or series.
Use one nearly full class, a three-person party, and one cancellation.
A class-booking or waitlist feature name proves little. Make every product handle the same final-seat conflict and show what each customer and staff member sees afterward.
- Create a ten-seat class with seven confirmed attendees, one temporary hold, and a waitlist that uses expiring offers.
- Request three seats first as a keep-together party and then with an explicitly accepted split policy through customer and staff paths.
- Cancel one attendee, promote the next eligible customer, let one offer expire, and inspect capacity, payments or credits, calendars, and messages.