Skip to content
Help centre

Managing customers

Last updated 2026-10-07

The Customers area holds a profile for every diver and enquiry: contact details, dive profile and certification, medical status, booking history and purchase history.

When you'd use this

  • Looking someone up before they arrive.
  • Adding a new contact.
  • Checking what someone has bought or booked.

Finding customers

  1. Open Customers from the sidebar.
  2. The page has three tabs at the top:
    • Customers · anyone who has signed up through your registration link (Registered) or made a booking (including an online booking still waiting for your approval, or one already dived). These are your warm leads and paying customers.
    • Contacts · people who reached out (usually on WhatsApp) but have never registered or booked. They're kept here, out of the way, so the Customers list stays clean. Anyone who registers or books moves across automatically.
    • Duplicate review · finds and merges the same person entered twice (see below). The number beside it is how many possible duplicate groups were found.
  3. On the Customers tab, filter pills let you narrow the list: All, Registered (signed up through your registration link but not yet booked), Booked (booked, including bookings waiting for approval, but not yet dived), Dived (has been out with you), Inactive (a past customer who has lapsed), and Not fully paid (still owes money, on a booking, their shop tab or a room stay). The amount beside a name is everything they owe, the same figure as on their profile, and it includes bookings they booked for other people even if they aren't diving. If the list can't load who owes, it says so with Try again rather than showing nobody.
  4. Columns include Name, Phone, Country, Status, Certification, Source, Last Contact and a profile-completeness bar. You can also filter by certification (including No certification), search by name/email/phone, or show Archived.
  5. Search looks at the tab you're on. If nobody matches there but someone matches on the other tab, the empty list says so, for example Show 1 match in Contacts: press it to jump there.

A customer's profile

The sections down the left jump to each part of the page:

  • Overview: the four things the desk needs first: Balance, Medical, Certification and Certification verified (who checked the card and when). Balance is everything they owe: bookings, their shop tab and any room stay they're the guest on, for example Owes ฿24,690, with the split underneath (Bookings ฿24,000 · Shop tab ฿690). The same figure shows beside their name at the top and in the panel on the right, and a red dot marks Money while they owe anything.
  • Money: the Take payment and Statement buttons, then their booking history, their room stays (only if they have one), a Payments card, their Rentals, Servicing and Invoices (each only if they have any), their shop tab and their shop purchase history.
    • Payments lists every payment outside the shop, newest first: bookings they lead, room stays, rental hire and deposits, and collected servicing. Each has its Receipt (and Tax invoice once your centre is VAT-registered) and Email to customer; refunds are listed too. It shows the latest 50; the Statement has everything.
    • Each shop sale and each shop tab payment has its Receipt in its own card. See receipts and tax invoices.
    • The Statement lists booking, room stay, rental, servicing and shop payments, each named for what it was. A line booked as part of a website order names the order beside it, for example Open Water Diver · Order DD-1234. Open it to print, or press Email to customer to send it as a PDF (the dates you picked are kept).
  • Certifications, Dive activity (every dive recorded from a published trip sheet), Medical, Notes, Details and Profile completeness.

To start a new booking for them, use New booking at the top of the page: the customer is filled in for you.

In the booking history, Take payment shows on each booking they still owe on, on each room stay they owe on, and on their Shop tab card. They all open the same payment window as the Take payment button at the top of Money, with just that booking (or the tab) ticked. A booking in someone else's group shows Paid by the lead instead: the person who booked the group pays for it, from their own profile.

Taking payment for everything they owe

When a customer owes money on a booking and has things on their shop tab, you can take it all in one go from their profile.

  1. Open the customer and go to Money. When they owe anything, a Take payment button shows the total, for example Take payment · 73,00 €.
  2. Press it. The window lists every unpaid booking they're the lead booker on, their shop tab and any room stay they owe on, all ticked. If your centre takes cards online, it opens on Send pay by link; tap Paid now for money taken at the desk.
  3. Untick anything they're not paying for today. Each ticked line has an amount box that starts at the full amount: type less to take a deposit or part payment (you'll see what it leaves to pay). The total updates.
  4. Pick how they paid (your own payment methods are listed) and check the date. For cash, type what they hand over in Received to see the change to give.
  5. Press Take. Each item is recorded as its own payment, exactly as if you'd taken it on the booking or the tab, so receipts, invoices, reports and your accounts all see it the usual way.

Good to know:

  • Card fee: if the card method you pick has a card fee, it's added to bookings and room stays. A shop tab never carries a card fee. The window shows the fee and the total the customer pays before you press Take.
  • Part payments: you can take less than a booking or the tab owes, never more. Whatever is left stays owed. This works for Send pay by link too: type less in the amount box and the link asks for just that (the customer sees it as a part payment).
  • Percentages: the % switch beside "What are they paying for?" lets you type a percentage instead, for example 30 for a 30% deposit. The window shows the money it comes to and what it leaves to pay. Switch back to your currency to see the figures.
  • Bookings for a group are paid by the person who booked (the lead). If this customer is a member of someone else's group, that booking is paid from the lead's profile.
  • If something changed while the window was open (someone added to the tab, or the booking price changed), nothing is taken and you're asked to close and reopen, so you always take exactly the amount on screen.
  • If only part goes through (rare, usually a connection problem), the window lists what was recorded and what wasn't. Press Retry the rest: it finishes the rest and never records anything twice.

Sending one pay by link for everything

If your centre takes card payments online, the Take payment window asks How are they paying?

  • Paid now: they're paying you at the desk, as above. Every payment method you've set up is listed, except Stripe: to take a card payment through Stripe, send a link instead.
  • Send pay by link (Stripe): tick what the link covers and press Create link. You get a QR code to show, a link to copy, and an Email button (their email is filled in). They pay on their own phone, and each booking and the shop tab are recorded automatically when they do. They get one receipt listing everything. Room stays aren't included in a link: take those at the desk.

Good to know:

  • While the link is open, the customer's profile shows Pay by link · amount · expires with Copy, QR and Cancel. Links last 7 days.
  • A booking or tab can only be on one open link at a time. If one is already open (its own link, or an earlier "everything" link), the window says so and offers Replace with one new link: the old link stops working.
  • If you take a payment at the desk while a link is open, the link can no longer be paid; the customer is asked to contact you. Cancel it and send a new one if they still need it.
  • Card fee: if your centre charges a card fee on online payments, it's added to the bookings part when they pay by card. The shop tab never carries one.
  • Refunds: refund one booking with Refund online on that booking's payment as usual. If a refund is made directly in Stripe, DiveOps doesn't change the bookings or the tab by itself: you'll see an alert, and you record it.

Reviewing and merging duplicates

Sometimes the same person ends up in your list twice: for example they message on WhatsApp and later book online without their phone number matching. The Duplicate review tab helps you tidy these up safely.

You'll only see this tab if your role can edit customers (the same permission needed to add or archive a customer, usually owner, manager, reception). Staff who can only view customers won't see it.

  1. Open the Duplicate review tab. It automatically looks for the same person entered more than once (same name + birthday, or the same email + birthday). People in the same family sharing one email, and a parent and child with the same name but different birthdays, are not flagged.
  2. Each group shows the records side by side with their email, phone, number of bookings and payments, so you can see which is which.
  3. Pick which record to keep (it defaults to the one with the most bookings), then press Merge into kept. All the other record's bookings, payments, medical forms and details move onto the one you kept, and blank fields are filled in from the other. Nothing is ever lost: a certification, a medical form, a dive count or notes on either record are always carried over, and the duplicate is archived, never deleted. Payment links move across too. If both records have a payment link open, the duplicate's link is cancelled so the customer only ever has one to pay (send a fresh one if you need to).
  4. You have 10 seconds to Undo if you merged the wrong ones: that brings the other record straight back exactly as it was.

If the two records are both on the same trip sheet (the same boat on the same day), the merge will stop and ask you to remove one of them from that trip first, otherwise the same person would be on the boat twice. Remove one placement, then merge.

If you come back to undo a merge much later and the kept record has been edited since, it will tell you it can't be cleanly undone and change nothing (so your later edits are never wiped). The same happens if a payment link moved by the merge has been paid or cancelled since. Sort it out by hand instead.

New bookings and registrations now also try to reuse an existing person automatically, so fewer duplicates are created in the first place.

Finding customers who already have an SSI record

If your centre is connected to SSI, the Agency sync tab shows the customers most likely to already have an SSI membership you haven't linked yet, so you don't have to guess who to look up.

You'll only see this tab if your centre is connected to SSI and your role can edit customers.

You can also check a single customer from the SSI panel under their contact card (on their profile and on any booking they're part of). It shows Check SSI and, where relevant, Create SSI Profile. Everyone who can open a customer sees these, but only staff who can edit customers can press them: view-only staff see them greyed out.

Once a customer is linked to SSI, that panel instead shows their SSI membership number with a View SSI profile button that opens their certifications, so you can see a diver's qualifications while looking at a booking. If you linked the wrong person, staff who can edit customers can press Unlink profile to remove the link and the SSI-synced certificate cards from DiveOps. This only affects DiveOps, the diver's SSI account itself is untouched (SSI has no delete), and you can re-link any time with Check SSI.

  1. Open the Agency sync tab. The list is built from your own records, best first: nothing is sent to SSI just by opening it. Anyone you certified yourselves comes top: they almost certainly have an SSI record, because you issued it.
  2. Each person shows why they're on the list, for example Recorded as SSI certified or Certified, no certificate number on file, along with their birthday and how many times they've booked.
  3. Press Check SSI on someone. This is the only point anything is sent to SSI.
  4. If a match comes back you'll see their certification card, membership number and course history. Press Yes · link this profile to save their membership and certificates onto their profile, or No · not this person if it's someone else.

Checking a group in one go

If you have customers you certified yourselves, a button at the top offers to check them all: for example Check 40. It works through them one at a time, shows progress as it goes, and you can press Stop at any point. Any matches it finds are flagged SSI match found · confirm it for you to approve; it never links anyone on its own. If it reaches the daily limit it stops cleanly and tells you, and you can carry on the next day.

If nobody is found

SSI can only find a diver from an exact first name, last name, date of birth and email address. A different spelling, a shortened first name or a maiden name won't be found.

If the screen says SSI didn't give an answer, that is not the same as "no record": it usually means the customer has no email address on file. Add one and check again. Anyone checked without a match moves to Checked, no match at the bottom of the tab: correct their details on their profile and press Check again to put them back on the list.

Why some customers don't appear

A customer can only be checked if you hold all four of first name, last name, date of birth and email address. In practice this means a good part of your list, especially people who only ever messaged you, can't be checked until someone adds the missing detail. The tab tells you how many that is, and which detail is missing for most of them.

The daily limit

There's a limit on how many SSI checks a centre can run per day, shown in the top right of the tab. It's set high enough that normal use won't reach it; it exists so a long session of checking can't overload SSI. If you do reach it, the allowance resets the next day.

Creating an SSI profile for a customer

If your centre is connected to SSI and a customer has no SSI membership linked yet, a Create SSI Profile button appears next to Check SSI in the SSI panel under their contact card. SSI needs a first name, last name, date of birth and email address to create an account: if any of those are blank the button is greyed out and tells you which one to add (for example "Add an email address to create an SSI profile"). Use it for a customer who needs an SSI account: for example someone you're about to certify who has never dived with SSI before.

When you press it, DiveOps checks SSI first, then does the safe thing automatically:

  • if they already have an SSI account, it links it to your centre;
  • if they're an SSI member but not registered with your centre, it registers them;
  • if they're new to SSI, it creates an account for them.

SSI accounts can't be deleted or undone, so a confirmation step explains what will happen before anything is created. Only create a profile for a real customer who needs one. Like Check SSI, everyone can see the button but only staff who can edit customers can press it.

If the button says creating profiles isn't switched on for your centre yet, that's expected: this is being rolled out gradually and will be enabled for your centre in due course. If SSI says the email address is already used by someone else, check the address is right, or use Check SSI to find the existing person instead.

Enrolling a course booking in SSI

When a customer books a course, you can enrol them in the matching SSI course from either the booking page or the customer's profile: look for the Course enrolment panel under the contact card. On a booking it shows that booking's course. On a customer's profile it lists every course they hold, one row each, with the course date beside the name, so you can enrol a student without hunting for the right booking first.

If it's the first time you've enrolled anyone in that course, you pick the matching SSI course once (from a search box) and it's remembered after. The diver must be linked to SSI first (do that from the SSI panel above it). Before you enrol, if you picked the wrong course you can press Undo mapping (the back arrow) or Change course to fix it.

If the same customer books the same course twice, it still shows as one row: SSI enrols a diver on a course once, not once per booking. Cancelled and no-show bookings don't appear.

Because SSI enrolments can't be undone, it's worth checking what the diver is already doing at SSI first. Press Check SSI courses to see their current SSI courses (each shown as In progress or Certified). If they're already enrolled in, or already certified for, this course, DiveOps tells you and switches off the Enrol button, so you can't create a duplicate. Once a diver is actually enrolled, changing or cancelling that enrolment isn't available in DiveOps yet: for now, use your SSI dashboard for that.

Adding a customer

  1. Press + Add Contact.
  2. Fill in the Identity, Dive Profile, Medical, Emergency Contact and Status & Tracking cards.
  3. Press Create Contact.

Four details are required on every new customer: First name, Last name, Email and Date of birth. They're marked with a red asterisk (*). If any are missing, Create Contact won't go through and a line at the bottom of the screen tells you which ones still need filling in.

The same four are required wherever a new customer is created by hand: the Add Contact screen, a walk-in at the till, an equipment servicing check-in, your public booking page and the self sign-up page.

Two things are deliberately not covered by this rule. Customers created automatically, someone messaging your WhatsApp bot for the first time, for instance, arrive with only a phone number, and you complete their details later. And customers already on your system from before this rule can still be edited and saved as normal, even if some of the four are blank, so you're never locked out of your own records.

Passport number sits in the Identity card, next to Nationality. It is optional when you or your team fill in a profile by hand: add it if you need it for liveaboard manifests, immigration paperwork, visa runs or insurance, and leave it blank if you don't. It is never shown to your WhatsApp bot, and it doesn't count towards the profile-completeness score, so leaving it empty won't mark a customer as incomplete.

Anyone booking through your public booking page, or signing themselves up through your customer sign-up page (the QR code), enters a passport number unless you've switched passport off in Settings → Booking Page → Customer details. A short line next to the field explains to the customer that it's for confirming their dive insurance covers them. If a customer signs up again later, their saved passport is kept: a repeat sign-up only fills in blanks, it never overwrites what you already hold.

Adding a business (another dive centre, a hotel, a shop)

Some customers aren't divers: another dive centre buying nitrox fills from you, say. Add them as a business so you can invoice them.

  1. Press + Add Contact and set Customer type to Business.
  2. Fill in the Business name and Email (both required). Phone, Contact person, VAT / tax number and Billing address are optional, but the address and VAT number are what a business usually needs on its invoice.
  3. Press Create Contact. A business starts as Active.

A business has no date of birth, dive profile, medical or emergency contact, so those are hidden. On its page, New invoice opens an invoice already addressed to it; the invoice and its Statement print the business name, "Attn:" contact person, billing address and VAT number. In the Customers list it carries a small Business tag.

Already added a business as a person? Open their Details, switch Customer type to Business and save: their full name becomes the business name. You can switch back the same way.

Source (how the customer found you) offers the built-ins: WhatsApp, Email, Walk-in, Website, Self sign-up, or pick Other (type your own)… to add your own, e.g. Referral, Instagram or a hotel name.

On a customer's profile

  • Booking History · their bookings, with a + New booking shortcut.
  • Shop Purchase History · counter sales. Refunds show a red "REFUND" badge with a negative total; discounts show a "Discount: −{amount}" line; tax-inclusive totals are marked "(incl. VAT)".
  • Dive activity · a dated log of every dive they've actually done (boat or pool, dive sites, number of dives), pulled from your published trip sheets. Each line links to the booking it was part of. It fills in as you publish the trip sheets for the days they dived.
  • Age · their age today, from the date of birth on their record. If they're under 18 it shows as a violet U18 · 15 badge instead of plain text, and that badge then follows them onto every booking, the Dive Groups board and the trip sheet.
  • Certifications · their card photo and agency records. If the diver sends you a photo of their card by WhatsApp or email, save it and press Add photo (or Replace photo to swap one already there); you need permission to edit customers. Under the photo, Verification shows whether someone at your centre has checked the card. Look at the card (or the agency record), then press Mark as verified: it records who did it and when, for example Verified 6 Oct 2026 by June. Undo takes it off again. The Certification and Certification verified tiles at the top of the Overview jump here. (The Details section only shows whether it is verified; it can't change it.)
  • Medical · their medical forms, one per booking, each with its status, View form and a link to its booking. Medicals belong to the booking, so uploading a paper form or recording a doctor's decision happens on the booking (see booking-medical.md).
  • Notes · a running activity log. Type in the box and press Add note; each note is stamped with who added it and when, newest first. Use the trash icon to delete a note (you'll be asked to confirm).

The card beside these sections, photo, contact buttons, certification, medical, balance, the Profile complete bar and the SSI panels, is the same card you see on a booking, showing the same facts either way. On a booking, clicking the Profile complete bar jumps you to this profile's completeness list so you can fill in what's missing while the diver is still at the desk.

Archiving vs deleting

  • Use Archive customer to hide a contact without losing history. Delete is blocked for anyone with bookings: the page says "Cannot delete: this customer has booking records. Archive instead." It is also blocked for anyone who has been sent a payment link, because the payment record must keep its customer. Archive them instead.
  • An archived record shows an "Archived" status pill (on the Archived list and its profile) so it can't be mistaken for a live enquiry. Its original status (enquiry, registered, booked or active) is remembered underneath and comes straight back if you un-archive it.
  • A record that was tidied away by a merge is archived automatically and carries a "Merged into [name]" label, on the Archived list and at the top of its profile, so you can tell at a glance it isn't a live enquiry. Click the label to jump to the customer it was merged into.

Related

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