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.

Without capacity

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.

With CapFlow Booking

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.

Aufguss 18:00, main sauna
Members
Public
20 reserved14 open34 bench places total

Annual pass holders hold 20 of the 34 places. Three hours before the session, any place a pass holder has not claimed releases to public sale, so a quiet Tuesday ceremony fills with visitors instead of running half empty.

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