Skip to main content

Programmes, classes, and sessions explained

Zooza organises everything in three layers. Understanding what each layer does — and what happens when you edit one — will save you a lot of confusion.

PROGRAMME
└── CLASS
└── SESSION

Think of it like a school:

  • The programme is a subject — Maths, Swimming, Ballet. It sets the rules: who can enrol, how payment works, whether trials are allowed.
  • The class is a specific group running that subject — Monday 9am, Wednesday 4pm. It defines the schedule, location, instructor, and capacity.
  • The session is a single lesson — Monday 6 January 9am. It's the individual occurrence where you record attendance and handle cancellations.

What each layer controls

ProgrammeClassSession
Name and description
Payment model (term / drop-in / one-off)
Price✅ reference✅ actual
Booking form settings
Trial settings
Make-up session rules
Day and time✅ override
Location✅ override
Instructor✅ override
Capacity
Attendance
Cancellation

What cascades — and what doesn't

This is the part that surprises most new users.

Changes at Programme level apply to all future enrolments but do not automatically update existing bookings. If you change the price at programme level, clients who already booked keep their original price.

Changes at Class level apply to all sessions in that class by default — but only if you haven't already overridden individual sessions. You choose the scope when saving.

Changes at Session level apply to that one occurrence only. They do not affect other sessions in the class.

Scope selector — always check before saving

When you edit an instructor, time, or price at Class or Session level, Zooza asks you to confirm the scope:

  • This session only — e.g. a one-off substitute instructor
  • All upcoming sessions in this class — e.g. a permanent instructor change
  • All sessions including past ones — use rarely, only for corrections

If you don't see this prompt, check that you're editing at the right layer (see below).


Which layer to edit — quick reference

What you want to doWhere to go
Change how clients pay (monthly, per term, per session)Programme → Settings
Change the price for a new termClass → Edit → Price
Change the price for one client onlyBooking → Edit payment
Change the instructor permanentlyClass → Edit → Instructor → All upcoming sessions
Change the instructor for one class onlySession → Edit → Instructor → This session only
Change the class time permanentlyClass → Edit → Time → All upcoming sessions
Move a single session to a different timeSession → Edit → This session only
Cancel one lessonSession → Cancel session
Cancel the whole classClass → Archive or end date
Enable or disable trialsProgramme → Settings → Trials
Enable or disable make-up sessionsProgramme → Settings → Make-up sessions
Change who can see this programme onlineProgramme → Online booking on/off

Common mistakes

Editing the wrong layer and wondering why it didn't save If you change the instructor in the Timetable view but nothing updates in the Sessions view — or vice versa — you likely edited at the wrong level. The Timetable shows Class-level data. Sessions are individual occurrences. Check which one you opened.

Changing price at Programme level expecting it to update existing bookings It won't. Programme-level price is a reference for new enrolments. To update an existing client's price, go to their Booking and edit the payment directly.

Cancelling a session and expecting all future sessions to cancel too Session cancellation affects one occurrence. To end the class entirely, set an end date on the Class or archive it.

Editing a session and not seeing the scope selector Some fields (like instructor rate) don't have a scope selector — they apply to the class, not the session. If you're editing from inside a single session and the field is greyed out, edit from the Class instead.


Billing periods

Billing periods are an optional layer above Programmes. They let you group programmes into semesters or school years — useful if you want to carry over make-up credits between terms, or run reports per period.

You don't need billing periods to run Zooza. Most businesses add them once they've been running for a term or two and want cleaner reporting.


API note

If you're building on the Zooza API, the field names differ from the app labels:

App labelAPI field
Programmecourse
Classschedule
Sessionevent

See the developer docs concepts page for full mapping.