Easy Appointment Booking tracks slot capacity in real time — when a timeslot fills up, it disappears from the calendar so no one else can book it. Despite that, double bookings can still occur in a handful of situations. This article explains how the protection works, what can go wrong, and how to fix it.
How the app prevents double bookings
Every timeslot has a capacity (the maximum number of attendees you allow per slot). The app counts confirmed bookings against that number. Once the count reaches the limit, the slot is hidden for all future visitors.
When a customer is going through checkout, the slot is held temporarily so that a second customer arriving at the same moment gets an accurate count. The hold is released if the first customer abandons checkout.
Common reasons double bookings happen
1. Two services share an availability and capacity isn't set to 1
If two different services point to the same availability schedule, they each consume slots from that same pool. If each service has a capacity of 5, you could end up with 10 bookings for a resource that can only handle 1 at a time.
Fix: For any resource that can only serve one booking at a time (a single staff member, one treatment room), set Max attendees per timeslot to 1 on every service that uses that availability.
- Go to Dashboard > Show all events and click Edit on the service.
- Under the Settings tab, find Max attendees per timeslot.
- Set it to
1and click Save.
2. An admin booking was created without checking the calendar
When you or a staff member manually adds a booking from the dashboard, the app does not enforce capacity the same way the storefront does — it trusts that you know what you're doing. If the slot was already at capacity, a manual booking creates an overbook.
Fix: Before adding a manual booking, check Dashboard > Bookings and filter by the date and time you're considering. Confirm the slot still has room before saving.
You can also use View in Store on the event (with ?debug=true appended to the URL) to check real-time availability before adding a manual booking.
3. Google Calendar sync isn't enabled
If you or your staff block personal time in Google Calendar but haven't connected it to your availability, those personal events won't prevent bookings from being made during that time.
Fix: Connect Google Calendar to the relevant availability schedule.
- Go to Availability in the main navigation and click Edit on the schedule.
- Under Set Schedule, find the Google Calendar dropdown.
- Select the calendar that contains your personal or staff appointments.
- Click Save.
From this point on, any event on that Google Calendar will block the corresponding slot.
Only events with explicit start and end times block availability. Full-day Google Calendar events are not supported and will not block slots.
4. Slot capacity is set too high
If capacity is set to a number larger than what you can actually accommodate — for example, 10 when you only have 2 seats — bookings will keep coming in until the inflated number is hit.
Fix: Audit each service's Max attendees per timeslot and align it with your real-world capacity.
- Go to Dashboard > Show all events.
- Click Edit on each service and check Settings > Max attendees per timeslot.
- Lower the number to match what you can deliver and click Save.
How to audit for existing double bookings
If you suspect double bookings have already occurred:
- Go to Dashboard > Bookings.
- Use the date and time filters to look for multiple confirmed bookings on the same slot.
- Compare the total booking count for a slot against your Max attendees per timeslot setting.
If you find bookings that exceed capacity, they will be flagged automatically in the app with a conflict indicator.
What to do when a double booking has already happened
- Decide which booking to honor. As a general rule, honor the booking that was confirmed first (the one with the lower booking ID or earlier timestamp in the dashboard).
- Contact the other customer promptly. Apologize, explain that a scheduling error occurred, and offer to reschedule to the next available time or issue a refund.
- Cancel the conflicting booking. In the app, open the booking and click Cancel. If it was a paid booking, process the refund from your Shopify Orders page.
- Fix the root cause using the steps above so it doesn't happen again.
Race conditions at checkout are extremely rare but possible. The app uses database-level locking to prevent two customers from claiming the last spot simultaneously, but in exceptional circumstances (such as a network interruption during checkout) a conflict could occur. If this happens, contact us via the in-app chat and include both booking IDs — we'll investigate and help you resolve it.