Part of the Commerce ecosystem · 487 projects
This module integrates Drupal Commerce with BAT (Booking and Availability Tools) to allow selling bookable products like rentals and timeslots online. It provides real-time availability calendars, capacity management, and admin tools for blocking out inventory.
Commerce BAT connects Drupal Commerce with BAT (Booking and Availability Tools) so you can sell bookable products and services through Commerce’s cart and checkout. It supports date-range rentals, reservations, appointments, lessons, and tickets, with configurable schedules, inventory capacity, and administrator availability management.
The 3.x series uses Commerce BAT’s own reusable native calendar for customer booking and administrator blockouts. Booking rules and reservation validation remain server-side, separate from calendar presentation.
Release status and important warnings
The 3.x series is currently alpha software. Test upgrades and booking workflows on staging before deploying to a live shop. Automated tests cover Drupal 10 and 11, but an alpha release is not a guarantee of production readiness.
Do not use the following releases:
- 1.5.0
- 2.x releases from 2.0.0 through 2.2.0-alpha2, inclusive
These releases contain a known Drupal 10 checkout compatibility defect: the checkout handler calls Transaction::commitOrRelease(), which is not available in Drupal 10. The 2.x fix was released in 2.2.0-alpha3. This identifies one confirmed defect; it does not mean that later releases are free of other issues.
Features
- Reusable Booking Types for date ranges and timeslots.
- Date-only bookings or timed date ranges with explicit start and end times.
- Native embedded and popup calendars on Commerce add-to-cart forms.
- Availability Profiles for opening hours, recurring schedules, exceptions, and valid times.
- Capacity Presets, independent inventory, shared capacity pools, and seats-per-quantity rules.
- Configurable minimum booking notice for timeslots and timed date ranges, enforced during booking validation and checkout.
- Date-range pricing that includes billable days in the unit price, with Commerce quantity applied normally.
- Administrator blockout and restore workflows for all or part of a resource’s capacity.
- UTC storage for time-based bookings and booking-aware date/time formatting.
- Reservation synchronization for order placement, cancellation, and supported order-item changes.
- Audit logging, BAT relationship reports, health checks, and bulk order synchronization.
Included companion modules
- commerce_bat_calendar: the reusable native calendar presentation.
- commerce_bat_ui: an optional configurable booking page/block with a product catalog, calendar, selection controls, and Commerce add-to-cart integration.
- commerce_bat_example and commerce_bat_ui_example: demonstration configurations for exploring booking setups and presentation options.
Templates, presentation options, component plugins, and service interfaces support custom integrations. Example modules are intended for development and evaluation, not automatic production-shop configuration.
Post-installation
- Enable Commerce BAT, its dependencies, and
commerce_bat_calendarfor interactive calendars. - Open
/admin/commerce/config/commerce-bat. - Create Booking Types and configure their schedules, capacity, booking windows, and optional minimum notice.
- Assign a Booking Type to each bookable product variation.
- Confirm the BAT Date/Time Picker widget on the order-item add-to-cart form display.
- Configure shared calendar presentation settings and, optionally, enable
commerce_bat_uifor dedicated booking interfaces. - Manage blockouts at
/admin/commerce/config/commerce-bat/blockout. - Verify add-to-cart, cart, checkout, order changes, cancellation, and shared-capacity behavior before launch.
Additional requirements
- Drupal 10 or 11, with compatible Drupal Commerce and BAT releases.
- Drupal Commerce and its required product, order, cart, store, and price modules.
- BAT and its required unit and event modules.
- Core date-range support for the canonical booking field.
The 3.x native calendar does not require FullCalendar or Flatpickr. Bundled third-party calendar integrations have been retired. Developer-provided integrations remain supported through the calendar plugin API.
Upgrading
Back up the database, review the README’s migration instructions, run database updates, rebuild caches, and validate booking workflows on staging. Upgrades from older versions can change configuration and calendar presentation, so review custom templates and integrations carefully.
Similar projects
BEE (Bookable Entities Everywhere) provides BAT-based booking for Drupal content and supports Commerce payment integration. Commerce BAT focuses on Commerce product variations, reusable booking configuration, shared inventory, and customer and administrator calendar workflows.
Supporting this module
Please use the Drupal.org issue queue for bugs, support, and feature requests. Include the module version, Drupal version, reproduction steps, and relevant error messages.
Documentation
See the README and documentation included with the module for setup, migration, extension points, and verification guidance.
Ask your assistant about Commerce BAT Availability
Check compatibility with your Drupal and PHP version, maintenance and security coverage, from current release data. How it works
Depends on
Dependencies of the latest stable release
- bat Drupal core
- bat_event Drupal core
- bat_unit Drupal core
- commerce Drupal core
- commerce_cart Drupal core
- commerce_order Drupal core
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
More in the Commerce ecosystem
Most installed first
Activity
Release Timeline
Releases
| Version | Type | Core | PHP | Release date | |
|---|---|---|---|---|---|
| 3.0.0-alpha25 | Pre-release | 10–11 | PHP >=8.1 | Oct 13, 2026 | |
| 3.0.0-alpha24 | Pre-release | 10–11 | PHP >=8.1 | Oct 12, 2026 | |
| 3.0.0-alpha23 | Pre-release | 10–11 | PHP >=8.1 | Oct 12, 2026 | |
| 3.0.0-alpha22 | Pre-release | 10–11 | PHP >=8.1 | Oct 12, 2026 | |
| 3.0.0-alpha21 | Pre-release | 10–11 | PHP >=8.1 | Oct 10, 2026 | |
| 3.0.0-alpha20 | Pre-release | 10–11 | PHP >=8.1 | Oct 9, 2026 | |
| 3.0.0-alpha19 | Pre-release | 10–11 | PHP >=8.1 | Oct 9, 2026 | |
| 3.0.0-alpha17 | Pre-release | 10–11 | PHP >=8.1 | Oct 7, 2026 | |
| 3.0.0-alpha15 | Pre-release | 10–11 | PHP >=8.1 | Oct 7, 2026 | |
| 3.0.0-alpha14 | Pre-release | 10–11 | PHP >=8.1 | Oct 7, 2026 |