Fedev

Guide

How to prevent double bookings on Shopify

You prevent double bookings on Shopify by keeping one calendar per person, not per product, and by letting the booking app, not the checkout, decide whether a time is free. A double booking happens when two bookings for the same person overlap: two services sold as separate products, two customers paying at the same moment, or a phone booking the online calendar never saw. Test your setup by booking the same person and time from two browsers at once.

Why double bookings happen on a Shopify store

Shopify sells products. A booking app adds the calendar on top, and most double bookings come from a gap between the two.

  • Services counted as stock. If each service is a product with a quantity per time slot, a haircut and a colour done by the same stylist are two separate counts. Both can sell the 10:00 slot, and the stylist is booked twice.
  • Two customers paying at once. Two people open the same free time, both go to checkout, both pay. Unless the app checks again at the moment it saves the booking, both bookings are kept.
  • More than one calendar. Online bookings in one place, phone bookings in a paper diary, a few more from social media messages. The online calendar keeps offering time that is already taken.
  • Bookings added by hand. Staff add a booking or move one in the admin, and the app checks free time only for online customers, not for staff.

Four ways to stop it

Book people, not products

Every booking should take time from a person’s calendar, whichever service it is for. When a stylist is booked for a colour at 10:00, the 10:00 slot is gone for every service they do. If you sell services as products, check that your app links them to the same person.

Check again when the booking is saved

Showing free times isn’t enough: the time can be taken between the moment it was shown and the moment the customer pays. The app has to check once more when it saves the booking and refuse the second one.

Hold the time while the customer pays

A customer in checkout should have their time held for a short while, so nobody else takes it mid-payment. If they don’t pay, the hold ends and the time is free again. Too long a hold locks out other customers; a few minutes to an hour is enough for most shops.

Keep one calendar

Choose one calendar as the only one that counts. Put phone, walk-in and message bookings into it as soon as you agree them, or block that time, so the calendar online never offers it to someone else.

A five-minute test for your booking app

Do this on your own store before you rely on any booking app:

  1. Open your booking page in two browsers, or a normal and a private window.
  2. In both, pick the same staff member and the same time, for two different services.
  3. Go to checkout in both and complete the first booking, then the second.
  4. The second should be refused with a message to pick another time. If both go through, the app doesn’t protect you.
  5. Now add a booking by hand in the admin at that same time. The app should refuse that too.

Also leave one checkout unpaid and check that the time comes back after the hold ends.

How Rezervito prevents double bookings

In Rezervito, our booking app for Shopify (launching November 2026), each staff member has one calendar across all your services. Before a booking is saved, the time is checked against working hours, days off, existing bookings and buffer times. When the booking is written, the database itself refuses a second booking that overlaps the same staff member’s time, even when two customers pay in the same second; the second customer is asked to pick another time. The same check covers bookings you add by hand and bookings you drag to a new time in the calendar.

A customer can’t hold two overlapping bookings either, with any staff member or service. While a customer pays a deposit in Shopify’s checkout, their time is held for 10, 15, 30 or 60 minutes, as you choose; if they don’t pay, the time becomes free again.

Rezervito doesn’t sync with Google Calendar or other booking platforms. If you also take bookings elsewhere, add them in Rezervito as manual bookings or block the time, so its calendar stays the one that counts.

Questions

Does Shopify prevent double bookings on its own?

Shopify has no appointment calendar of its own, so it can't. A booking app decides which times are free; Shopify's checkout only takes the payment.

Can I prevent double bookings with product inventory?

Only for one service with one person. Inventory is counted per product or variant, so two different services done by the same person don't know about each other and can both be sold for the same time.

What should happen if two customers try to book the same time at once?

One booking goes through and the other customer is told the time is no longer available and asked to pick another. Check this in your app with the two-browser test in this guide.

I also take bookings by phone. How do I keep them from clashing?

Keep one calendar as the only source of truth. Put phone and walk-in bookings into the same booking app straight away, or block that time, so the online calendar never offers it.

Rezervito: Booking & Deposits

Booking for salons, clinics and service businesses — with no-show tracking, customer blocking, debt recording and deposits.

Tell me when it launches Launching November 2026 on the Shopify App Store How Rezervito works