Taking Online Bookings
You already have a way to drop a waitlist sign-up onto your website. This is its more capable sibling: a real booking widget. A visitor lands on your site, picks dates, sees the types that are actually available with live prices, enters their details, pays, and walks away with a confirmation number — the same flow they'd expect from any hotel or campground site.
It is deliberately less gated than the waitlist. The waitlist makes people verify an email before they start; that's right for a queue, wrong for a booking. Here there's no email-verification step. Payment is a step in the flow, not a separate invoice page you bounce them to afterward. The one thing it will ask for — only when it has to — is the guest's own asset (their boat), because some rates are priced from it. When that applies it's the first question, so every price they see afterward is the real one. It's a per-widget setting, so a campground widget never shows it. See When a rate is priced by the boat below.
How it works for the guest
- Your vessel — only if your rates are priced by the boat. Type and size, up front. See below.
- Dates — check-in and check-out.
- Available options — the rate cards (packages) bookable for those dates, each with its total for the stay (priced straight from the rate plan its stay line subscribes to). Sold-out options and ones that fail a minimum-stay or closed-to-arrival rule simply don't show.
- Your details + payment — name, email, a card if you collect one. Their unit is held for 15 minutes while they finish.
- Confirmation — a confirmation number on screen and an email on the way.
Notice what's not there: no "choose your exact room." Like a hotel, the guest books a type; the system assigns the specific unit. If you run a campground where some guests want to pick the exact site, you can turn that on per type — the widget will then offer a unit picker for those types only.
What the guest actually books: a package ("rate card")
Each card in the widget is one of your packages marked bookable online. A package ties together the inventory type it sells (which sites/rooms), the stay price (a fixed price or a rate plan), and any add-ons. So your "Tent Site $405" and "Camper/Tent w Electric $505" cards are simply two packages — and because the desk and the website both book the same package, the price and the deposit come out the same either way.
To make a package show up online, edit it (Reservations → Packages) and, in the Hospitality & online booking section, pick its inventory type and tick Offer this package in the online booking widget. To advertise an add-on (firewood, extra vehicle, pet fee), tick Show in online booking on that add-on — staff always see every add-on, guests only see the ticked ones.
Setting up the widget
Go to Reservations → Online Bookings → Booking Widget (setup permission required). The settings worth knowing:
- Bookable types — optionally restrict which packages appear (by their inventory type). Leave empty to offer every bookable-online package.
- Payment — Reserve only (book now, pay on arrival), Deposit at booking (a percentage you set), or Full amount at booking.
- Auto-confirm — on, and web bookings are confirmed instantly; off, and they land as drafts for your staff to review first.
- Let guests pick a specific unit — honored only for types you've set to allow it.
- Customer asset (e.g. boat) — whether the widget makes the guest add their vessel. Auto (the default) asks only for rates that are actually priced from it, so a widget whose packages don't use boat-size pricing never shows the step. Always require it forces registration whenever the package expects a customer asset. Never ask turns it off entirely — use it for campground or RV widgets where there's no customer asset. See the next section.
- Earliest / latest — how far out bookings are allowed.
- Cancellation policy, terms, confirmation message — shown to the guest in the flow and on the confirmation.
(There's no "stay charge item" to set anymore — each package's stay line already carries its taxable pricelist item.)
Then copy the embed snippet at the right and paste it into your website where you want the widget — exactly like the waitlist embed. It loads in a self-sizing frame; nothing else to install.
When a rate is priced by the boat
Marina slip rates are usually priced from the vessel, not the slot: a per-foot nightly rate, or the classic "bill the greater of the boat's length or the slip's size." A rate like that has no honest total until the widget knows the boat — so when your rates work this way, the widget asks for the vessel first, before dates. Every rate card the guest then sees is priced for their boat: the real total, and the real deposit. No surprises at checkout, and nothing to re-enter later.
Because a rate's asset rule typically names every hull type it can price — Catamaran reads Length, Monohull and Megayacht read LOA, and so on — the step asks two things: which type of vessel they have, and its size. The size box relabels itself to match the type they pick (Length vs LOA), since that's the field your rule actually reads. The guest owns one boat, so they pick one. What they enter drives the price and the deposit, and is saved as a customer asset record on the reservation — so your staff see exactly what's arriving, of what type.
Asking first pays off twice more: the widget only shows rates their boat can actually book. A 90-footer never sees your 30–79 ft card, and a hull type a rate has no rule for is hidden rather than quoted at a price they'd never be charged.
You don't wire this up on the widget — it follows the package. Build the boat-size pricing on the package's stay line (Quantity source → From a measurement, then Measurement source → Asset-driven with a rule per hull type and an aggregation of Highest), and any widget offering that package collects it automatically. The Customer asset widget setting above only decides the policy: leave it on Auto and the step appears for exactly those rates and no others.
If a card ever does appear before the boat is known — a fallback path if the vessel step didn't run — it quotes the rate, not a total: "$2.85 per ft · per night", with "Total depends on your boat size" underneath. It won't invent a total it can't stand behind.
Two things worth getting right:
- You do not have to fill in "required customer equipment" on the package. The widget reads the hull types straight from your rule and offers the ones marked as customer-owned asset types. If you do set required equipment on the package, it simply narrows the list.
- Campgrounds and RV parks should set Never ask. There's no customer asset to register, and Auto already won't prompt — but setting it explicitly keeps the intent clear for whoever edits the widget next.
The staff inbox
Everything booked online appears in Online Bookings → Inbox, tagged as a web booking. Filter by Needs review (drafts, if you turned auto-confirm off), Confirmed, or Cancelled. From here you Confirm a draft, Cancel a booking (which also frees the held unit), or Open the full reservation to take a payment, assign a specific site, add notes, or anything else you'd do with a staff-created booking. Web bookings are ordinary reservations — they flow into the Tape Chart, the timeline, deposits, and reports like any other.
A note on tax
You don't configure tax here. The booking bills the package's stay line, which is tied to a taxable pricelist item, and the invoicing system applies that item's tax rules automatically — even though the rate came from a season or weekend rule. Make sure your package's stay line uses an item that carries your lodging tax and the math is correct without another setting.
Common mistakes
- Package not marked bookable online. A package only appears as a rate card after you tick Offer this package in the online booking widget and give it an inventory type. No bookable-online packages = an empty widget.
- Stay line not priced. If a package's stay line is set to From a rate plan, that plan needs rates; if it's Fixed, it needs a unit price. A $0 card usually means an unpriced line.
- Expecting it before the migrations run. Online booking needs the hospitality inventory, rate-plan, and unified-pricing updates applied to your site. If the widget says it isn't enabled, those are pending.
- Auto-confirm on when you wanted a gatekeeper. If you'd rather eyeball every web booking before it's real, turn auto-confirm off and work the Needs review queue.
- No availability online. A card only shows if its inventory type has a free slot (or quantity) for the dates and its plan isn't stop-selling / min-stay-blocking them.
- Boat-priced rate not asking for the size. If a per-foot rate isn't prompting for the vessel online, check the stay line's Measurement source — if it's Asset-driven, every hull type in the rule must be an asset type marked customer-owned, since that's how the widget tells the guest's boat from your slip. Also check the widget's Customer asset setting isn't on Never ask.
- A card quoting a suspiciously cheap total. A boat-priced card showing something like "$17.10 total" for a week is the per-foot rate rendered at a quantity of one foot — the sign that the size was never collected. Fixed now, but if you see it, the stay line's asset rule isn't resolving.
What's next
Make sure your packages are set up as rate cards (inventory type + bookable-online), your sites are set up for booking by type, and your rate plans are priced — the widget is only as good as the packages, inventory, and rates behind it.