Troubleshooting WooCommerce Bookings

WooCommerce Bookings is a powerful extension that lets you offer time- or date-based reservations on your site. Sometimes, booking issues can arise from incorrect settings, availability conflicts, or plugin conflicts. This guide walks you through general troubleshooting steps, the most common issues, and some specific troubleshooting tips.

Troubleshooting Framework

↑ Back to top

An important distinction to make when troubleshooting Bookings is whether a problem is due to:

  • A misconfiguration of settings and availability rules
  • A conflict with another extension or the theme on your site
  • Or a bug in the extension.

Follow the steps below to help you confirm that any known and fixed bugs are addressed and your settings are correct. These are the same steps our happiness engineers follow when investigating issues.

  1. Is Everything Up to Date?
    Make sure WordPress, WooCommerce, and all extensions (including Bookings) are using the latest versions. Updates often contain fixes for known issues. Also confirm your site meets the requirements to run the bookings extension.
  2. How Are You Using Resources and Persons?
    Check how you’ve configured resources (like equipment or rooms) and persons (like attendees or participants). If you’re using them incorrectly, it could cause unexpected behavior with costs and availability. See the notes on resource assignment and selection for important nuances to consider if you’re seeing an issue with resources.
  3. How Do You Have Availability Set Up?
  4. Check for conflicts on a Staging or Test Site
    Disable other plugins and switch to a default theme on a staging copy of your site. If the issue goes away, re-enable plugins and your theme one by one until you find the conflict. We have more information about conflict testing here. If the issue persists in a conflict test, open a support request so we can identify any issue to be fixed.

Common Issues

↑ Back to top

Booking availability issues

↑ Back to top

If the entire booking calendar on the product page is grayed out – You most likely have conflicting availability rules. See below for details.

If specific booking slots are not showing available when expected – Double check your “All dates are..” default setting and ensure it fits with any custom availability rules you’ve created.

If all bookable slots are showing as booked when there should still be at least one available – Check for in cart bookings that may be holding some availability, and manually clear them if necessary.

Why is the calendar not displaying on bookable product pages?

↑ Back to top

Typically, issues like this are a result of plugins that offer caching features or server-side caching from services like Cloudflare. It’s a good idea to clear all cache using the available options from those services and temporarily disable all active plugins related to caching and/or performance.

Listed below are alternative suggestions to troubleshoot a calendar that may not be displayed on a bookable product’s page.

  1. If you are using Cloudflare, you may need to disable Rocket Loader as it might be interfering with the calendar’s JavaScript.
  2. If you’re using Chrome or Firefox, review the console for errors or conflicts on the product that should be displaying the product’s calendar.
  3. If your website is using caching plugins, or if your hosting provider has set up server-side caching, you may come across a situation where the booking product page’s calendar keeps loading indefinitely. Alongside, you might notice a 403 error in the browser console. This issue emerges due to the utilization of a session token named wp_woocommerce_session_ native to WooCommerce to monitor user interactions. The caching mechanisms in place on the site can disrupt the dynamic loading of booking pages, including the calendar since both rely on accurate availability data. Often, the expiration settings of caching plugins and mechanisms exceed the default expiry of the wp_woocommerce_session_ token (2 days).

    To resolve this, the recommended step is to get contact your hosting provider or the developer of the caching plugin. You can request they exclude all WooCommerce cookies from being cached. You can find a comprehensive list of WooCommerce cookies in this document for reference. If the caching developer is not responsive, please disable the caching plugin and check the booking calendar.

Specific Troubleshooting Tips

↑ Back to top

Keep a Staging Copy of Your Site

↑ Back to top

Maintaining a staging or development site helps you quickly test issues without affecting your live store. If you isolate an issue in a staging environment, our happiness engineers can more quickly replicate and report the issue to be addressed.

Troubleshooting Availability Rules

↑ Back to top

If you add conflicting rules or settings to your availability, it can cause bookable time slots to appear in unexpected ways, or the product’s entire calendar to be grayed out as unavailable.

Check “All Dates Are…” Default Setting

Under Availability in your booking product settings, confirm if “All dates are…” is set to Available by default or Not available by default:

  • All blocks are available by default: Bookable blocks are created first, then availability rules are applied to those blocks.
  • All blocks are not-available by default: The system considers the availability rules first, and then places the blocks inside that schedule.

Depending on how you mix these settings with custom rules, it can create confusion or block your calendar. Double-check which default you’re using and layer your custom rules appropriately.

Conflicting Availability Rules

If you see the booking calendar as unavailable after setting a custom availability range, you’ll need to troubleshoot your availability rules to avoid the issue.

Let’s say your store is open every day between 8:00AM and 4:00PM, and on December 25th you are closed. This includes a Custom Date Range and a Time Range.

The following rules do NOT work and will cause your entire calendar to be grayed out. This is because Custom Date Range and Time Range are both being used, but no range of days is defined.

The rules need to be rearranged and include a Range of Days rule. Below is a screenshot of the correct rules for this to work:

By adding a Range of Days rule at the top and the Custom Date Range at the bottom, these availability rules will now work.

Use the Bookings Helper Plugin

↑ Back to top

The Bookings Helper plugin lets you export and import booking products along with their associated availability rules, and your stores global availability rules, making it easy to:

  • Transfer products to a staging site for testing.
  • Share specific bookings or booking products with the WooCommerce Support team.

Additional Good-to-Know Details

↑ Back to top
  • Display differences between fixed blocks and customer defined blocks
    • For multi-day bookings with a fixed length only the first day is highlighted as available in the booking calendar,
    • For bookings with customer defined blocks, all available dates are highlighted. 
    • This is a known limitation and means that for example, a fixed 4 day training course will only show the first day of the course as available to be selected on the calendar. If you want the entire block to be shown as available, you can use the “customer defined blocks” option and restrict the lengths to exactly the lengths you need.
  • Booking non-consecutive days is not supported
    WooCommerce Bookings does not currently support booking multiple non-consecutive days in a single reservation. You can follow or vote on feature requests related to this:
  • Viewing availability rules via browser dev tools
    You can see how WooCommerce Bookings applies availability rules in your browser’s developer tools under “Network” requests. This data is passed in JSON format, which for more advanced users can help quickly identify any inconsistencies or issues. Partially and fully booked days, as well as unavailable days are also shown here. Look for the response to the /?wc-ajax XHR request titled: wc_bookings_find_booked_day_blocks
This AJAX request is made when the booking product calendar is loaded on the front end. It contains the details used to determine booking availability. The time:N type shown here means these availability rules are time ranges for days of the week, Monday is time:1, so Saturday is time:6, etc.

Questions and Support

↑ Back to top

Something missing from this documentation? Do you still have questions and need assistance?

  • Have a question about a specific extension or theme you’d like to purchase? Click here.
  • Already purchased and need some assistance? Get in touch with a Happiness Engineer via the WooCommerce.com Support page and choose this extension name from the “I need help with” dropdown.
Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.