Help centre

Setting up your public booking page

Last updated Wed Jul 29 2026 00:00:00 GMT+0000 (Coordinated Universal Time)

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 the availability calendar behind it.

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.

When you'd use this

  • Turning online booking on.
  • Choosing which services show, and limiting spaces per day.

The editor has three tabs: Booking page, Booking calendar, and Payments.

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). 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

  1. Go to Settings → Booking Page.
  2. Booking page enabled — when off, the page returns a 404.
  3. Your booking page URL — copy or open your live link.
  4. Embed on your website — copy the snippet to drop the booking form straight into your own site (see below).
  5. Intro text — a short welcome shown at the top.
  6. Categories on your booking page — reorder, Hide/Show categories, or Reset to default.
  7. Auto-approve bookings — when on, website bookings are confirmed instantly and the customer is emailed their confirmation. Leave off to review every booking in the queue before it's confirmed — including card-paid bookings: the customer's payment is taken and they get a "Payment received" email, 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.
  8. Press Save.

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.

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).
  • 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.

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.

  1. On the Booking page tab, find Embed on your website.
  2. Press Copy code.
  3. 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.

  1. On the Booking page tab, find Your own domain.
  2. Type the address you want (use a subdomain like book.yourcentre.com, not your bare yourcentre.com, which usually already points at your main website).
  3. Press Add domain. You'll see one DNS record to add.
  4. 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:
    • TypeCNAME
    • Name (some providers call it Host) → book, or whatever prefix you chose. A few providers want the full book.yourcentre.com instead — 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.
  5. 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. If you ever want to disconnect, press Remove, then delete the CNAME record at your domain provider.

Booking calendar tab (availability + capacity)

  1. Turn on Booking calendar. When on, customers pick a specific day showing spaces left; when off, they enter a date as free text and you confirm manually.
    • If the calendar is on but you haven't set any open days yet, the editor shows a reminder ("No open days set yet, so customers cannot book") with a Set opening pattern shortcut — because with no open days, customers can't book anything.
  2. Set your spaces one of three ways:
    • Opening pattern (fastest) — set your normal weekly spaces once (e.g. Mon–Sat open at 8, Sunday closed), then press Apply to fill months forward in one go. A daily automatic top-up keeps the same rolling window filled, so you only set the pattern once. A day toggled open needs at least 1 space — the pattern won't save or apply until every open day has a number.
    • Select a range — for a stretch of days that differs from your usual pattern (a holiday closure, a busy season), select a start and end day and set them together.
    • Tap a single day — for a one-off exception.
  3. Any day you set by hand (single day or a range) is remembered as your choice and is never changed by the pattern later — the pattern only fills in days you haven't touched.
  4. Spaces count every booking that day — web, WhatsApp and walk-in.
  5. Limit a specific service (optional) — inside a single day's editor, use Limit a specific service to cap one product's spaces for that day on top of the whole-day total (e.g. the boat holds 8 total, but only 2 of those can be on the Tech course). A booking for that service must fit both numbers; every other service still draws from the whole-day total as normal. Remove a limit any time with its × button.

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.

Connect Stripe (cards)

  1. Go to Settings → Booking Page → Payments.
  2. Under Stripe account, press Connect with Stripe.
  3. Sign in to Stripe (or create an account) and authorise DiveOps. Takes about a minute.
  4. 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

  1. Under PayPal account, press Where do I find my Client ID and Secret? for a step-by-step guide if you need it.
  2. 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.
  3. 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.)
  4. 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 but none of your turned-on methods can take charges yet, the Payments tab warns you, and bookings still come through without being charged until a method is ready — so you never think you're charging when you aren't.

Choose how bookings are paid

  1. Under How bookings are paid, pick one:
    • Full payment — customers pay the full price online when they book.
    • Deposit — customers pay a deposit online; you collect the balance at the centre.
    • Pay at the centre — no online charge; the page shows the price and customers pay on arrival.
  2. 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–100).
  3. 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. 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 just the deposit and you collect the balance at the centre.
  • Pay at the centre never charges — the booking lands in your review queue as before.

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 ("Card payment 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 with the Calendar booking toggle and Course length (days) field:

  • Single-day (calendar on, length blank/1) — customer picks one open day.
  • Multi-day course (calendar on, 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.
  • Enquiry-only (calendar booking off on that service) — customer gives a preferred start date as free text and your team confirms. No capacity enforced.
  • A fixed intake (an Organised Trip, or any course with Course dates set) — this doesn't use the day-by-day calendar at all. Set Max Participants under Details and it becomes a hard cap on that one intake: 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

Every diver in the party gives their name, date of birth, nationality and passport number. The passport number is required — the booking can't be submitted without one for each person — because it's what lets you confirm dive insurance covers every named diver. An ⓘ beside the field explains this to the customer, so you don't get asked why.

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.

Related

Can't find what you need? Get in touch.