Setting up your class catalog
Creating and configuring classes
Classes live under Admin → Class Catalog. Each class belongs to a term, so make sure you have at least one term set up before adding classes.
You manage classes in the same catalog your families browse, with the management controls added: the term picker, Add class, filters for status and room, sorting, a row-density toggle, and the enrollment and fee figures on each class. Your view also lists the draft classes, which families never see.
Because it is the same screen, the toolbar’s List and Schedule switch is available to you as well. Schedule lays the term out as a grid, with time ranges down the side and days across the top, so it is the quickest way to see a hole in your timetable or two classes landing in the same slot before families ever look at it.
Schedule has two layouts of its own, on a switch at the right of the toolbar. Week is that grid. By grade takes one day at a time and gives each grade band its own row, which is the faster way to spot a gap in a single child’s day, or two classes competing for the same hour. Families see both layouts too, so a parent can answer “what else is on at eleven?” without asking you.
In the grid, a class that is not published yet is labeled with its status, a class at capacity carries a Full ribbon, and clicking any class opens its details. Anything you have not given a time slot yet is grouped underneath the grid rather than left out of it.
To create a class
Giving a class an icon and a color
The class form has an optional Icon & color setting, just under the title. Click Choose an icon & color, then pick a color, an icon, or both. The preview at the top shows what you’ll get. To take it off again, choose the empty swatch and click the selected icon a second time.
Once a class has one, the small colored icon sits next to its name in your catalog, in the catalog families browse, on your co-op’s public class page, and in the class details. It helps a long list of classes read at a glance. A class you leave alone looks the same as it always has. The iPhone and Android apps don’t show these icons yet.
Teachers can pick the icon and color for their own classes too, if you turn on Edit the description, icon & color of their own classes under Teacher permissions in Admin › Settings › Programs. It’s off unless you turn it on.
Classes that meet more than once a week
Meeting times is a list of tick boxes, not a single choice, so a class that gathers Tuesday and Thursday is one class with both ticked. It stays one class everywhere that matters: one roster, one fee, one attendance record. Every meeting time you tick shows up in the catalog, the schedule grid, the family and teacher views, the printed schedule and the calendar feed.
Set the time slots themselves up first, on Admin › Terms & Schedule. A class can only be ticked into slots that belong to its own term.
A class that gathers once or twice a month rather than every week is still handled on the slot rather than here. Give that pattern its own time slot on Admin › Terms & Schedule (the slot’s Repeats menu takes 1st, 2nd, 3rd, 4th or Last week of the month), then tick the class into it. Full walkthrough in the Opening Registration guide.
Duplicating a class
Building a term out of classes that mostly resemble each other does not need retyping. Open a class and click Duplicate class. The copy carries the teachers, the fees, any pricing-rate amounts and every meeting time, and it leaves enrollments and attendance behind.
The copy arrives named “… (copy)” and always as a Draft, whatever the original’s status, so you can rename it and change what needs changing before families see it.
Class statuses
Draft — visible only to admins and teachers. Use this while you're still setting things up.
Published — visible in the family catalog. Families can see it but can't enroll until a registration window is open.
Cancelled — hidden from families entirely, same as Draft, but for a class that was published and then called off rather than one you haven't finished setting up. Existing enrollments stay on the books so you keep a record of who had signed up. Changed your mind? Open the class and click Restore class at the bottom of the page. It comes back as a Draft, so families won't see it again until you set it to Published.
Deleting a class permanently
Cancelling hides a class but keeps its roster, attendance, and gradebook history. If you actually need to remove a class — for example, to honor a family's request to delete a child's records — open the class and click Delete permanently at the bottom of the page. The dialog lists exactly what will be erased (roster, attendance, assignments and grades) and asks you to type the class's title to confirm. This cannot be undone, and any recorded fees and payments stay on the family's ledger either way — deleting the class doesn't touch billing.
Keeping students in the right grade level
Every class has a grade level (“K–2nd”, “3rd–5th”, “All ages”), and every student has a grade on their profile. Whether the class's grade level is only a label and a catalog filter, or a rule that keeps a second grader out of a class set for 6th–8th, is a co-op setting. Co-ops created since September 2026 start with the rule on; co-ops from before then start with it off, so nothing changed for them, and can turn it on whenever they like.
With it on, the family catalog greys out any child who is outside a class's grade range and says why (“Ivy is in 3rd grade; this class is for K–2nd”). The same check runs when the enrollment is actually submitted, on the website and in the mobile app, so a stale page can't slip one through.
Three things the rule leaves alone, on purpose:
- A class with no grade range (blank, or “All ages”) is open to everyone, as it always was.
- A student with no grade on file, or a grade that isn't on the K–12 scale (“Adult”, “Graduate”), is never blocked. The rule only acts when it knows both sides. If you want it to cover everyone, make sure each student's profile has a grade.
- Admins enrolling a student by hand from the class page are not blocked. That is the override for a child who is ready for the class even though their grade says otherwise; the picker there notes when a student is outside the range so the exception is a choice, not an accident.
Setting fees and seat capacity
Capacity sets how many students can enroll before the class fills and starts a waitlist. Set it to a number that reflects the physical space and your teacher's comfort level.
When you first create a class, you'll see two fields side by side: Tuition and an optional Materials fee. Tuition is the cost of the class itself; the materials fee covers supplies, books, or kits and is billed separately so families can see what they're paying for.
Once the class exists, opening it to edit swaps in a more flexible fee editor: a single Tuition box, plus an Add fee control for attaching any number of additional named charges (a lab fee, a field trip cost, whatever your co-op needs), each with its own checkbox for whether the sibling discount applies to it. A fee name you create on one class is offered on every other class afterward, so you only type it once. Renaming it there renames it everywhere it's used.
Every fee on a class is added together on the family's receipt and ledger, but they can behave differently when a sibling discount is turned on: only fees marked as discount-eligible are reduced. A materials fee added from the create-class form is always charged in full, for every student, since it covers an actual physical cost the co-op still has to pay no matter how many siblings enroll. See the How class pricing works guide for a worked example.
Payment collection: Stripe vs. flexible
For classes with a fee, you can choose how that fee is collected. The default applies to all classes, and individual classes can override it.
Stripe payment at enrollment (default)
When a family clicks Enroll on a paid class, they go to Stripe Checkout and their student's seat is confirmed only after the card payment succeeds. This is the safest option for co-ops that want to guarantee payment before a seat is held.
Families signing up for more than one class use a cart. Alongside Enroll, a paid class offers Add another class first, and once anything is in the cart every class routes through it: the button becomes Add to cart, a bar appears at the bottom of the catalog with a running total, and the family checks out once for everything. Nothing is charged and no seat is held until they finish that checkout, so a cart left sitting there isn't an enrollment.
Flexible / bill the family's account
In flexible mode the student is enrolled immediately and a pending charge is added to the family's account. The co-op collects whenever and however works for them — cash at the door, check, bank transfer, or by directing the family to pay online from their Payments page. This is useful for co-ops that run a tab for the term and settle up at the end, or for families that don't have a card handy at enrollment time.
When a family has account credit
A scholarship or volunteer credit reduces what a family owes on their Payments page, but in Stripe mode it doesn't reach class checkout: the family is still sent to pay by card for the full amount. A family holding a scholarship that covers their whole cart ends up paying anyway, or writing to you to ask what to do.
Under Admin → Settings → Programs, in the Class enrollment section, you can tick Apply account credit at class checkout. With it on, a family who has credit skips the card form. Their fees post to their account at the normal price, with sibling discounts, reduced rates and staff exemptions unchanged, and the credit covers them. Enough credit and the students are enrolled immediately with nothing owed. Not enough, and the remainder sits on their Payments page to be paid like any other charge.
Families with no credit are unaffected and check out by card as usual. Nothing is deducted from the credit itself, so the ledger still shows the credit and the charges it covered. If you later remove that credit, the balance it was covering reopens.
Setting the default for your co-op
Overriding for a specific class
Open the class detail page, scroll to Enrollment settings, and select a payment mode. Choosing the co-op default means the class inherits whatever you've set globally, which keeps things consistent without repeated configuration.
Co-ops without a connected Stripe payout account always use flexible mode — there's no Stripe account to charge on, so the system bills the family's ledger and you collect directly.
Staff fee exemptions
Two types of members can enroll their students at no charge, with no workaround required.
Owner and admin exemption
When enabled (the default), owners and admins pay nothing to enroll their students in any class. No Stripe redirect, no pending charge — the seat is allocated at $0 and the roster shows a "Fee waived" badge next to the student's name so you have an audit trail.
Turn this on or off under Admin → Settings → Programs → Class enrollment. The toggle applies to all classes; individual classes can override it for their teacher exemption independently.
Teacher exemption
Teachers can be exempt two ways, and you can use either or both.
Every class, co-op-wide. Under Admin → Settings → Programs → Class enrollment, check Teachers enroll their students at no charge. That covers anyone holding the Teacher role, plus anyone assigned to teach a class in the term, since plenty of co-ops leave their parent-teachers on the Family role. Either way they enroll free in any class, whether or not they teach it. This is off by default.
Just the class they teach. On a class's own Enrollment settings, check Assigned teachers enroll their students at no charge. This only covers a teacher assigned to that specific class, and only for their own students. It's on by default for every class, so turn it off for one where you want everyone to pay (an expensive field trip, say), even a class the teacher themselves teaches.
By default an exempt enrollment waives every fee on the class, materials included. If you'd rather exempt members still pay one fee (waive tuition but keep charging for materials, for example), open that fee in the class's fee editor and uncheck Waived for exempt members. That choice belongs to the fee itself, so it applies everywhere the fee is used, the same as a fee's name and its sibling-discount setting.
Sibling discount
Co-ops that want to make it cheaper for families with several students to enroll can turn on a sibling discount for class fees. It's off by default, so no co-op's pricing changes unless an admin opts in.
When it's on, the first student a family enrolls in a paid class each term pays full price. Every other student in that family then gets the discount on their own class and materials fees, for any paid class they enroll in that term — not just the same class as their sibling. Which student counts as “first” is whoever the family happens to enroll first that term; there's nothing to configure beyond turning the discount on.
Registration windows
Families can only enroll during an open registration window. Windows belong to a term and can have an optional invite link that restricts who can enroll during that window.
You can have multiple windows open at the same time — for example, a member-only early window and a public window that opens a week later. Check Invite link only on the early window and share the secret link it generates with the families who should get early access; everyone else waits for the public window.
For a full walkthrough of opening registration, see the Opening Class Registration guide.
Waitlists and promoting students
When a class fills, additional enrollments land on a waitlist. Waitlisted students don't pay — they're queued by position and promoted one at a time when a seat opens.
Promoting a student from the waitlist
Tracking pending balances
Any class fee created by flexible-mode enrollment or waitlist promotion shows up as a pending charge in the family's ledger. You can see all families with outstanding balances from Admin → Billing.
The Billing overview separates three states so a treasurer never has to guess which is which: owes money (a pending charge is unpaid), paid up (everything billed this term is settled), and not yet billed (the family has no charges this term at all). Filter the list by any of these, or search by either parent's name to find a household.
Recording an offline payment
Families paying online
Families with a pending balance see a notice on their dashboard. From their Payments page they can click Pay now to go through Stripe Checkout for the outstanding amount. Once paid, the charge is marked settled automatically.
Still have a question? Head back to the Help & Support page or reach out to your co-op admin directly from the dashboard.