For saunas & wellness bathhouses
Booking software for saunas and wellness bathhouses on Shopify
A sauna seats a number of bodies and not one more. CapFlow Booking sells that number per session through your existing Shopify checkout, with local pass holders recognised at the point of booking and towel hire offered on the way to the cart.
The way it actually goes wrong
A coastal badstue with one 34-seat sauna and a cold plunge runs hourly sessions from 07:00 to 21:00, plus two aufguss ceremonies a day. The obvious way to sell them on Shopify is a product per session with inventory set to the number of places.
Shopify stock sits on a product, not on an hour, so a bathhouse running fourteen sessions a day is maintaining close to a hundred variants a week by hand. One Saturday the 18:00 aufguss is set up as a copy of the 17:00 and the cap is never changed from the old 40. Forty tickets sell. The gus master has counted the benches, because that is the job: three tiers, 34 places, towels laid out. Six people who paid have nowhere to sit, and the ceremony cannot simply run a bit longer to fit them in.
The number belongs to the room, and the room owns its sessions. You set the main sauna to 34 places and write one weekly rule (daily, 07:00 to 21:00, on the hour). CapFlow Booking generates the whole season from it, and every session inherits 34 whether or not anyone remembers. The 34th booking closes the session. The 35th customer sees it as full before they reach the cart, and the last place cannot be sold twice because holds during checkout are atomic.
Bench places, not a vague capacity number
Each sauna is a resource with its own number: 34 in the main room, 12 in the small smoke sauna. Every session generated for that room inherits the number, and the widget will not sell past it.
Locals and visitors share the same benches
Hold part of each session for annual and monthly pass holders, and put the rest on public sale. Unclaimed member places release to everyone a set number of hours before löyly.
Towel, robe and sauna hat as add-ons
Offer hire during the booking flow rather than at the desk while a queue forms in the changing room. Add-ons go through the same Shopify cart as the session itself.
Full-moon sauna and championship nights
One-off events carry their own capacity, price and access rules, and they block the room. A ceremony night and an ordinary drop-in session cannot be sold into the same sauna at the same hour.
A short code at the door
The check-in dashboard lists today's arrivals with a booking code like gold-rose-0427, so whoever is on the desk can tick people off without opening Shopify admin, and no-shows are recorded.
Occupancy per hour, not per guess
See fill rate by session time, the pass holder versus public split, and peak hours, with CSV export. If the 07:00 runs at 30 percent and the 18:00 turns people away, you will know within a fortnight.
Why a sauna is not a treatment room
Booking apps built for spas assume a room and a therapist: one guest, one hour, one bed. A public sauna is the opposite. The session runs whether four people or thirty-four turn up, nobody is booking a named member of staff, and the only number that matters is how many bodies fit on the benches.
That number is unusually hard. A treatment room can sometimes take a plus-one on a chair. A sauna cannot. Three tiers of bench are a fixed length, everyone needs space to sit or lie without touching a stranger, and during löyly the top tier is not a place you can politely squeeze into. When an aufguss master says 34, they mean 34.
CapFlow Booking starts with the bench count. The main sauna, the small smoke sauna and the plunge area, if you sell it separately, are each a resource carrying its own number of places, and the opening hours are a rule written against that resource rather than a diary kept beside it.
What a bathhouse setup looks like
| CapFlow concept | In sauna language |
|---|---|
| Resource | Main sauna (34), smoke sauna (12) |
| Service | Drop-in session, aufguss ceremony, morning plunge |
| Schedule | Sessions on the hour, as weekly rules |
| Timeslot | One session on one day |
| Capacity pool | Places held for pass holders vs. visitors |
| Membership | Annual pass, monthly pass, ten-session clip card |
| Event | Full-moon sauna, aufguss championship night |
| Add-on | Towel hire, robe hire, sauna hat |
Sessions start on the hour, which suits a schedule built from weekly rules. Write the rule once and CapFlow Booking generates the whole season, then edit the rule when the winter timetable starts rather than rebuilding a hundred products.
Locals and tourists on the same benches
The commercial problem with a good sauna is that its two audiences want the same seats. Locals buy an annual pass in October and expect a place on a Wednesday evening. Visitors arrive in July, book once, pay full price, and are worth more per session.
CapFlow Booking splits each session into a member pool and a public pool. Membership comes from Shopify customer tags, which is how you already segment those people for email, so a pass holder booking a session takes their reserved place without going through payment, while a visitor books the same session at your public price through the normal checkout. Both bookings count against the same 34.
Holding member places permanently would waste them on the quiet nights. The auto-release window is the compromise: held until a set number of hours before the session, then open to anyone. Set it to three hours and a Tuesday ceremony that locals have not claimed fills with people who walked past the harbour that afternoon.
Ceremonies, and selling the towel with the ticket
An aufguss championship night or a full-moon session is not part of the weekly rhythm. Events handle that: their own capacity, their own price, their own access restrictions, and they block the sauna so an ordinary drop-in session cannot be sold into the same room at the same hour.
The other easy money is hire. Towels, robes and sauna hats are the classic upsell, and the worst place to sell them is at the desk while ten people are waiting to get changed. Add-ons appear during the booking flow and land in the same Shopify cart as the session, so your normal payment providers, gift cards, discount codes and refunds all behave as they do for a bag of birch whisks.
Multi-session and consecutive bookings
Some guests want two hours: sauna, plunge, sauna again. Multi-slot booking covers the case where a customer books several consecutive sessions in one go, with the server checking the sessions really are back-to-back before it prices them, rather than trusting the browser.
Honest limits
What a bathhouse will miss, in the order it tends to come up:
- No custom booking fields. There is no place to ask about health conditions or to collect a signed condition of entry on the booking form.
- No waitlist. A full session is full, with no automatic queue.
- No deposits. Sessions are paid in full at checkout, or not at all.
- No rescheduling, by anyone. Guests can cancel themselves, but a booking cannot be moved to another session by them or by you. It has to be cancelled and rebooked.
- No SMS. Email only, from your own sender address.
- No Shopify POS integration. Walk-in sales at the desk stay in whatever you use today, and are not counted against the session capacity.
- No buffer time between sessions. If you need twenty minutes to air the room, build it into the schedule by starting sessions on the hour with a shorter service duration.
- No multi-location. One installation covers one site.
None of that is on a roadmap we would ask you to trust. If one of those lines is the thing standing between you and a decision, the comparison pages name the app that has it.
Questions from sauna & wellness
Can I cap a session at the number of places on the benches?
That is the core of it. The sauna is a resource with a capacity, every timeslot generated for it inherits that capacity, and the booking widget stops at the number. Holds during checkout are atomic, so two people racing for the last place cannot both succeed.
How do annual passes for locals work?
Sell the pass as a normal Shopify product. It applies a customer tag, CapFlow Booking reads that tag and treats the holder as a member, so they book into the reserved part of the session without paying again. Monthly passes and clip cards work the same way.
Can I run gender-separated hours?
Yes, as separate services on the same resource, scheduled at different times by weekly rule. Women's hours on Monday mornings and mixed sessions the rest of the week is a schedule question, not a special feature.
Is there a waitlist when a session is full?
No. When the benches are sold, the session shows as full and there is no queue that promotes people automatically if someone cancels. Freed places simply return to sale, and pass holders who did not claim their place release it at the auto-release window.
Can guests move themselves to a later session?
No, and nor can your staff. Guests can cancel their own booking from the link in the confirmation email, with your cancellation fee rules applied, but moving someone from the 17:00 to the 19:00 is not supported: that booking has to be cancelled and a new one made.
Do you send an SMS before the session?
No. Everything goes out by email, from your own sender address: the confirmation, the reminder before the session, and the cancellation notice. There is no text message anywhere in the product, which is worth knowing if your guests are used to a text on the morning of their booking.
Try it on your own schedule
Free plan, no time limit. Billing runs through Shopify if you upgrade.
Install free on Shopify