For surf schools
Booking software for surf schools on Shopify
A beginner lesson is capped by two things at once: how many students an instructor can safely watch in the water, and how many wetsuits you own in the sizes that turned up. CapFlow Booking sells the smaller of those two numbers through your existing Shopify checkout.
The way it actually goes wrong
A beach break school runs beginner group lessons at 10:00, 12:30 and 15:00 through the season, with board and wetsuit hire included. On Shopify the obvious approach is a product per lesson with inventory set to the number of places.
Inventory sits on a variant, not on a date and time, so somebody has to rebuild the variants every week as the timetable shifts with the tides. On a hot August Saturday the 10:00 beginner lesson takes 14 bookings while two instructors are on shift. At a 1:8 beginner ratio that is 16 on paper, but only 12 steamers in the sizes that walked up the beach. The instructor either runs a lesson they cannot safely supervise, or sends paying customers back to the car park at 09:50.
Capacity lives on the timeslot. You put the real number, the one your ratio and your wetsuit rack agree on, straight onto the weekly rule for the season, and CapFlow Booking generates every lesson from it. The last place closes the lesson. The next customer sees it as full before they reach the cart, on the website, at home, the night before.
Capacity set by ratio, not by optimism
The cap goes on the rule that generates the lesson, and rules can differ by day. Two instructors at 1:8 is 16, one instructor is 8, and the widget will not sell past it. Holds are atomic for ten minutes during checkout, so two people racing for the last place cannot both get it.
A surf camp week paid for once
A five day camp is five lessons in the timetable, not a single product. The widget keeps a booking cart, so the customer adds Monday, then Tuesday, and carries on to Friday before paying once through Shopify. Five bookings, one checkout, every lesson capacity checked as it goes in.
August is not October
Schedules are weekly rules per season. Run three lessons a day through the summer, drop to weekends only from late September, and change the whole autumn timetable by editing one rule rather than 60 entries. Lessons already booked on slots the edit removes are cancelled and those customers emailed, so reshaping a live season is a decision, not housekeeping.
Kit hire sold with the lesson
A lesson can carry one per-person add-on, with its own adult and child prices, and kit hire is what most schools put there. It lands in the same Shopify cart as the lesson, so the customer pays once and you are not taking cash on the sand. One add-on per service, so it covers the hire you always sell rather than a full rental list.
Women's weekends and competitions
One-off sessions run as events with their own capacity, pricing and access restrictions. An event blocks the resource, so nobody can sell a regular beginner lesson into the same instructors and the same rack at the same time.
A register on the beach
The check-in dashboard shows today's arrivals with short booking codes like gold-rose-0427, readable from a phone in the van. No-shows are recorded, so you can see whether the 08:00 dawn lesson is worth keeping.
The two numbers that cap a lesson
Every surf school owner can tell you their instructor ratio. Beginners at 1:8, improvers a bit looser, kids tighter than that, and whatever your ISA or Surfing England style qualification and your insurer have agreed in writing. It is the number you would defend to a lifeguard.
The second number is less official and just as binding: the wetsuits on the rack, by size. Sixteen places at 1:8 means nothing if eleven of the fourteen people who booked need a medium and you own seven. Boards are usually the easier half, because a stack of soft-tops is cheap to add and takes one shape. Steamers are not.
CapFlow Booking does not know about either of those things directly. What it does is let you put the real limit on the resource, once, and then refuse to sell past it. That sounds small. It is the difference between finding out at 09:50 on the sand and finding out never, because the fourteenth booking was never possible.
What a school setup looks like
| CapFlow concept | In surf school language |
|---|---|
| Resource | Beginner lessons on the main beach, improvers at the point, private coaching |
| Service | Two hour beginner group, 90 minute improver, one to one, kids’ club |
| Schedule | The summer timetable, as weekly rules |
| Timeslot | One lesson on one day |
| Booking cart | A five day camp, added lesson by lesson, paid once |
| Add-on | One per-person extra per lesson, usually kit hire |
| Event | Women’s weekend, a competition, a coaching clinic |
| Membership | Season pass, ten lesson clip card |
A resource is not a person. It is a block of teaching capacity on a stretch of beach, and that is usually the right shape for a school, because on any given Saturday you do not care which of your three coaches takes the 12:30. If your customers book a named coach and that coach’s own diary is what they are buying, an appointment-style app is a better fit.
Camp weeks, and one checkout
The five day camp is where most Shopify workarounds fall over. Sold as a single product, it has no relationship to the lessons in the timetable, so the Wednesday session shows as having space it does not have. Sold as five separate products, the customer has to complete checkout five times and one of the five will be full by the time they get there.
The booking cart is the middle path. The customer adds Monday’s lesson, then Tuesday’s, and keeps going until the week is in the basket, then pays once through Shopify. Every lesson is capacity checked on the server as it is added, so nothing is reserved on trust.
Be clear about what that is not. Multi-slot booking, which does put several sessions on one booking, only accepts slots that touch end to end, so it will sell two back-to-back hours and refuse five daily lessons. And the cart gives you five bookings rather than a camp: five confirmation emails, five rows on the calendar, and five cancellations if the family drops out. Where you would rather sell the week as one product, staff can enter the five lessons from the admin instead.
Seasons, tides and the honest gap
The timetable in August is three lessons a day and a queue. The timetable in late October is one lesson at whatever time the tide allows, if enough people book. Weekly rules handle the seasonal shape well: write the summer pattern, generate it, write the autumn pattern when summer ends.
What weekly rules do not handle is the tide moving by roughly 50 minutes a day. If your 10:00 beginner lesson is really “two hours either side of low water”, you will be adjusting individual days by hand. Some schools sidestep this by publishing fixed lesson windows wide enough to absorb the drift and briefing the actual water time on the day. Others just do the manual edit each week. Either way, be clear that the app is not doing it for you.
Honest limits
Where the app will let a surf school down:
- No custom booking fields. No waiver, no height, weight or shoe size, no “have you surfed before”. You collect that separately.
- No tide awareness. Schedules are weekly rules. Tide-driven timings are a manual edit.
- No deposits. Camp weeks are paid in full at checkout or not at all.
- No camp as an object. A five day week is five bookings and five emails, however it gets booked.
- No waitlist. A full lesson is full, with no queue that promotes someone when a booking drops.
- No SMS or WhatsApp. Email only, which matters on a beach with poor signal.
- Rescheduling keeps the lesson details fixed. Customers and staff can move the same booking to another available time. A different lesson, duration, party size, or resource still means cancel and rebook.
- Single language. The widget and the emails run in one language, which is a real limit if half your August is visiting from abroad.
A school that lives or dies by tide-shifted timings and a signed disclaimer will be fighting this app every week. Better to know that in February than in July. The comparison pages cover what else is out there.
Questions from surf schools
Can I collect a disclaimer, plus height, weight and shoe size at booking?
No. CapFlow Booking has no custom booking fields, so there is no waiver checkbox and no place to capture sizing. You will still need your own form, whether that is a link in your confirmation email, a form on the site, or a clipboard at the hut. If getting sizing and a signature inside the booking flow is the thing you are shopping for, another app will suit you better.
Our lesson times move with the tide. Does that work?
Partly, and it is worth being clear about. Schedules are weekly rules, so you can set a pattern for a season and regenerate it when the pattern changes, but the app does not read a tide table. Day-by-day shifts around spring tides are a manual adjustment in the admin.
How do I stop selling more places than I have wetsuits?
Set the resource capacity to whichever limit binds first, usually the rack rather than the ratio. If you own 12 usable beginner steamers, the lesson caps at 12 even when three instructors are on. You may be tempted to split kit-hire and own-kit surfers into two resources so the own-kit group does not eat the rack. Do not, unless you are willing to police the ratio by hand: capacity in CapFlow Booking is per resource, and two resources means two caps that know nothing about each other. Twelve places on one and eight on the other is twenty students in one lesson, whatever your ratio says.
Can a customer move their lesson if the forecast goes flat and onshore?
They can move the same lesson booking to another available time from the link in the confirmation email until your customer cutoff. Your staff can move it from the admin without that cutoff. The lesson, duration, party size, and resources stay the same; changing those still requires cancel and rebook.
Can I take a deposit for a surf camp week and the balance later?
No. Bookings go through the native Shopify checkout and are paid in full at the time of booking. There is no deposit or partial payment support.
Do you send a text the night before with the meet time?
No. Confirmation, cancellation and reminder emails go out under your school's name. There is no SMS or WhatsApp channel.
Try it on your own schedule
Free plan, no time limit. Billing runs through Shopify if you upgrade.
Install free on Shopify