event

Class registration form: filling seats without a spreadsheet

September 30, 2026 ・ Halict Editorial

A class registration form starts as a list of questions and turns into an operations problem the day a session fills up. The form still accepts entries. The spreadsheet says eighteen when the room holds sixteen. Two of the eighteen paid, one asked to switch to the Thursday group, and the instructor has a printed sheet that was accurate on Monday.

Templates solve the first ten minutes of this. What they do not solve is the part that takes the time: keeping one accurate roster per session, from the first signup through to the reminder before the first class, while enrolments keep changing. This is about building the form so that the roster it produces is the only roster anyone needs.

What the form has to decide before you pick fields

A class registration form is doing three jobs at once, and each one has a different owner.

Enrolling a student. Who they are, how to reach them, which session they want, and whether they meet whatever prerequisite exists.

Protecting the seat count. Whether that session still has space, what happens if it does not, and how a place gets released when someone drops out.

Setting up the first session. What the instructor needs in front of them, what the student needs to bring, and what has to be signed or paid before they walk in.

The reason so many registration setups drift is that only the first job lives in the form. The second and third live in a spreadsheet, an inbox and somebody's head. Every one of the failures described below is the second or third job being handled by hand.

Session choice is the most important field

If more than one session of the same class runs, the session choice belongs near the top of the form, not near the bottom. It determines seat availability, price in some cases, the prerequisites shown, and the roster the entry lands on. Asking it first also means a student who finds their preferred time is full can leave without filling in the rest, which is a better experience than discovering it after ten fields.

Label sessions the way a student thinks about them. "Tuesday evenings, 18:30, starting 6 October" is findable. "Cohort B3" is not.

The fields that belong on a class registration form

Keep the required set small enough to finish on a phone between other things.

The set that almost always earns its place: full name, email address, phone number if the class is cancelled at short notice, the session being booked, and the agreement to whatever terms and cancellation policy exist. For a class, the phone number is one of the few cases where a second contact channel is genuinely justified, because a room change or a cancellation on the morning cannot wait for an email to be read.

The set that depends on the class: prior experience or a prerequisite confirmation, equipment the student already owns, dietary requirements for anything with catering, accessibility needs, and how they heard about the class. Put the last one at the end and mark it optional.

The set that needs a branch rather than a field: anything to do with age. If the class admits under eighteens, the date of birth should reveal a guardian section with a name, relationship, contact details and a separate agreement, and hide it entirely from adults. Ask for the date of birth rather than the age, because a course that opens in January for an April start will have students who cross a threshold in between.

Ask what you will act on

Every field on a registration form is a promise that somebody will read the answer. An accessibility question with no process behind it is worse than no question at all, because the student has disclosed something and reasonably expects a response. Before adding a field, name the person who acts on it.

Seat limits, and the waiting list that prevents most of the mess

Capacity is where class registration differs from a general signup form, and it is the part most template forms get wrong by simply ignoring.

Three mechanisms cover nearly every case.

A cap that closes the session. When the count for a session reaches the seat limit, that option stops accepting entries and says so. This is the minimum, and it is the difference between a full class and an overbooked one.

A waiting list that keeps collecting. Instead of closing, the full session is marked as waiting list only, with the meaning stated plainly: a place is not held, and contact follows if one opens. This is almost always better than closing, because drop outs are common and a waiting list is the cheapest way to fill the released seat.

A close date. Registration stops a stated number of days before the session starts, so there is time to send materials and print a roster. Set it as a date on the form rather than as a task somebody has to remember.

The mechanism matters less than where the count comes from. A seat limit is only reliable if the number of enrolments is held in one place. If the form writes to a spreadsheet that a person then edits by hand, the count is a copy and will eventually be wrong. Keeping enrolments as records with their own status, so that a withdrawal changes the count automatically, is what makes a cap trustworthy.

Withdrawals are status changes, not deletions

When a student drops out, deleting the row loses the history: whether they paid, whether a refund is due, whether they should be offered the next term. Mark the status as withdrawn and keep the record. The seat count should read from status, counting enrolled students rather than total rows, which also makes the waiting list usable.

Switching sessions

Requests to move from one session to another arrive in every term, and they are the quiet source of roster errors. A move has to do two things at once: release the seat on the old session and take one on the new one. Done by hand across two tabs of a spreadsheet, it routinely does only one of them, which is how a class ends up showing seventeen students in a room for sixteen.

The practical answer is to treat the session as a field on the enrolment rather than as the sheet the student lives in. Changing the value moves the student, and both counts follow. It also leaves a history of the change, which matters when the student asks later why they were charged for the earlier date.

Payment, and the order of operations

If the class is paid, the decision to make early is whether a seat is held at registration or at payment.

Holding the seat at registration is friendlier and produces more signups. It also produces unpaid enrolments that somebody has to chase, and a class that looks full while three seats are not really sold.

Holding the seat at payment keeps the roster honest. It costs signups, because the student has to complete two steps, and it means the form alone cannot tell you who intends to come.

A workable middle is to enrol on registration, mark the payment status on each enrolment, and set a stated deadline after which an unpaid place is released to the waiting list. That policy is only enforceable if the payment status sits on the enrolment rather than in a separate list of transactions that has to be matched by hand.

Approach Good at Where it costs you
A booking or course platform Seats, payment and scheduling in one product, calendar and reminders built in Priced per booking or per student in many cases, and the student list lives inside that platform
A free form plus a spreadsheet Costs nothing, live in an afternoon, familiar to everyone No seat enforcement, no status per student, and replies happen in an inbox the sheet cannot see
A form tool with response management One roster per session from signup to first class, each student carries a status and an owner, emails sent and recorded in the same place Payment is handled alongside rather than inside the form, so the policy has to be written down

Where the numbers are small and the classes repeat, the running cost difference is large, and it is worth checking whether a candidate charges by the number of entries or by the number of staff who use it. Pricing based on how many people run the classes rather than on how many students register changes the arithmetic for anything seasonal, where a term's worth of registrations arrives in two weeks.

What the instructor and the student each need before the first session

The registration list has to produce two things, and they are not the same document.

The instructor's roster. Names in surname order, contact details, anything disclosed that affects the session, payment status if the instructor handles it at the door, and a column to mark attendance. It should be printable, because the room may have no signal.

The student's confirmation. Sent the moment the form is submitted, repeating the session date, time, location, what to bring, the cancellation policy, and who to contact. A confirmation that does not contain the address is the main reason people email to ask for the address.

A second message a day or two before the first session reliably reduces no shows for classes, more so than for one off events, because a course booked six weeks earlier has fallen out of memory. That message only goes to the right people if the list knows who is enrolled, who withdrew and who is on the waiting list.

The reason to keep all of this on one list rather than in three tools is that course and class signups and the replies that follow them are one process. Splitting them means the instructor works from a copy, and a copy is out of date the moment a student withdraws.

What to keep between terms

Last term's registration data is the best available predictor of this term: which sessions filled, which times did not, how many withdrew after paying, how many came from the waiting list. That is only usable if the records survive the term rather than being cleared for the next intake. Duplicating the form for a new term while keeping the old responses intact is the pattern to look for, since it preserves the history without carrying old enrolments into the new roster.

What to change first

Put the session choice at the top of the form and give each session a real seat limit that reads from enrolment status, because an overbooked class is the one failure a student notices. Then set the confirmation email to include the address, the date and what to bring, which removes most of the questions that arrive by email afterwards. If enrolments, payment status and replies are currently spread across a form, a sheet and an inbox, see what one roster per session looks like in Halict before the next term opens.

Q1. How do you stop a class registration form from overbooking?

Set a seat limit on each session and have the limit read from the number of enrolments with an active status, so a withdrawal frees the place automatically. A form that writes into a spreadsheet cannot do this reliably, because the count is a copy that a person edits, and the form has no way to know the room is full.

Q2. Should a full session close or switch to a waiting list?

A waiting list is usually better. Drop outs happen in almost every class, and filling a released seat from a list of people who already registered takes minutes, while finding a new student takes a fresh round of promotion. State plainly that a place is not held so nobody arrives expecting a seat.

Q3. What should a class registration form ask for beyond name and email?

A phone number, the session being booked, the agreement to the cancellation policy, and anything that changes how the session runs, such as prior experience, equipment or accessibility needs. Add a guardian section that appears only when the date of birth indicates a minor. Leave marketing questions to the end and mark them optional.

Q4. Is it better to take payment before or after confirming a place?

Both work, and the choice is about which failure is easier to live with. Payment first keeps the roster honest but loses signups to the extra step. Registration first fills the class but produces unpaid places, which is manageable if the payment status sits on each enrolment and unpaid places are released to the waiting list on a stated date.

Q5. Can one form handle several classes and several terms?

Yes, and for reporting it is usually better than one form per class. Use a session field to route entries, so each session has its own limit and its own roster while all enrolments sit in one list. For a new term, duplicate the form rather than clearing the old one, which keeps last term's numbers available for planning.

All guides