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.
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.