Black Friday: 30% OFF on all plans, applied automatically at checkout View plans
Log in Cart

WooCommerce Bookings Changelog

Every recorded version, newest first, with what changed in each one.

Latest 3.14.0 · Nov 4, 20267 versionsSince Aug 2026

2026 · 7 versions

  1. 3.14.0

    Latest
    2 new1 improvement13 fixes
    New
    • Added rescheduling eligibility to Bookings v2 API responses.
    • Added search by booking ID or title to My Account bookings.
    Improved
    • Reduced the number of database queries when listing team members through the REST API.
    Fixed
    • Choose a validated manual-booking status with a default based on the linked order.
    • Kept bookings linked to the paid order when a failed payment is retried after another checkout draft is created.
    • Keep date and time fields inside their columns in the Add Booking form.
    • Fixed buffer days rejecting quotes for available customer-selected resources and losing resource-specific buffer protection during pricing.
    • Showed a retry message and prevented bookings when availability queries fail.
    • Fixed hour and minute buffer availability across days and at booking end times.
    • Prevented checkout from proceeding after a linked booking expired.
    • Restore missing booking completion events and reminders that have not yet become due.
    • Fixed PHP 8.4 deprecation notices in the Google Calendar integration.
    • Fixed shared resource availability undercounting person bookings when the booked product has no translation.
    • Avoided database packet errors when caching large booking availability results.
    • Prevented partially blocked dates from appearing available when no complete booking slot fits.
    • Replaced duplicate pagination controls with one shared control below the My Account booking tables.
  2. 3.13.0

    1 new9 improvements30 fixes
    New
    • Add a filter for parent order statuses that exclude booking reminders.
    Improved
    • Ordered bookings that start and end at the same time by product menu order, then name, on the admin calendar.
    • Added a person-limit warning when manually editing a booking.
    • Removed outdated copies of WooCommerce core data store classes that were never used.
    • Fixed PHPStan level 7 findings that needed a product decision.
    • Raised the PHPStan analysis level to 8.
    • Corrected docblock types reported by PHPStan level 9.
    • Corrected docblock types reported by PHPStan level 10.
    • Checked integrations in PHPStan against generated stubs from woocommerce/php-stubs.
    • Resolved PHPStan baseline entries without changing behavior.
    Fixed
    • Fixed the booking calendar not enforcing the cutoff on pages served from a full-page cache, or when an hours cutoff ends in the next month.
    • Prevented the Bookings list, calendar, and Add Booking pages from running out of memory on stores with many bookable products.
    • Prevented overlapping bookings from covering each other in the admin Day calendar.
    • Honor the site's time format when editing booking times.
    • Fixed booked start times that could remain available on booking forms when requests updated the slots cache at the same time.
    • Fixed calendar event routing for booking and availability subclasses.
    • Fixed a fatal error in create_wc_booking when given a deleted or non-bookable product; it now returns false.
    • Fixed a fatal error when reconnecting a Google Calendar account that had already granted access.
    • Fixed a fatal error when a request to the resources REST API included availability rules, and corrected their schema.
    • Reported a failed Google Calendar connection, instead of a successful one, when Google returned no refresh token and none was stored.
    • Fixed a fatal error when a booking whose order was deleted is restored from the trash by a scheduled task or WP-CLI.
    • Showed how many places are left instead of "This block cannot be booked" when a group is too large for every automatically assigned resource.
    • Fixed importing Product Add-Ons unchecking the "Multiply cost by person count" and "Multiply cost by block count" options.
    • Added an awaiting-payment note to confirmed bookings whose linked orders still need payment.
    • Included every required person type and the overall minimum person count in bookable product starting prices.
    • Fixed booking costs not updating after order item edits, and manually created bookings storing a tax-exclusive cost.
    • Showed bookings in progress under Today on the My Account bookings page.
    • Retained valid booking dates and refreshed availability and pricing when customers switch resources.
    • Fixed booking confirmation emails using the administrator's language instead of the store language.
    • Fix 403 errors in the booking form on cached product pages with expired nonces.
    • Fixed admin calendar view links carrying another view's date and opening the wrong day or month.
    • Made the admin Day calendar heading follow the site's date format.
    • Fixed multiply and divide pricing rules not applying to resource costs. Booking totals change for products that combine them.
    • Allow day bookings that end the day before a fully booked date when rules are checked against the starting block only.
    • Make booking product templates keyboard accessible.
    • Fixed the end date not being shown on the product page, cart and checkout for hourly bookings that end on a different day.
    • Availability slots now restart when a resource reopens, without an extra product buffer; existing bookings on the previous slot times may block adjacent slots.
    • Require an explicit override before booking date edits can bypass availability rules.
    • Fixed multi-day bookings not appearing as one connected booking in the month view of the admin calendar.
    • Fixed calendars showing dates without a bookable start after converting times to the visitor's timezone.
  3. 3.12.1

    11 improvements22 fixes
    Improved
    • Added browser coverage for block booking form availability requests and independent forms.
    • Updated the release deployment to WooCommerce.com.
    • Raised the PHPStan analysis level to 3.
    • Fixed PHPStan level 3 findings that needed small code changes.
    • Raised the PHPStan analysis level to 4.
    • Fixed PHPStan level 4 findings that needed behavior changes.
    • Raised the PHPStan analysis level to 5.
    • Raised the PHPStan analysis level to 6.
    • Fixed PHPStan level 6 findings that needed behavior changes.
    • Raised the PHPStan analysis level to 7.
    • Fixed PHPStan level 7 findings that needed behavior changes.
    Fixed
    • Prevented redundant availability requests when reopening the booking calendar.
    • Fixed a PHP warning, and a failure notice shown after a successful revoke, when disconnecting Google Calendar.
    • Fixed missing remove controls in booking availability and pricing tables when using AM/PM time format.
    • Fixed the booked product dropdown on the Edit Booking admin screen showing the resource name on its own when a resource was selected, instead of the parent product name as well.
    • Prevented guest booking reminders from reusing the previous customer's email address.
    • Showed the "select the options for your booking" message when Book now is clicked before a time is chosen, and stopped the focused time slot from looking selected.
    • Fixed booking form requests being blocked by some host firewalls, which stopped customers from selecting a time.
    • Fixed personal data exports never finishing for customers with 10 or more bookings.
    • Fixed the "View booking" link in customer cancellation emails pointing to the admin dashboard instead of the customer's order.
    • Prevented duplicate Google Calendar events when Google created an event but its response was lost.
    • Kept the booking form responsive when the selected team member changes during an availability request.
    • Disabled booking confirmation while adding to the cart and restored the controls after failed requests.
    • Displayed booking and availability request errors in the experimental booking modal and prevented failed HTTP responses from updating the cart.
    • Fixed a fatal error when adding a booking in the admin for a deleted or non-bookable product.
    • Fixed a fatal error when adding a booking to the cart without a valid timezone offset on products with many bookings.
    • Fixed a fatal error when saving a booking in the admin with a start or end time that is not in the hh:mm format.
    • Fixed the bookings and quotes REST endpoints returning a server error instead of an invalid product ID error for non-bookable products.
    • Fixed recurring availability rules saved as bookable being treated as unavailable in time slots and on the admin calendar.
    • Stopped the admin booking calendar from failing to load when a booking in the viewed range can no longer be loaded.
    • Stopped booking emails with an .ics attachment and the .ics export from failing for bookings whose product was deleted.
    • Stopped booking emails and admin screens from failing for bookings whose order ID points at a refund.
    • Fixed calendar labels for booked dates closed by availability rules.
  4. 3.12.0

    2 new12 improvements18 fixes
    New
    • Enabled filtering the bookings calendar by multiple products.
    • Logged booking reminder scheduling and sending events to WooCommerce > Status > Logs.
    Improved
    • Improved booking calendar loading performance on stores with many bookings.
    • Clarified the booking timezone settings and timezone label display option.
    • Raised minimum requirements to WordPress 7.0 and WooCommerce 11.1.
    • Improved admin month calendar performance by avoiding unused product loads.
    • Used an explicit callback when filtering calendar product IDs to clear a QIT security warning.
    • Passed booking details script data through WordPress localization.
    • Updated @wordpress/scripts to 36.1.
    • Migrated the JavaScript unit tests from Jest to Vitest.
    • Updated development dependencies to address security advisories.
    • Added test coverage for Product Add-Ons charges on bookings.
    • Added browser coverage for Bookings Tracks events and tracking opt-out.
    • Restored store availability rule tests with the calendar feature enabled.
    Fixed
    • Stopped add-to-cart from clearing the cached availability of unrelated products.
    • Added a Customer timezone field to the Add Booking screen, so bookings added from the admin keep their timezone information when "Display visitor's local time" is enabled.
    • Corrected the Customer dropdown placeholder on the Edit Booking admin screen, which always showed "Guest" for guest bookings instead of "Guest (Customer Name)".
    • Preserved quoted labels and kept Product Add-Ons details separate in the monthly calendar popup.
    • Kept the booking calendar visibly disabled until overlapping availability refreshes finish.
    • Stopped fully booked days from appearing partially booked on the calendar when the previous day's time blocks run up to midnight.
    • Kept multi-day booking start dates before an existing booking available when the selected resource allows more than one booking per block.
    • Attached person types to bookable products created with the CSV importer.
    • Prevented duplicate store availability rules when an interrupted update from a version before 1.13 resumes.
    • Prevented a duplicate Google Calendar event when the existing event of a booking cannot be looked up; the sync is retried instead.
    • Respected the visitor locale when choosing the calendar week start.
    • Kept remaining booking slots available on the calendar when displaying times in the customer's timezone.
    • Fixed category filtering for booking availability calendars.
    • Prevented request-specific booking filters from leaking into later availability checks through the cache.
    • Excluded restricted start days from booking slot API results and pagination totals.
    • Hid booking cost controls for Product Add-Ons heading fields.
    • Completed paid orders automatically when they contain only virtual bookings and virtual downloadable products.
    • Made Booking Person Discount coupons check product restrictions and exclusions per booking and discount only eligible bookings.
  5. 3.11.0

    1 new39 fixes
    New
    • Added a filter for customizing the booking start-time selector HTML.
    Fixed
    • Protected booking product data while preserving direct-link access to catalog-hidden products.
    • Applied standard cart validation, password checks and confirmation-cart separation to quick bookings.
    • Kept existing cart bookings when earlier add-to-cart validation rejects a booking.
    • Prevented unauthorized product counts while preserving published results for public callers and partial editors; constrained query-filter status overrides to the requested authorized collection.
    • Displayed the full selected range for fixed multi-month bookings.
    • Prevented fatal errors when cart item data includes a foreign product using the booking type.
    • Limited the desktop booking modal to 500 by 600 pixels and stacked its action buttons at every screen size.
    • Matched the booking modal team-member selector to its design in both left-to-right and right-to-left layouts.
    • Included categories for Accommodation Bookings and other registered bookable product types in REST responses.
    • Kept admin calendar pickers on the selected site date across timezones.
    • Stored booking calendar email attachments in private temporary paths and removed them at request shutdown.
    • Aligned public booked-day lookups to whole calendar months so their persistent caches stay bounded.
    • Kept pagination out of public slot cache keys and capped tracked slot cache entries per product.
    • Deduplicated client-selected public REST slot product IDs to avoid repeated slot calculations.
    • Imported Google Calendar events in bounded pages per poll and resumed large calendars on the next poll.
    • Allowed the Bookings product REST API to preserve editor-saved values.
    • Bounded public time-slot lookups to configured product durations.
    • Required order permissions before a booking editor can relink a booking to another order or trash and delete a linked order through the booking.
    • Removed stored copies of custom Google Calendar encryption keys without disconnecting working calendars.
    • Bounded the work a Google Calendar recurrence can add to availability checks; rules that exceed the limit keep their times unavailable and are logged.
    • Required booking permissions before the CSV importer creates or overwrites a booking.
    • Encrypted custom Google OAuth client secrets and masked the settings field.
    • Deleted temporary bookings and cleanup events when cart items are removed.
    • Revalidated admin booking reschedules against product rules and live availability.
    • Prevented unauthorized admin requests from skipping required database updates.
    • Serialized cart booking reservations and checkout capacity validation.
    • Limited public booking-product responses to storefront fields.
    • Respected the booking window when requesting availability for booking blocks.
    • Protected booking product data while preserving direct-link access to catalog-hidden products and keeping availability cache keys independent of unused timezone offsets.
    • Stored uploaded booking CSV imports in WooCommerce's protected import folder under a random name, and deleted them once the import completes.
    • Kept per-person coupon discounts within the remaining booking price and WooCommerce coupon usage limits.
    • Rejected public availability slot requests that would exhaust server memory, scaling the limit to the host's PHP memory.
    • Checked linked-record restore permissions and preserved trashed bookings during order status updates and scheduled jobs, while invalidating slots for restored bookings.
    • Kept single-product export files in a private temporary directory and limited cleanup to the exported file.
    • Stored booking CSV exports in the protected WooCommerce uploads folder under unguessable names.
    • Validated person-type permissions and product ownership before saving booking products.
    • Stopped public availability requests from growing the booking cache without limit.
    • Checked resource edit permissions when changing product resource assignments through the REST API.
    • Checked the owning order before clearing a booking order-item link.
  6. 3.10.0

    1 new4 improvements20 fixes
    New
    • New "Share max bookings per block?" resource setting that makes a bookable product's max bookings per block a single allowance shared by all of its resources, so a slot taken on one resource can no longer be booked again on another.
    Improved
    • Improved booking form performance by fetching availability for all blocks and resources in one query instead of one per combination.
    • Managed changelog entries with Jetpack Changelogger: pull requests add a change file under changelog/ instead of editing changelog.txt, which is compiled at release time.
    • Added E2E coverage for the bookable product editor, asserting settings persist by reading the saved product back over the REST API.
    • Removed redundant and low-value tests.
    Fixed
    • Bounded public availability requests by the product booking window and a one-year hard limit.
    • Prevented public slot requests from exposing non-public booking products.
    • Prevented public booked-day requests from exposing unpublished booking products.
    • Required object-level edit access and relevant booking capabilities for booking product AJAX mutations, and prevented duplicate resource links.
    • Required exact-order permission before booking REST requests can change existing order associations.
    • Required access to the target booking before confirming it from the admin list.
    • Restricted the store-wide booking calendar to users who can edit other users' bookings.
    • Restricted store-wide booking notifications to users who can edit other users' bookings.
    • Rejected availability requests for resources not assigned to the requested product.
    • Preserved caller-selected CSV source files after an import finishes.
    • Restricted store availability AJAX reads to users with the availability read permission.
    • Enforced the current cancellation policy and cutoff for saved cancellation links.
    • Restricted booking product metadata in REST responses to product editors.
    • Kept cached slot responses separate for requests that show or hide unavailable times.
    • Hardened private-read checks for booking and resource REST records.
    • Required delete permission when a REST update trashes a team member.
    • Blocked payment for orders with bookings awaiting confirmation.
    • Limited public team-member REST responses to profile fields.
    • Rendered imported Google Calendar event summaries as text in the merchant schedule.
    • Prevented translations from loading before WordPress initialization.
  7. 3.9.0

    1 new24 improvements15 fixes
    New
    • Support for importing accommodation bookings from a CSV file.
    Improved
    • Removed the vulnerable extract-zip package from the development toolchain to resolve a Dependabot security alert.
    • Restored TLS certificate verification and fail-closed error handling in the release deployment script.
    • Pinned and checksum-verified the WP-CLI executable used in release builds.
    • Wired the pull request CI checks required by the trunk branch protection rules (PHP coding standards, @version tag validation).
    • Aligned AI-agent docs, ignore rules, and npm script aliases with the sibling extensions.
    • Updated the npm build toolchain to resolve all remaining Dependabot security alerts.
    • Update the shipped @babel/runtime helpers to resolve a security advisory.
    • Fixed Markdown documentation lint violations and wired the Markdown docs lint into CI.
    • Removed the dead lint:md:js script.
    • Documented the isolated worktree setup for local development.
    • Stop waiting on networkidle when opening the front-end product page in E2E specs; wait on the date picker's own readiness signal instead.
    • Enabled TLS certificate verification for translation downloads.
    • Seed bookable products for E2E specs through the REST API instead of driving the admin product editor.
    • Suppressed dependency deprecation notices in the PHP unit test suites.
    • Added a CI check that fails when the plugin's own PHP sources raise compile-time deprecation notices.
    • Added a pre-commit check that enforces updating the @version tag to x.x.x on modified PHP classes.
    • Enabled JavaScript linting in CI and fixed source violations.
    • Migrated the ESLint setup to the flat config format required by ESLint 10, aligning the lint and formatting toolchain with WooCommerce core.
    • Update wp-coding-standards/wpcs to 3.4.1 (security release) in the phpcs lint tooling.
    • Update PHPUnit to 9.6.35 to resolve a security advisory in the PHP test toolchain.
    • Update development npm dependencies to resolve security advisories in the build toolchain.
    • Update the shipped phpseclib library to resolve security advisories, and move Strauss and QIT CLI to require-dev.
    • Update the shipped Guzzle libraries and the Symfony YAML development dependency to resolve security advisories.
    • Enabled CSS linting in CI and fixed source style violations.
    Fixed
    • Fixed a fatal error on the product page and when adding to the cart if a person type cost was stored with a currency symbol or other non-numeric characters.
    • Fixed a person type cost stored with a thousands separator or a decimal comma being priced as only the digits before the separator.
    • Fixed a fatal error when a pricing rule was set to divide by an empty or zero amount.
    • Fixed the admin calendar single-day view defaulting to the server (UTC) date instead of the site timezone, which shifted bookings by a day once UTC and the site were on different calendar dates (for example, past 7 PM in UTC-5).
    • Fixed a false "Error while deleting the item" error when permanently deleting bookings on HPOS stores.
    • Prevented manual booking creation from changing orders without edit permission.
    • Prevented team-member updates from changing unauthorized booking products.
    • Fixed a blocking Google Calendar API call being made on every request (front end, REST API, cron, login) when a Google account is connected; the calendar list is now fetched only when the settings form fields are actually used.
    • Restricted booking product template creation to authorized product editors with a valid request nonce.
    • Fixed the "Booking Person Discount" coupon applying a discount 100 times too large at cart and checkout for currencies with zero decimals (for example JPY).
    • Fixed console errors on admin screens when the WooCommerce Tracks object is unavailable.
    • Fixed the date picker calendar availability announcement not being read by screen readers when the calendar opens on focus.
    • Fixed the admin Add Booking screen and reschedule dialog showing times in the merchant's browser timezone instead of the store timezone when "Display visitor's local time" is enabled.
    • Fixed the admin calendar month and schedule views defaulting an out-of-range year to the server (UTC) year instead of the site timezone, so the calendar could open on the wrong year around New Year.
    • Prevented resource REST requests from reading or deleting team members.

Changelog published by the developer, in their original language.