Scheduling & Availability

Real-Time Availability

Slots reflect actual bookings — no refresh, no stale cache, no surprises.

Shipped December 13, 2025

✦ Key takeaways

  • Availability is enforced at the asset level, not just the product. If the boat is booked, every product that uses that boat is blocked — automatically.
  • Concurrent checkout sessions are serialized at the database level. Two customers can’t both confirm the last slot.
  • Operators can layer availability rules — blackouts, capacity overrides, booking windows — on top of the base schedule without rebuilding anything.

Most booking software tracks availability at the product level — they count reservations against a maximum headcount and call it done. That works fine until one boat powers three different products and a booking on product A doesn’t block product B.

Freebo’s availability engine works differently. Every available slot is computed from the asset — the physical thing the booking consumes. When a reservation is created, the asset’s time window is locked. Every other product that shares that asset sees that window as unavailable, instantly.

Asset-level Where availability is enforced
Row locks How concurrent bookings are serialized
< 100ms Typical availability query response time

Availability rules

On top of the base schedule, operators can configure:

  • Blackout dates — block a specific date or range across all products (weather, maintenance, private events)
  • Booking windows — set how far in advance customers can book and how close to departure
  • Capacity overrides — temporarily reduce max guests on a slot without editing the product
  • Day-of cutoffs — stop accepting bookings X hours before departure

These rules are evaluated at query time, so the availability grid a customer sees always reflects the current state of your business.

Booking further out, with cutoffs that actually hold

Guests can now book up to 18 months ahead — enough runway for next season’s weddings, corporate retreats, and holiday charters instead of a window that closes before the planning does. The public booking calendar navigates by month and year, so a guest picking a date eleven months out gets there in a couple of taps rather than clicking forward one month at a time.

At the other end of the window, booking cutoffs are enforced on every path that creates a reservation — and the check runs before payment is taken, not after. A guest can’t slip through a same-day booking on a product that needs a day of lead time and end up charged for a trip you can’t run. Past time slots are filtered out entirely: once a departure time has come and gone, it never appears as bookable, on fixed-schedule or flexible-duration products alike.

What happens when a customer sits on the checkout page for a long time?
Freebo doesn't hold a slot during browsing — only during the active payment session. This keeps availability accurate for everyone browsing at the same time and prevents ghost holds from abandoned carts.
Can I manually block a date without canceling existing reservations?
Yes. Blocking a date forward-blocks new reservations but does not touch anything already booked. Existing reservations on that date are unaffected.