WooCommerce Bookings Hosting

WooCommerce Bookings hosting that never sells the same slot twice.

Availability is recalculated on every calendar view, and two people can reach for the last slot in the same second. Both of those are infrastructure problems before they are plugin problems.

Availability endpoint uncachedRow-level lockingFree migration
Bookings-tunedRedis object cacheTuned MySQLDaily backupsFree SSL24/7 support
Built for scheduling

Everything a booking calendar asks of a host.

The calendar is the most expensive thing on the site and the least cacheable. The stack is configured around that rather than despite it.

Calendars that load while people are choosing

The availability request is an AJAX call that runs a real query across every existing booking in the range. It is excluded from the page cache and given PHP headroom so the calendar fills in immediately.

Never cachedDedicated headroom

Two customers, one slot, one winner

Checkout writes are wrapped so the availability check and the booking insert happen as a single locked operation. The second customer is told the slot has gone rather than being sold it as well.

Row-level lockingNo double bookings

Availability lookups held in memory

Bookings caches its availability calculations. Kept in Redis rather than in the options table, those lookups stop competing with the writes that are creating new bookings at the same time.

Pending bookings that actually expire

Unpaid holds are released by a scheduled job. Driven by system cron it runs on time, so slots do not stay blocked by abandoned checkouts until the next visitor happens to arrive.

Nightly backups of the calendar

Bookings, customers and orders in one snapshot, replicated off the origin, restorable from the dashboard without asking anyone to rebook.

Operations

Watch the calendar, not the server.

Booking sites fail in ways that look like nothing at all: a hold that never released, a cron that stopped, a calendar that got slower as the season filled up.

  • One-click admin login, no shared passwords
  • Availability endpoint response time tracked
  • Plugin and core updates with per-item status
  • Restore any daily backup from the dashboard
WordPress core
Up to date
6.7
WooCommerce + Bookings
All current
7/7
Nightly backup
Replicated offsite
02:14
Pending-booking release
Platform-driven
running
Performance

A full calendar loads like an empty one.

Availability cost grows with the number of bookings already taken, which means the busiest month of the year is also the slowest — unless the lookups are in memory.

Redis
for availability transients
NVMe
storage on every plan
System
cron, not wp-cron
MagicWP260 ms
Transients in the options table1900 ms
Availability behind a full page cache1100 ms

Illustrative comparison of a month-view availability request on a well-booked product. Your numbers depend on booking density and date range.

Configuration

What we change for WooCommerce Bookings

These differ from a standard WooCommerce site on the same plan, because a booking store sells a finite thing that two people can try to buy simultaneously.

SettingWhat we doWhy
Availability AJAX endpointExcluded from page cache and given reserved PHP worker headroomEvery calendar view triggers a live query across existing bookings in the range, so it cannot be served from a cache and it cannot be allowed to queue behind ordinary page requests while a customer waits for dates to appear.
Availability transientsStored in Redis rather than the options tableBookings writes its cached availability constantly, and keeping that churn in the options table puts it in direct contention with the very inserts that are creating new bookings.
Checkout transactionsAvailability check and booking insert wrapped in a single locked transactionWithout a lock held across both steps, two simultaneous checkouts can each read the same slot as free before either writes, and the store confirms an appointment it cannot honour.
max_execution_timeRaised for the endpoints that evaluate wide date rangesA customer opening a twelve-month view asks for a calculation across every resource and every existing booking in that window, which is an order of magnitude more work than any other request the site serves.
Pending-booking cleanupReleased by system cron on a fixed scheduleUnpaid holds block real inventory, and under wp-cron they are only released when a visitor arrives — so the quietest hours are exactly when abandoned checkouts keep slots off sale the longest.
Plans

Simple, transparent pricing.

Every plan includes free migration, daily backups, SSL and 24/7 support.

MonthlyYearly
Starter
For personal sites, blogs, and portfolios.
$20/mo
Billed $240 yearly · save $60
  • 1 WordPress site
  • 10 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Support tickets
Start free trial
Pro★ Most popular
For growing businesses and busy stores.
$80/mo
Billed $960 yearly · save $240
  • 5 WordPress sites
  • 50 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Priority support tickets
Start free trial
Enterprise
For agencies and high-traffic platforms.
$250/mo
Billed $3000 yearly · save $600
  • 20 WordPress sites
  • 200 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Dedicated support
Start free trial
FAQ

Questions, answered.

Can two customers book the same slot at once?
Not here. The availability check and the booking insert run inside one locked transaction, so the second checkout sees the slot as taken rather than both reading it as free and both succeeding.
Why does my booking calendar take so long to load?
Availability is recalculated live against every existing booking in the range, so the cost rises as the calendar fills. Keeping those lookups in Redis rather than the options table is most of the fix.
Can I put the calendar behind a page cache?
No — a cached calendar shows availability that was true when it was stored, which is how a slot that sold an hour ago is still offered. We leave the endpoint dynamic and make it fast instead.
Do unpaid bookings release automatically?
Yes, on a fixed system cron schedule. That matters more than it sounds: under wp-cron the release only happens when someone visits, so quiet periods are when inventory stays blocked longest.
Does this work with Amelia or Bookly instead?
Yes. The tuning targets uncached availability queries and serialised writes at checkout, which every serious booking plugin needs regardless of which one you have chosen.

Run WooCommerce Bookings without overselling your calendar.

Free migration, availability that loads instantly, and locking that holds at checkout.