Your booking page is the public web page (
your-centre.book.diveops.ai) where customers book a service themselves. You control whether it's live, what it shows, and whether customers pick a date from your availability.
Your page has its own branded web address using your centre's short handle, for example your-centre.book.diveops.ai. The older style link (book.diveops.ai/your-centre) still works too, so any codes or links you've already shared or printed keep working, but the branded address is the one shown in Settings and on your QR codes now. Use whichever Copy or Open button you see; both point to the same page.
Each service also has its own address under that, made from its name (for example your-centre.book.diveops.ai/open-water-diver). It opens your booking page on that service, and it is what a customer sees in the address bar while they look at it. Copy it from the Link column in the Dive Menu. See Building your Dive Menu.
When you'd use this
- Turning online booking on.
- Choosing which services show. (Limiting spaces per day is on the Availability page.)
The editor has three tabs: Booking page, Customer details and Payments. On a wide screen each tab lays its settings out in two columns; on a tablet or phone they stack, and the tabs scroll sideways.
Your booking page has a cart (on by default). Customers can put several products in one checkout: one confirmation email, one receipt and one new-booking alert for the whole order, with each product still its own booking on your side. Three ticks on each Dive Menu add-on shape that checkout: Required adds it to every booking's price, the accommodation tick asks each person who takes a bed for their own check-in date, and Customers must answer yes or no makes each person say Yes or No to it (for example equipment hire), so you know before the day who needs it. If you'd rather keep the one-product page, ask DiveOps to switch the cart off for your centre.
Your booking page shows your centre name and, if you've uploaded one, your logo at the top (the logo is the one from your centre profile. There's nothing to set here). The browser tab shows your website's favicon if you've added one in the website builder, otherwise your logo. When someone shares your booking link (on WhatsApp, for example), the preview shows your logo. What each customer is asked (the medical questionnaire and dive details) is controlled per service on the Dive Menu, not here: see Building your Dive Menu → Booking questions.
Booking page tab
- Go to Settings → Booking Page. The tab has three groups. On a wide screen they sit in two columns; on a phone they stack.
- Status
- Booking page on · when off, customers see "page not found".
- Auto-approve bookings · when on, website bookings are confirmed instantly and the customer is emailed their confirmation. Only dates your availability or fixed course and trip dates have checked are confirmed automatically; any other booking (for example a day the customer typed in for a product that doesn't use availability) arrives as Pending for you to approve, and the customer's page and email say so. Leave off to review every booking in the queue before it's confirmed, including card-paid bookings: the customer's payment is taken, the page and their email say "Payment received", the booking arrives as Pending with a Paid marker, and pressing Approve sends their confirmation. If you decline a paid booking, refund the customer from your own Stripe dashboard.
- Booking cutoff · see below.
- Share · copy or open your booking page link, copy the embed code for your own website (press Show code to see it), find your QR codes, and add your own domain.
- What customers see
- Welcome message · a short welcome shown at the top.
- Categories and services · see Ordering your categories and services below.
- Press Save changes.
Ordering your categories and services
This sets the order customers see on your booking page and website menu, and the order the bot and your staff's booking pickers use.
- Categories: drag a category by its handle, or use the up and down arrows. Press the eye to hide a category from your booking page; hidden ones are listed underneath with a Show button. Show every category in the recommended order puts them all back.
- Services inside a category: press a category to open it, then drag its services (or use the arrows). The category is marked Custom order. A new service you add to it goes to the bottom, so move it where you want it. Reset to recommended order goes back to the automatic order: featured services first, then cheapest first.
- Services that are switched off, or not shown on the booking page, are greyed out so you can still place them.
- Moving services needs permission to edit the Dive Menu.
QR codes for your booking and sign-up pages live on their own page: Settings → QR codes. From there you can download a PNG, print an A4 poster, or show them on your TV display boards.
Photos on your booking page
Each service shows its photo on the right of its row, above the price, the same main photo as on your website. There's nothing to switch on.
- Add or change a photo on the Dive Menu: open the service and use Photo. A course bundle with no main photo of its own uses a photo from one of its courses, just like your website.
- No photo: the row shows no picture at all, so a mix of rows with and without photos still looks tidy.
- If a photo can't load, a plain grey square shows in its place instead of a broken image.
Booking cutoff
Stop customers grabbing a last-minute spot when you need warning to prepare. Turn it on, then pick one of two ways it works. All times are in your local time, not the customer's.
1. On the Booking page tab, find Booking cutoff and turn it on.
2. Choose how it works:
- Hours before the trip · customers must book at least a set number of hours before a trip starts. Set the hours (for example 24). This counts back from each service's meeting time (set on the Dive Menu). Example: with 24 hours, a 9am trip must be booked by 9am the day before, a 7pm trip by 7pm the day before. A service with no meeting time set counts from midnight (slightly stricter). A product with departure times counts back from the time the customer picks: Products with departure times.
- Cutoff time the day before · one fixed daily deadline. Set a time (for example 18:00). Example: tomorrow's trips can be booked up until 6pm today. After 6pm, tomorrow closes and the next bookable day is the day after. In this mode, today is never bookable: everything is booked at least the day before.
3. Press Save.
Either way, trips inside the window are no longer offered: blocked days drop off the calendar, and a direct booking for a too-soon date is turned away with a message showing the earliest date the customer can book.
Leave it off to keep taking bookings right up to the trip.
The Stay page (rooms and dorm beds)
If you sell rooms in Settings → Bookable Rooms, your booking address also has a Stay page (/stay): guests choose dates, see the rooms and prices and book and pay with no dive in the booking. Link to it from your own website, or use the "Stay with us" section of the website builder. See Bookable accommodation.
Embedding on your own website
If you already have a website, you can show the booking form inside it instead of (or as well as) sharing the link.
- On the Booking page tab, find Embed on your website.
- Press Copy code.
- In your website builder, add an Embed or Custom HTML block where you want the form, and paste.
Works on Wix, Squarespace, WordPress, Shopify and most builders. The embed updates itself: you never need to re-copy it when you change services or prices. It only works once your booking page is enabled; before that it shows a "not found" page.
Using your own domain (optional)
Your booking page already has a branded address (your-centre.book.diveops.ai). If you'd prefer it on your own web address, for example book.yourcentre.com, you can connect one for free.
- On the Booking page tab, find Your own domain.
- Type the address you want (use a subdomain like
book.yourcentre.com, not your bareyourcentre.com, which usually already points at your main website). - Press Add domain. You'll see one DNS record to add.
- At whoever manages your domain's DNS (your domain provider), add that record. The card shows it as three labelled boxes. Copy each into the matching field on your provider's form:
- Type →
CNAME - Name (some providers call it Host) →
book, or whatever prefix you chose. A few providers want the fullbook.yourcentre.cominstead: use that if the short one is rejected. - Target (some call it Value or Points to) → the exact address shown on the card (press its Copy button. Don't type it by hand).
- 🔴 If your DNS is on Cloudflare, set the record to "DNS only" (grey cloud), not proxied (orange). A proxied record stops the secure certificate (the padlock) from being issued.
- Type →
- Come back and press Check status. DNS can take a few minutes; when it's ready the status shows Connected and your booking page is live on your own address.
Your existing addresses keep working: connecting your own domain doesn't replace them. Once it's connected, your booking link, embed code, QR codes, display boards and your DiveOps website's Book buttons all use your own address. If you ever want to disconnect, press Remove, then delete the CNAME record at your domain provider.
Using a DiveOps website on your own domain? It sets up book.yourdomain.com for you: see Use your own domain for your website.
Customers pick a date from your availability
On the Booking page tab, the switch Customers pick a date from my availability decides how customers choose a date:
- On · for the products you choose, customers pick a day from a calendar that shows the places left. Every other product keeps asking for a preferred date. The pill next to the switch shows how many products use it, and Set availability opens the Availability page.
- Off · customers type a preferred date and your team confirms it.
The switch saves straight away. With it on, Availability appears in the main menu under Operations (for anyone who can see bookings).
The Availability page
Which products customers book by date, and any limit shared across them, are set on the Availability page, behind Settings at the top right. The open days come from your opening hours in Settings → Centre info. The first time you turn date booking on, every product is set back to asking for a preferred date until you add it there. How to use it: Set the days customers can book.
When a day is full, customers can join a waiting list for it from the calendar. Your team sees the list on the Availability page and gets a bell when a place frees up; the bell opens that day on that product: The waiting list for full days. A day you've turned a product off for shows as closed, with no waiting list. On a product with departure times, customers pick a time after the day and join the waiting list for one time: Products with departure times.
Each product customers book by date has its own number a day, asked when you add it; set it, or choose Any number a day, in the Dive Menu under When it runs.
Payments tab
Choose how customers pay when they book, and connect your own Stripe and/or PayPal account so payments land directly in your account. You can offer either, both, or neither: if you turn both on, the customer picks how to pay. DiveOps never holds your money: the centre is always the merchant.
Only Managers and Owners can connect, refresh or disconnect a Stripe or PayPal account, so nobody else on the team can point your online payments at a different account.
Connect Stripe (cards)
- Go to Settings → Booking Page → Payments.
- Under Stripe account, press Connect with Stripe.
- Sign in to Stripe (or create an account) and authorise DiveOps. Takes about a minute.
- You're returned to the Payments tab. The card shows Connected with your account, country and whether card charges are enabled, and the Take payments through Stripe switch turns on automatically.
If Stripe still needs more details from you, the status shows Finishing setup or Action needed: press Finish setup in Stripe to open your Stripe dashboard and complete it. DiveOps re-checks Stripe each time you open the Payments tab, and you can press Refresh status next to the badge to re-check on the spot. To unlink, press Disconnect Stripe (reversible, you can reconnect any time).
Connect PayPal
- Under PayPal account, press Where do I find my Client ID and Secret? for a step-by-step guide if you need it.
- In your PayPal account (developer.paypal.com → Apps & Credentials), make sure the toggle is set to Live, then in REST API apps press Create App, set the Type to Merchant, and copy its Client ID and Secret.
- Paste them into Client ID and Secret and press Connect PayPal. Your secret is stored encrypted and never shown again. (You need a PayPal Business account: no company registration required to open one.)
- The card shows Connected and the Take payments through PayPal switch turns on automatically.
To unlink, press Disconnect PayPal (reversible). You only need a PayPal Business account: no company registration is required to open one.
Turn each method on or off
Each connected method has its own Take payments through Stripe / Take payments through PayPal switch: they're independent, so you can have one on, the other on, or both. When both are on you'll see a note confirming customers will choose how to pay on your booking page.
If you pick Full payment or Deposit (here or on a product) but none of your turned-on methods can take charges, bookings still come through without being charged until a method is ready. You're told three ways: the Payments tab warns you, your notification bell says "Online payment isn't working" (checked every night, and as soon as a customer books), and the customer sees "Online payment isn't available right now. Your centre will contact you to arrange payment" before they send the request, so nobody thinks they've paid. These bookings are never confirmed automatically, even with Auto-approve on.
Choose how bookings are paid
- Under How bookings are paid, pick one:
- Full payment · customers pay the full price online when they book.
- Deposit · customers pay a deposit online, or the full amount if they prefer; you collect any balance at the centre.
- Pay at the centre · no online charge; the page shows the price and customers pay on arrival.
- If you chose Deposit, set the Deposit amount as either a Fixed amount (in your centre currency) or a Percentage of the booking total (1 to 100). Deposit can't be saved without a type and an amount above 0, so a deposit booking always charges something.
- Press Save on the floating save bar. (The on/off switches above save instantly. Only the payment-mode and deposit settings use the save bar.)
This is your centre-wide default: it applies to every product unless a product overrides it. You can set a different rule on an individual product (full / deposit / pay-at-centre) in its Payment card on the Dive Menu, which wins over this setting for that product only.
What the customer sees when payment is on
With Full payment or Deposit chosen and at least one method turned on, a paying customer reviews their booking and presses Continue to payment. If you have both methods on, they first choose how to pay (card or PayPal), then complete that method on the next step; if only one is on, they go straight to it. On a Deposit booking the customer also chooses how much to pay now: just the deposit, or the full amount. Each option shows its exact total, including any booking fee. Payment goes to your own Stripe or PayPal account (you're the merchant). DiveOps never holds the money.
- The booking is held while they pay, so the seat can't be sold to someone else.
- The customer is only marked Confirmed (and emailed their confirmation) once the payment actually succeeds. If they abandon it, the hold is released automatically after 30 minutes.
- Full payment charges the whole price. Deposit charges the deposit, or the whole price if the customer chooses to pay in full; you collect any balance at the centre. The booking records what was actually paid, so a customer who pays in full has nothing left to pay.
- Pay at the centre never charges: the booking lands in your review queue as before.
- If PayPal or the card form doesn't load in the customer's browser (usually a content blocker or a strict privacy setting), they see a short message saying so and nothing has been charged. If you take both methods, one button switches them to the other; if you take only one, they're asked to open the page in a different browser or contact you.
Which payment methods customers see
Your customers see the payment methods you have switched on in your own Stripe account (Stripe → Settings → Payment methods). Turn one off there, for example Klarna, and it disappears from your booking page and payment links. DiveOps adds no list of its own. Stripe then shows each customer the methods that suit their country and currency.
Passing on the card fee (optional)
If you'd rather not absorb the percentage your payment provider charges you, you can pass it on to the customer. Set a Card fee (%) against Stripe in Settings → Integrations → Payments (or on the Payments tab here). Leave it blank and nothing is added: that's the default, and no centre is charged a fee unless you enter one.
When a fee is set:
- If you offer more than one way to pay, the choose how to pay screen prices each one, so a customer sees what card costs versus PayPal before picking, not after.
- Once they pick, they see it as its own line before entering their card: booking total, the fee with your percentage named ("Booking fee (3.5%)"), then the total to pay. Nothing is hidden.
- The exact amount is shown, including any decimals, so what's on screen is what leaves their card.
- They can still back out or switch payment method at that point, so nobody is committed to the fee before seeing it.
- The fee is not added to the booking's value. Your booking totals, what a customer still owes, and any staff commission or partner referral payout are all worked out on the booking price alone.
- In your books it appears as its own income line, separate from the dive revenue, with tax split out if your centre charges tax.
- Refunds return the fee too, in proportion: a full refund gives back the whole fee, a half refund gives back half. It always reverses the fee that was actually charged at the time, even if you've changed your percentage since.
- Each provider has its own percentage, so Stripe and PayPal can differ. Only card payments add the fee at the moment: a rate saved against PayPal has no effect yet, and its screen says so.
- The fee follows how the customer actually pays, not just which button they pressed. If your Stripe account also offers local methods (bank transfer, PromptPay and similar), a customer who picks one of those inside the payment form pays no card fee: the price updates the moment they switch, and switches back if they return to card. Card and card wallets (Apple Pay, Google Pay) keep the fee.
Passing card fees on to customers is banned in the UK and the EEA. It's your decision as the merchant and DiveOps doesn't police it, so check the rules where your centre operates before setting a percentage.
How each service behaves on the calendar
Each service in your Dive Menu chooses its behaviour under When it runs, "How do customers book this?":
- Pick a day, single day (length blank or 1) · customer picks one open day. Full and closed days can't be picked, and a Can't see the date you want? link lets them message you. See What your customers see.
- Pick a day, multi-day course (length 2+) · customer picks a start day; the seat is held across the whole span; only start days where every day has room are selectable.
- Ask for a date · customer gives a preferred start date and your team confirms. No capacity enforced.
- Pick a run, or an Organised Trip on its date · this doesn't use the day-by-day calendar at all. Each run (or the trip) has its own places, from the run's Places or the service's Max participants: customers see "X places left" and can't book once it's full, independent of your day-by-day spaces.
What the customer is asked for
You choose, on Settings → Booking Page → Customer details. The same choice applies to your booking page, your customer sign-up page (QR code) and the details link you send from a booking.
- Always asked: first name, last name, email, date of birth, phone and nationality.
- On unless you switch it off: passport number, emergency contact, and certification level. A diver who picks a certified level is then asked for their certifying agency and last dive date.
- Off unless you switch it on: certification number, number of logged dives, and a photo of their certification card. These only appear once a diver picks a certified level.
- Optional for the customer: the emergency contact's email and the "Any requests?" box. You can switch either off.
- Kit sizing (off unless you switch it on): wetsuit, BC and shoe size for every diver in the party, optional for them. Only for diving activities. Their sizes land in each diver's booking under Customer requests.
Every diver in the party gives their name, date of birth and nationality, plus passport and certification if you ask for them. Only the person booking gives phone, email and an emergency contact. The passport ⓘ explains to the customer that it's for confirming their dive insurance.
Details arrive on the customer's profile automatically, so a party of four books once and you get four profiles with passports already on file. If a diver has booked with you before, their saved details are kept: a new booking only fills in blanks, it never overwrites what you already hold.
Your own team is not affected: adding a customer or taking a booking from the dashboard leaves passport optional, so reception can still take a booking when someone hasn't got their passport to hand.
Tips
- Use enquiry-only for long, negotiated programmes (instructor development, divemaster).
- Capacity is re-checked at the moment of booking, so the last seat can't be sold twice.
- Your team can still book a full day from Add Booking, after a Book anyway? question. See When a day is full.