For guided tours
Booking software for guided tours on Shopify
A departure has a hard number behind it: seats on the boat, seats in the minibus, or the largest group one guide can actually be heard by. CapFlow Booking sells that number through your existing Shopify checkout and gives the guide a name list on their phone at the meeting point.
The way it actually goes wrong
A harbour operator runs a 12 seat RIB three times a day in season, plus a 16 person food tour on Thursdays and Saturdays. On Shopify the tempting approach is one product per tour with inventory set to the group size.
Inventory is per variant, so the 11:00 and the 14:00 departure share a number unless somebody builds and rebuilds a variant for every departure of every day. Worse is the last seat. Two people, two phones, the same minute, and standard cart inventory is optimistic enough to let both reach checkout. Somebody finds out on the dock, in front of ten other passengers, with a skipper who is not going to break a licensed passenger limit for anyone.
Each departure is its own timeslot with its own capacity, generated from a weekly rule for the whole season. When a customer starts checkout, their place is held atomically for ten minutes, so the second phone sees eleven of twelve gone and one seat left, then none. The last seat is sold once.
Every departure counted separately
The 10:00, the 13:00 and the 16:00 are three timeslots with three capacities, not one product sharing a stock number. Change how many departures run on a Tuesday in the shoulder season and you edit a rule, not a calendar.
The last seat is sold once
Checkout takes an atomic ten minute hold on the place. Two people paying for the last seat at the same moment cannot both succeed, which is the failure that actually costs you, because it is discovered at the meeting point.
Every tour on one calendar
Walking tour, food tour, brewery tour and the boat all live in the same schedule against their own resources, so you can see the day rather than four separate spreadsheets.
Check in with a phone and a code
The guide opens today's departure and sees the names, party sizes and short booking codes like gold-rose-0427. No printer at the meeting point, no laptop, no Shopify admin. No-shows are recorded as they happen.
Headsets and tastings sold in the flow
Add-ons attach to the booking: headset hire on a busy city walk, an upgraded tasting flight at the distillery, a blanket on the evening boat. It all lands in the same cart, so the guide is not taking cash.
Peak hours you can schedule against
Occupancy per departure, peak times and CSV export. If the 16:00 runs at 40 percent all through May and the 11:00 sells out by Wednesday, that is a timetable decision you can make before next season rather than after it.
What actually limits a departure
Tour capacity is rarely a marketing choice. It is a seat count or a licence. Twelve on the RIB because that is what the passenger certificate says. Sixteen in the minibus because sixteen is what the minibus has. Fourteen on the food tour because the third stop is a small dining room and the owner has been clear about it.
Walking tours are the interesting case, because the limit is acoustic. Somewhere between 12 and 20 people, depending on the street, the guide stops being heard by the back of the group and the tour quietly gets worse. Some operators solve that with headsets and push the number up. Some cap it and charge accordingly. Either way it is a number, and once you have chosen it the software’s job is to respect it.
CapFlow Booking puts that number on the resource. Every departure generated from that resource inherits it, and the widget will not sell past it.
What a tour operator setup looks like
| CapFlow concept | In tour language |
|---|---|
| Resource | The RIB, the minibus, a guide-led walking group, the distillery tour room |
| Service | Old town walk 90 minutes, evening food tour, seal safari, brewery tour with tasting |
| Schedule | The season timetable, as weekly rules |
| Timeslot | One departure |
| Add-on | Headset hire, tasting upgrade, hotel pickup |
| Event | A one-off Christmas market walk, a night sailing, a founder-led anniversary tour |
| Booking code | What the guide reads off a phone at the meeting point |
The pattern most operators land on is one resource per physical thing that can only be in one place at a time, and one service per product you sell on it. That keeps the calendar honest: if the boat is out on the 11:00 safari it cannot also be running a private charter.
Three departures a day, written once
The daily rhythm of a tour business is repetitive by design. Three departures a day, six days a week, from Easter to October, then two a day at weekends only through the shoulder season. Building that by hand is hundreds of entries and one of them will be wrong.
Schedules are weekly rules that generate the whole season. Add a fourth summer departure and every affected day picks it up. Drop the midday sailing in September and it disappears from September onward without touching August.
One-off departures do not belong in that pattern, and events cover them: their own capacity, their own price, their own access rules, and they block the resource, so the special Christmas market walk cannot be sold on top of a regular departure the same guide is meant to be running.
The meeting point
Most of what goes wrong in a tour business goes wrong in the ten minutes before departure, at a statue, a dock gate or a brewery door, with a guide holding a phone in the rain.
The check-in dashboard is built for exactly that: today’s departures, the names, the party sizes and a short booking code the customer can read out. Ticking people off marks them present, and anyone left unticked is recorded as a no-show. Over a season that data is worth more than it looks, because it tells you which departures carry the no-shows: the 09:00 in shoulder season, or the tour you discount hardest.
Honest limits
For a tour operator this list is longer than it is for the other venues on this site. In order of how often it kills the deal:
- No multi-language. The widget and the emails run in one language. For an international audience this is the biggest gap on the list.
- No waitlist. Sold out is sold out, with no automatic promotion when someone cancels.
- No OTA or channel manager integration. No Viator, GetYourGuide or Bokun sync, and no Zapier or webhooks to build one.
- No custom booking fields. No dietary requirements on a food tour, no mobility question, no pickup address field.
- No SMS or WhatsApp. Email only, from your own sender address.
- No deposits. Full payment at checkout.
- No rescheduling, by anyone. Customers can cancel themselves, but a booking cannot be moved to another departure by them or by you. It has to be cancelled and rebooked.
- No buffer time between departures. If you need 30 minutes to turn the boat around, build it into the schedule yourself.
Operators who sell mostly through Viator or GetYourGuide should not install this. That is not modesty, it is arithmetic: the channel you sell through is the one that has to hold the seat count. See the comparison pages for what does fit.
Questions from guided tours
Can I run different group sizes for different tours?
Yes. Capacity sits on the resource, so the 12 seat RIB, the 16 seat minibus and the 20 person walking tour each carry their own limit, and every departure generated for that resource inherits it. Where a site or a licence imposes a hard maximum, that is the number you put in.
Can I offer the widget in English and Spanish?
No. The booking widget and the notification emails are single language. There is no translation layer and no per-language variant. For an operator whose customers arrive from four countries, that is a genuine reason to look elsewhere, and we would rather you knew before installing.
Is there a waitlist for a sold-out departure?
No. When a departure is full it shows as full, and there is no queue that promotes someone automatically if a booking is cancelled. Cancelled seats simply go back on sale. Operators who rely on a waitlist to fill shoulder season departures should choose a different app.
Does it connect to Viator, GetYourGuide or Bokun?
No. There is no OTA or channel manager integration, and no Zapier or webhook layer to build one with. CapFlow Booking sells your own direct inventory through your own Shopify store. If your channel bookings and your direct bookings need to share one live availability pool, this is not the right tool.
How do partner or season pass allocations work?
Memberships are detected from Shopify customer tags, so an annual pass holder or a tagged partner account can be given a reserved slice of each departure. Unclaimed reserved seats release to public sale a set number of hours before departure. For most walking and food tours the honest answer is that you do not need this, and a single open pool is simpler.
Can a customer move to a different departure if their flight is delayed?
They can cancel from the link in their confirmation email, with your window and fee applied. Moving someone to another departure is not supported at all, by them or by your staff: the booking has to be cancelled and rebooked on the new departure.
Try it on your own schedule
Free plan, no time limit. Billing runs through Shopify if you upgrade.
Install free on Shopify