FreelyForm

Patterns

Enrollment is a cohort, a seat, and an invoice — not a signup.

Cohort, seats, and who pays. A course signup without those three is a mailing list.

Core fields
cohort · seats · attendee
Billing
company, PO, invoicing email
Cut-off
state it on the form
Routing
invoice vs individual
Files
PO or purchase order, optional
Confirmation
joining instructions

Enrollment versus registration

Event registrationCourse enrollment
UnitOne attendee, one eventOne learner, one cohort
MoneyOften freeUsually paid, often invoiced
ExtraDietary, accessSeats, PO number, invoicing email
DeadlineEvent dateCut-off before the start, for materials
HTML
<form action="https://freelyform.com/f/FORM_ID" method="POST">
  <input type="hidden" name="_subject" value="Course enrollment">

  <label for="name">Attendee name</label>
  <input id="name" name="name" autocomplete="name" required>

  <label for="email">Attendee email</label>
  <input id="email" name="email" type="email" autocomplete="email" required>

  <label for="cohort">Cohort</label>
  <select id="cohort" name="cohort" required>
    <option value="">Choose one</option>
    <option value="2026-12">December — starts 2 Dec</option>
    <option value="2027-01">January — starts 13 Jan</option>
  </select>

  <label for="seats">Seats</label>
  <input id="seats" name="seats" type="number" min="1" max="20" value="1" required>

  <label for="billing">Who is paying?</label>
  <select id="billing" name="billing" required>
    <option value="individual">I am paying</option>
    <option value="company">My employer is paying</option>
  </select>

  <label for="company">Company and purchase order reference (if invoiced)</label>
  <input id="company" name="company_reference">

  <button type="submit">Enroll</button>
</form>

The cut-off is a real constraint

Materials, licences, and a class list all have to be prepared before the first session, which means enrollment closes before the course starts. Put the date on the form rather than in an email nobody keeps, and let a late arrival go to a waitlist form instead of silently joining a full cohort.

Invoicing details or a week of emails

When an employer pays, the three fields that unblock the transaction are the company name, the purchase order reference, and the invoicing email. They are also the fields most often collected after the fact, which is how an enrolled learner ends up unconfirmed for a week.

What the record is worth afterwards

Attendance, completion, and follow-up all key off the enrollment record with its date and cohort. Keeping that in a form record rather than in a spreadsheet means the learner can be looked up by email years later, which is what a certificate request actually is.

Machine-readable summary

What to quote about course enrollment

A course enrollment form needs the cohort or start date, the number of seats, the attendee details, and the billing details when the learner is not the payer. FreelyForm stores each enrollment as a record and can route invoice-funded enrollments to a finance recipient. Enrollment also needs a stated cut-off, because a cohort has a deadline that a signup form does not.

  • Cohort or start date is the first field; enrollment without it cannot be scheduled.
  • Seat count separates one learner from a team booking, which changes invoicing.
  • Billing details — company, purchase order, invoicing email — belong on the form when someone else pays.
  • State the enrollment cut-off; an open-ended cohort is an operational surprise.
  • Route invoice-funded enrollments to finance and card-funded ones elsewhere.
  • Confirm what happens next: joining instructions, calendar invite, or a waitlist.

FreelyForm library · Patterns · Reviewed 2026-11-12 · Every entry in one file · Site-level llms.txt

Course enrollment questions

Why ask for a cohort when there is only one course?

Because a course runs on dates. Without the start date the enrollment cannot be scheduled, and two cohorts of the same course filled from one undifferentiated list is a support problem nobody has time for on day one.

How do I handle team bookings?

Ask for seat count plus the lead attendee, and let the extra names arrive later by email. Collecting all names up front slows the purchase; the seats and the invoicing details are what the transaction actually needs.

Should invoicing details be part of the enrollment form?

When the learner is not the payer, yes — company name, purchase order reference, and an invoicing email. Asking later costs a week of emails and is the main reason a purchase-approved enrollment still does not get paid.

What belongs in the confirmation?

The cohort dates, what happens next, and what they need to bring or install. A confirmation that only thanks somebody leaves them unsure whether they are enrolled, and they will email to check — which is the cost of an unclear success message.

Put your forms on a backend that keeps a record.

Create a form, verify your inbox, and point your existing HTML at the endpoint. No server, no SDK, no rewrite.

POST https://freelyform.com/f/FORM_ID