Get Started
Woocommerce Bookings icon

15 versions

Woocommerce Bookings history.

Every release of Woocommerce Bookings is archived here with its changelog, file size, and security scan result. Use the archive to roll back to a stable release or audit what changed between updates.

15 of 15 releases scanned clean
v3.13.0Latest
October 29, 20266.1 MBScanned
Added
  • Add a filter for parent order statuses that exclude booking reminders.
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.
  • Fixed the activation welcome note not reaching the WooCommerce inbox.
  • 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.
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.
Other
  • Dev - Removed outdated copies of WooCommerce core data store classes that were never used.
  • Dev - Fixed PHPStan level 7 findings that needed a product decision.
  • Dev - Raised the PHPStan analysis level to 8.
  • Dev - Corrected docblock types reported by PHPStan level 9.
  • Dev - Corrected docblock types reported by PHPStan level 10.
  • Dev - Checked integrations in PHPStan against generated stubs from woocommerce/php-stubs.
  • Dev - Resolved PHPStan baseline entries without changing behavior.
  • Dev - Kept the PHPStan integration stubs up to date without manual changes.
  • Dev - Updated QIT CLI to 1.3.3.
October 21, 20266.0 MBScanned
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.
Other
  • Dev - Added browser coverage for block booking form availability requests and independent forms.
  • Dev - Updated the release deployment to WooCommerce.com.
  • Dev - Raised the PHPStan analysis level to 3.
  • Dev - Fixed PHPStan level 3 findings that needed small code changes.
  • Dev - Raised the PHPStan analysis level to 4.
  • Dev - Fixed PHPStan level 4 findings that needed behavior changes.
  • Dev - Raised the PHPStan analysis level to 5.
  • Dev - Raised the PHPStan analysis level to 6.
  • Dev - Fixed PHPStan level 6 findings that needed behavior changes.
  • Dev - Raised the PHPStan analysis level to 7.
  • Dev - Fixed PHPStan level 7 findings that needed behavior changes.
v3.12.0Unavailable
October 14, 20266.0 MBScanned

No changelog available for this version.

October 7, 20266.0 MBScanned
Added
  • 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.
  • Validated existing booking references and order-item pairs before CSV updates.
  • Restricted Google Calendar connection requests, delayed repeated refresh failures, and improved expired-link and settings-save recovery.
  • Required current product edit access for every team-member relationship added or removed during final synchronization.
  • Booking exports renamed through the woocommerce_bookings_export_get_filename filter download again.
  • Prevented the booking calendar popover from overlapping the WordPress and WooCommerce admin headers.
  • Allowed removing a permanently deleted resource from a bookable product through the REST API and the product screen.
  • Made the View User and View Order buttons in the booking customer meta box translatabl
September 2, 20265.9 MBScanned
Added
  • 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.
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.
Improved
  • Improved booking form performance by fetching availability for all blocks and resources in one query instead of one per combination.
Other
  • Dev - 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.
  • Dev - Added E2E coverage for the bookable product editor, asserting settings persist by reading the saved product back over the REST API.
  • Dev - Removed redundant and low-value tests.
August 19, 20265.9 MBScanned
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.
  • Enforced global availability permissions for AJAX create, update, and delete requests.
  • Bound booking product exports to the authorized product and global availability permissions.
  • Limited booking order search results to orders the current user can access.
Other
  • Dev - Removed the vulnerable extract-zip package from the development toolchain to resolve a Dependabot security alert.
  • Dev - Restored TLS certificate verification and fail-closed error handling in the release deployment script.
  • Dev - Pinned and checksum-verified the WP-CLI executable used in release builds.
  • Dev - Wired the pull request CI checks required by the trunk branch protection rules (PHP coding standards, @version tag validation).
  • Dev - Aligned AI-agent docs, ignore rules, and npm script aliases with the sibling extensions.
  • Dev - Updated the npm build toolchain to resolve all remaining Dependabot security alerts.
  • Dev - Update the shipped @babel/runtime helpers to resolve a security advisory.
  • Dev - Fixed Markdown documentation lint violations and wired the Markdown docs lint into CI.
  • Dev - Standardized the package license identifier on GPL-3.0-or-later.
  • Dev - Removed the dead lint:md:js script.
  • Dev - Documented the isolated worktree setup for local development.
  • Dev - Stop waiting on networkidle when opening the front-end product page in E2E specs; wait on the date picker's own readiness signal instead.
  • Dev - Enabled TLS certificate verification for translation downloads.
  • Dev - Seed bookable products for E2E specs through the REST API instead of driving the admin product editor.
  • Dev - Suppressed dependency deprecation notices in the PHP unit test suites.
  • Dev - Added a CI check that fails when the plugin's own PHP sources raise compile-time deprecation notices.
  • Dev - Added a pre-commit check that enforces updating the @version tag to x.x.x on modified PHP classes.
  • Dev - Enabled JavaScript linting in CI and fixed source violations.
  • Dev - Migrated the ESLint setup to the flat config format required by ESLint 10, aligning the lint and formatting toolchain with WooCommerce core.
  • Dev - Update wp-coding-standards/wpcs to 3.4.1 (security release) in the phpcs lint tooling.
  • Dev - Allow-listed the dev-only GPLv3 dependency `@woocommerce/e2e-utils-playwright` and wired `check-licenses` into CI.
  • Dev - Update PHPUnit to 9.6.35 to resolve a security advisory in the PHP test toolchain.
  • Dev - Update development npm dependencies to resolve security advisories in the build toolchain.
  • Dev - Update the shipped phpseclib library to resolve security advisories, and move Strauss and QIT CLI to require-dev.
  • Dev - Update the shipped Guzzle libraries and the Symfony YAML development dependency to resolve security advisories.
  • Dev - Enabled CSS linting in CI and fixed source style violations.
  • Dev - Hardened the QIT test workflow: pinned the QIT CLI vers
Added
  • Support for importing accommodation bookings from a CSV file.
v3.8.0Unavailable
July 22, 20265.6 MBScanned
Added
  • Reschedule flow on the booking details admin view: availability-aware calendar that preselects the current slot, keeps the original price, and re-syncs to Google Calendar.
  • Added the ability to edit the "Requires confirmation" payment method title and description from its settings.
  • Important: WordPress 6.8+ is now required.
  • Important: WooCommerce 10.6+ is now required.
Fixed
  • Fixed hourly bookings ending exactly at midnight incorrectly blocking the following day from being booked.
  • Fixed a JS error when multiple bookable products are displayed on the same page.
  • Fixed the admin calendar Day view displaying a booking that ends at midnight as an all-day block on the following day.
  • Fixed calendar date picker navigation arrows being hidden at narrower screen resolutions due to a z-index conflict with the table navigation bar.
  • The `woocommerce_bookings_booked_day_blocks` filter is now consistently applied even when a product has no existing bookings.
  • Replaced legacy `{blogname}` placeholder with `{site_title}` in all booking email subject defaults to align with WooCommerce core.
  • The add-to-cart button on the single product page now inherits the theme's Global Styles button design on block themes.
Improved
  • Bumped WooCommerce "tested up to" version to 11.0.
v3.7.0Unavailable
June 29, 20265.7 MBScanned
Improved
  • Important: Updated frontend templates.
Fixed
  • Improved accessibility.
  • Fixed availability times on the product edit screen when admin and site timezones differ.
  • Fixed calendar showing days as available when remaining slots are below the minimum persons per booking.
v3.6.0Unavailable
June 17, 20265.6 MBScanned
Added
  • Bookings CSV exporter to download bookings as a CSV file.
  • Bookings CSV importer to create and update bookings in bulk from a CSV file.
  • Added a "Bookings" endpoint setting under WooCommerce > Settings > Advanced > Page Setup > Account endpoints.
Fixed
  • Booking reminder emails and automatic completions now happen at the correct local time on sites outside the UTC timezone.
  • Fixed a fatal error when importing a bookable product CSV with person types disabled (empty Person types column).
  • Bookable product CSV import/export now uses readable column labels and auto-detects them on import.
  • Fixed clipped Date created hour/minute inputs on the booking edit screen in WordPress 7.0.
  • Fixed the booking list in WP Admin showing the wrong customer email after reassigning a booking to a different customer.
  • Prevented the "Move to trash" link from displaying on the Edit Booking screen for users who cannot delete bookings.
  • Fixed a fatal error when enabling "Restrict selectable days" without selecting any days.
  • Fixed admin calendar possibly showing a stale customer note on bookings without a note.
  • Fixed the `woocommerce_bookings_account_endpoint` filter not working when used in a theme's functions.php.
  • Used the configured bookings account endpoint slug for the email "View my bookings" link and My Account pagination links instead of the hardcoded default.
Improved
  • Removed the "Enable Bookings Timezone Calculation" setting, as booking events now always follow your site's timezone automatically.
  • Improved the booking edit screen responsive layout by stacking details columns before fields become crowded.
  • Improved booking form calculation AJAX requests.
  • Performance improvements when fetching bookings for availability requests.
  • Bumped WooCommerce tested up to version to 10.9.
Other
  • Dev - Fixed Plugin Check compatibility reporting for guarded block metadata registration helpers.
v3.5.3Unavailable
May 22, 20265.5 MBScanned
Fixed
  • Improved compatibility with MariaDB 12.3.1+ by resolving a conflict between MariaDB's built-in `TO_DATE()` function and the `to_date` column.

Why archive

Sometimes the latest release isn't the one you need. The archive lets you pin Woocommerce Bookings to a known-good version, or roll back while a bug is investigated. Every release stays scanned and reachable.