WooCommerce Bookings v3.10.0 - WordPress Plugin
Setup bookable products such as for reservations, services and hires.
Related items
Related Woocommerce Plugins
WooCommerce Subscriptions - WordPress Plugin
by Prospress Inc
WooCommerce Subscriptions Plugin allows you to introduce a variety of subscriptions for physical or virtual products and services.
WooCommerce Smart Coupons - WordPress Plugin
by StoreApps
Enhance your coupon options - create gift certificates, store credit, coupons based on purchases and more.
WooCommerce Table Rate Shipping - WordPress Plugin
by WooCommerce
Advanced, flexible shipping. Define multiple shipping rates based on location, price, weight, shipping class or item count.
Setup bookable products such as for reservations, services and hires.
Allow customers to book appointments for services without leaving your site. This powerful extension allows you to sell your time or date based bookings, adding a new product type to your WooCommerce site. Perfect for those wanting to offer appointments, services or rentals.
Bookings features
Create booking slots
Optionally create fixed time slots when bookings are available, or let your customers decide.
Multi-person bookings
Have bookings created for a customer-defined number of people, and optionally offer a per-person discount.
Customer email notifications
Set up email notifications to be informed of confirmed or requested bookings, as well as booking reminders.
Booking confirmation controls
Make bookings right away or send to you for approval.* * Bookings requiring approval won’t be invoiced until you confirm.
Intuitive booking management
Filter and update bookings, as well as booking availability, directly from your WordPress admin.
Manually create bookings
Create bookings manually via the WordPress admin, mirroring the frontend bookings form your customers see.
Custom-tailored booking costs
Define custom costs per booking, resource, block, people or duration of the reservation made.
Control booking availability
Define when your booking is available to customers.
Other notable features
-
- “Resources” per bookable product for added flexibility. Resources can also be created globally to apply to multiple bookable products.
- Define global availability rules for all bookable products.
- Allow bookings to extend overnight or into the next day.
- Create buffer periods between bookings that last for minutes, hours or days.
- Integration with the Product Add-Ons extension allows you to add extras for each booking.
- Send custom email notifications to people who book a product.
- View bookings in list or calendar format.
Recent releases
Release history
- 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.
- 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 booking form performance by fetching availability for all blocks and resources in one query instead of one per combination.
- 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.
View changelog
- 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.
- 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
- Support for importing accommodation bookings from a CSV file.
View changelog
- 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 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.
- Bumped WooCommerce "tested up to" version to 11.0.
Frequently asked questions
Is Woocommerce Bookings GPL licensed?
What is the latest version of Woocommerce Bookings?
How much does Woocommerce Bookings cost on GPLCoffee?
Which WordPress and PHP versions does Woocommerce Bookings support?
Is Woocommerce Bookings safe to download?
Auto-updates included
Install it once, update automatically.
The GPLC Connector installs this plugin from your wp-admin and rolls out new versions to your connected sites - up to 25. Included with 12-month and Geek Lifetime plans (plus legacy 6-month).