Zooza logo

← Back to Blog

Build or Buy a Class Booking System? What the Estimate Leaves Out

·

Sooner or later, every growing activity school hears the same idea. “We have a developer. Why don’t we build our own booking system?” Sometimes the developer suggests it. More often it comes from frustration with a tool that almost fits.

It is a fair question, and the honest answer starts with how badly software projects tend to be estimated. McKinsey, working with the BT Centre for Major Programme Management at Oxford, looked at more than 5,400 large IT projects and found they ran on average 45% over budget and 7% over schedule while delivering 56% less value than predicted. Bent Flyvbjerg and Alexander Budzier, studying 1,471 projects for Harvard Business Review, found the average overrun was a more modest 27% — but that one project in six was a “black swan”, overrunning by around 200% on cost and 70% on time.

Those are enterprise programmes, not booking forms, and nobody should pretend the percentages transfer straight to a two-person project. What transfers is the direction of the error. Estimates are wrong in one direction, and the miss comes from work that was not visible when the estimate was made.

Booking for recurring classes has an unusual amount of that invisible work. This is where it hides.

The version you can estimate

Here is what gets built first, nearly every time:

a list of classes with times and venues, a sign-up form for the child and the parent, a card payment, a confirmation email, and an admin table of who signed up.

Two to four weeks for a good developer. It works on launch day. Then term starts.

What the first term adds

Make-up sessions

A child misses Tuesday. The parent wants Thursday instead. Suddenly you need a record of which session was missed and whether it was cancelled in time, a limit on how many make-ups a booking earns, sometimes scaled to the length of the term, an expiry rule and a decision about what happens to unused make-ups when the term ends — carry over, expire, or keep. Then the scope: same class, same programme, any venue, or a chosen subset. Then seats for make-ups in classes that are already full for new sign-ups, a waiting list when nothing is free, protection against two parents grabbing the last seat in the same second, and an email at every step.

This one feature is routinely bigger than the whole first version. And it never settles, because the business keeps refining its policy.

Trial classes

Most activity businesses sell through trials. A trial has its own price, often free, its own capacity, and a follow-up that has to turn it into a regular booking on the right payment plan. You will also want the trial-to-enrolment rate, because that is the number the owner actually manages week to week.

Payment plans, not payments

Parents rarely pay once. They pay monthly, per term, in instalments, or by direct debit. Somebody joins three weeks late and expects a pro-rated price. Somebody’s card fails. Siblings get a discount. The second term invoices itself. Every one of these has to be correct, visible to both the parent and the office, and backed by an invoice the local accountant will accept.

Changes after booking

Children move classes. Families pause. An instructor falls ill and a session is cancelled — which should be credited, not quietly turned into a make-up. A booking gets copied into a second class for a sibling. Each of those changes has to keep the money, the make-ups and the attendance consistent with each other, which is the part that produces the bugs nobody can reproduce.

Many venues, many brands

Open a second venue, or franchise, and the data model has to carry per-venue pricing, staff who see only their own venue, and reporting across all of them at once.

What the estimate usually compares

AreaFirst versionWhat the business needs after a year
Class catalogue & sign-up✔Filters, age groups, waiting lists, capacity per class and per make-up
PaymentsOne card paymentPayment plans, direct debit, pro-rating, failed payments, invoices
Trials–Trial pricing, capacity, follow-up, conversion tracking
Make-ups–Earning rules, limits, expiry, scope, extra capacity, waiting list
Parent account–Bookings, payments, make-ups, cancellations, documents
Staff toolsAdmin tableAttendance, messaging, reports, permissions per venue

The left column is the part that estimates well. The right column is the part that gets re-estimated every term, and it does not stop — which is the second thing the research is clear about. IEEE’s own summary of the literature puts it plainly: maintenance consumes 60 to 80 percent of total software costs over a system’s operational life. Individual studies spread wider than that, depending on the era and the kind of software. None of them suggest the first build is the expensive part.

When building it yourself makes sense

Three situations, and they are real ones:

Booking is your product. You are a platform company and the scheduling logic is your competitive edge. Then of course you own it.

Your model is genuinely unusual — not “slightly different from the demo”, but a structure no existing system’s rules come close to.

A team will maintain it, not a person. For years. Including the year after your current developer moves on.

If none of the three applies, the build is paying to rebuild something that does not differentiate you.

The middle path: build the experience, not the engine

Most teams do not actually want to own make-up rules. They want a booking flow that looks and feels like their brand, a parent area that belongs to their site, and data flowing into their own CRM or app. That is a different ask, and it does not require owning the engine underneath.

With a platform like Zooza — the surfaces are laid out in full on the developer hub:

  • Widgets cover booking, trials, maps, timetables and the parent zone, and you style them to your brand — down to custom course and session tiles.
  • The REST API lets you build your own catalogue, timetable, location map or app on live data, with server-side credentials.
  • Make-ups, trials, payment plans and waiting lists are enforced by the platform, so your front end cannot sell something the business does not offer. Worth reading how make-up sessions actually work before you estimate building them.
  • AI tools plug in. Your website chatbot can know the logged-in parent, and staff can run day-to-day work from Claude through the Zooza MCP server.
  • Your payment gateway stays yours. Connect your own and Zooza takes no cut of the transactions — a fee applies only on Zooza-provided card processing. For a developer sizing up platform risk, that is usually the question behind the question.

You keep the design and the customer journey. You skip the edge cases.

Five questions before you decide

Answer these with the business owner in the room, not alone at the keyboard:

  1. How do make-ups work today, and how many times has that policy changed in the last two years?
  2. How many payment models do you sell — term, monthly, pay-as-you-go, instalments?
  3. Do you run trials, and who follows up on them?
  4. How many venues will there be in three years?
  5. Who maintains this when the developer who wrote it has moved on?

If the answers come back as “it’s complicated”, “several”, “yes”, “more than now” and a pause — start from a platform and build on top of it.

Getting started

Create a free account at signup.zooza.online, request a REST API key from support, and start from the integration examples. Each one ships with copy-paste code and a prompt for your AI coding agent. If you would rather see the surface first, the REST API overview and the multi-step trial booking example are the two pages that answer “can this do what we need” fastest.

Frequently asked questions

  • How long does it take to build a class booking system from scratch?
    The first version — a class list, a sign-up form, a card payment, a confirmation email and an admin table — is a few weeks for a competent developer. That part estimates well. What follows it does not: make-up sessions, trial follow-up, payment plans, pro-rating, waiting lists and per-venue permissions all arrive after launch, as the business discovers its own rules. Treat the first version as the start of the project rather than most of it.
  • Why is booking recurring classes harder than booking an appointment?
    An appointment is one slot, one person, one payment. A term of classes is a relationship: the same child in the same seat for twelve weeks, paid monthly or per term, with missed sessions that may or may not earn a make-up, a sibling who joins late at a pro-rated price, and a trial that has to convert into an enrolment. The booking is not the transaction — it is the opening of an account that the system then has to keep consistent.
  • What is the most underestimated feature in a custom booking build?
    Make-up sessions. They need a record of which session was missed and whether it was cancelled in time, a limit per booking, an expiry rule, a scope rule for where the make-up can be used, spare capacity in classes that are already full for new sign-ups, a waiting list, protection against two parents taking the last seat at once, and an email at every step. It is frequently larger than everything in the first version combined, and the policy behind it changes as the business learns.
  • When does building your own booking system actually make sense?
    When booking is the product rather than the plumbing — you are a platform company and the scheduling logic is your edge. When your model is genuinely unusual and no existing system's rules come close. And when a team, not a single contractor, will maintain it for years. If none of those hold, the build is paying to rebuild something that does not differentiate you.
  • Can you keep your own design and still use a booking platform?
    Yes, and that is the path most teams end up on. Zooza's widgets handle booking, trials, maps, timetables and the parent zone, and you style them to your brand down to individual course and session tiles; the REST API lets you build your own catalogue, timetable or app on live data. The rules — make-ups, trials, payment plans, waiting lists — stay enforced by the platform, so your front end cannot sell something the business does not offer.

Get the next one in your inbox

Practical playbooks for running children’s activities — no fluff, a couple of times a month.

Double opt-in — confirm via the email we send. Unsubscribe anytime.

See Zooza on your own timetable

Book a free 15-minute walkthrough — we’ll configure it around how you actually run classes.

Ready to put it to work?

Try Zooza for free or book a 15-minute live demo. No commitment, no credit card.

Try for Free No credit card needed.
Book a live demo We’ll show you what’s possible.