Skip to main content

Booking

This plugin adds a booking and capacity management system to HikaShop. It allows you to limit the number of orders or product purchases per combination of custom field values such as time slots, dates, room types, or any other custom field. It supports both order-level booking (checkout fields shared across the whole order) and item-level booking (per-product fields on the product page).

Features
  • Order-level booking: limit the number of orders per combination of order custom field values (e.g. delivery time slots at checkout).
  • Item-level booking: limit the number of purchases per product per combination of item custom field values (e.g. event dates, room types).
  • Configurable default capacity per field combination, with the option to take product quantities into account.
  • Capacity overrides: define specific capacities for individual field value combinations, products, weekday patterns (e.g. "friday-sunday"), or date wildcards (e.g. "25/12/*" for every Christmas).
  • Date range support: works with the datepicker field type's range mode for hotel-style check-in / check-out bookings with per-night capacity tracking.
  • Frontend availability display: color-coded datepicker calendars (green/orange/red), option indicators on dropdowns, radio buttons, and checkboxes, with configurable exact spot count or generic message.
  • Real-time AJAX availability checks on both the product page and checkout, preventing customers from selecting fully booked combinations.
  • Stock validation on add-to-cart and order creation, with clear error messages when capacity is reached.
  • Automatic stock release on order cancellation/refund, and re-consumption on un-cancellation.
  • Backend bookings listing with per-column filters: order number, type, product, field values, date period, and order status. Sortable columns and pagination.
  • Backend capacity overrides management with add/edit form, product selector, and field-type-specific inputs (multi-select for dropdowns, textarea with date patterns for datepickers).
  • Capacity override popup accessible directly from the product edit page for quick per-product configuration.
  • Product listing filter integration: when a datepicker or range datepicker filter is configured on a booking item field, the product listing automatically filters by availability, hiding products that are fully booked for the selected date(s). Works with single dates, date ranges, and margin days.
  • Filter-to-product pre-fill: when a customer selects dates in the listing filter and clicks on a product, the booking date field on the product page is automatically pre-filled with the selected dates.
  • CSV export of bookings, respecting all active filters.
  • Booking settings block on the product edit form with enable toggle, item fields multi-select, and default capacity.
  • Product copy copies capacity overrides, product delete cleans up overrides and bookings.
  • Hotel/lodging structured data: automatically enrich the product page JSON-LD with schema.org Hotel, HotelRoom, LodgingBusiness, or other accommodation types, including check-in/check-out times, occupancy, amenities, star rating, and bed details. Configurable via plugin settings with custom product field mappings or hardcoded values, and per-product schema type override.
  • Price per night and per season: a room can be priced per night, so a stay costs the sum of its nights. Seasons (high season, weekends, Christmas) are a short list in the plugin's settings, repeat every year and either add a percentage to the price, give a night price, or give a night price per traveller category (with the Price per category plugin). The total follows the dates picked on the product page, in the cart and in the order.
  • Calendar sync with Booking.com, Airbnb and channel managers (iCal): each room priced per night has its own calendar address, giving the nights it can no longer be booked on your site, to paste in Booking.com, Airbnb, Beds24, Smoobu or any site that imports a calendar; and it imports their calendars in turn, so the nights booked or closed there can no longer be booked on your site.
  • Events: a product can list its performances (date, time, duration, capacity, status, note); only those dates can be booked, the listing's date filter finds them, and an Add to calendar file (.ics) is offered for each.
  • Compatible with Joomla and WordPress.
Date range booking on the product page with availability colors

Date range mode on the product page, with per-night availability colors guiding the customer's check-in / check-out selection.

A room page with the stay picked, its price per night and the nights already booked

Fully booked nights are shown in red and can not be picked, nights with few spots left are orange, and the total of the stay picked (here 4 nights: 498,00 €, a weekend night costing 15% more) shows above the room, then follows it into the cart and the order.

Booking block of the product edit page

The Booking block of a product: enable booking, choose the type (dates with a capacity, a stay priced per night, an event), the date field, the default capacity and, for a room, the address of its calendar for Booking.com and Airbnb.

Bookings listing in the backend

Orders > Bookings: every night booked, with its order, product, dates and order status, filterable and exportable as CSV.

Use cases
  • Bakery / restaurant: limit the number of orders per delivery time slot (e.g. 10 orders for the 11 AM slot).
  • Event / workshop: limit the number of registrations per event date and session.
  • Hotel / rental: limit the number of rooms available per night using the datepicker range mode for check-in / check-out selection.
  • Appointment / service: limit the number of bookings per time slot per service provider.
  • Subscription box: limit the number of subscriptions starting on a given date.
Use
  • Requires HikaShop 6.4.1 or later
  • Requires the HikaShop Business edition (the plugin relies on custom item and order fields)
  • Compatible with PHP 7.4 minimum
  • Compatible with Joomla and WordPress
  • No limit of time
  • No limit of use
Changelog

1.5.0 on the 3rd of November 2026

  • New calendar sync with Booking.com, Airbnb and channel managers (iCal): a room priced per night now has its own calendar address, giving the nights it is full or closed on your site to the other sites, and it imports their calendars, read every 30 minutes by HikaShop's cron task, so the nights booked or closed there can no longer be booked on your site. The bookings listing and its CSV export show which calendar a night comes from. Before, a room sold on other sites had to be closed by hand on each.
  • A capacity override for a date written day first, such as 25/12/* for every Christmas as in the help of the field, now applies. Before, the first number was always read as the month, so such a date never matched and the night stayed open; a date with both numbers up to 12 is read in the order of the date field's "exclude days" format, month first by default as before.
  • On WordPress, a product can be saved again with the Booking plugin enabled. Before, saving any product failed with "Error Saving", because a setting of the Booking block was written as a column of the product.
  • The VAT of a room priced per night is now charged on the whole stay, in the cart, the order and its total, and so is the VAT of an extra charged per night or per traveller. Before, the price of the line was the price of the stay but its VAT, and so the total of the order, counted one night and one traveller only.
  • The list of item fields of the Booking block of the product shows each field under its translated name, as the other pages of the plugin do. Before, a field named with a language key, such as the Travelers field of the Price per category plugin, showed the key.
  • The Booking block of the product form and the dates shown on the thank-you page can now be changed with a template override (html/com_hikashop/booking/ in the template, hikashop/booking/ in a WordPress theme), as the bookings listing could. Before, their HTML was written by the plugin itself.
  • Each booking the shop records, updates or frees now goes through the plugin's own events, so another plugin, such as a channel manager integration, can follow the nights sold and freed and add nights of its own. Before, the bookings were written straight to the database.
  • A channel manager integration, such as the Beds24 plugin, can add its settings to the Booking block of the product form, for instance the channel manager's room a product is sold as.

1.4.1 on the 30th of October 2026

  • The plugin now creates its tables before a listing or a page reads them, so a shop updated to 1.4.0 no longer shows an error on its listings filtered by date, or on a template that lists the shows, until the first event is saved. Before, those pages failed because the table of the performances did not exist yet.

1.4.0 on the 29th of October 2026

  • A product can now be an event with its own dates: the Booking block of the product has a new "Type of booking" (dates with a capacity, a stay priced per night, or an event with dates) and shows only the settings its type needs. For an event, a list of performances (a date, a time, a duration, a capacity, a status and a note for each) replaces the capacity of any day of the calendar; the capacity, the start time and the duration of the event apply to the dates that do not set their own. The "Price is per night" switch is now the "stay priced per night" type. Only the dates of the list can be booked, each with its own capacity, and a cancelled date can not be booked. The listing's dates filter keeps the events that have a performance on the chosen date or within the chosen dates. Before, a show had to be described with one capacity override per date and nothing listed its dates.
  • The thank-you page of an order for an event lists its dates, each with its "Add to calendar" links (the file for Apple and Outlook, and Google Calendar), for the dates booked with the date field and for the seats of the Seat Map plugin.
  • New "Add to calendar" file: a link gives a visitor, or a customer from their order, the performances of an event as an iCalendar (.ics) file for Apple, Outlook and Google calendars, with the title, the start and end time, the venue and the link of the show. Before, nothing offered the dates to the customer's calendar.
  • In the listings of products, the events come first in the order of their next date, then the other products (a setting of the plugin, "Sort the shows by their next date", turns it off). Before, a listing of shows followed the order of the listing, not of the calendar.

1.3.0 on the 23rd of October 2026

  • AI agents working in a visitor's browser (the WebMCP tools of HikaShop 6.8.0) can now book a room: they find the rooms free on given dates with your dates filter, read each room's date field, "From" price, seasons and the price of the stay searched, and add the room to the cart with its dates, where the availability check and the price of the stay apply as on the product page. Before, an agent could add a room without its dates, so no night was checked or booked.

1.2.0 on the 12th of October 2026

  • A product sold as an option of a room can now be charged once, per night, per traveller or per traveller and night, with the new "Charged as an extra" setting of the Booking block of the product. The price of the option follows the nights and the travellers of its room: on the total of the room's page, in the cart and in the order, where its name says how many (for example "Breakfast (3 travellers × 3 nights)"). Before, an option was charged once whatever the stay. It needs the "Group options" setting of HikaShop on, so that the options stay with their room in the cart.
  • In a search over all the rooms (a dates filter on the booking field), the nights on which every room is fully booked are now shown as booked and can not be picked. Before, the calendar of the filter offered them.
  • When an administrator confirms again an order that was cancelled and some of its nights were booked by other orders meanwhile, a warning now lists those nights (the order is booked anyway, as before). Before, nothing told the administrator that a room could be sold twice.
  • An order that was cancelled and is confirmed again (by the administrator, or by a payment notification) now books its nights again, one row per night as when it was placed. Before, the nights were not booked again when a customer's payment confirmed the order, or were booked as one row for the whole stay which did not take any night from the room, so the same nights could be sold twice.
  • A room priced per night now shows "From" its lowest night in the listings when the seasons change the price of a night (the word needs HikaShop 6.7.1 or later), and the product page shows the price of the stay picked ("4 nights: 418,00 €") under the price of a room which has no Price per category.
  • A room can now be priced per night: with "Price is per night" on its Booking block, a stay costs the sum of its nights, with seasons (a percentage, a night price or a night price per traveller category, repeating every year) set in a new Seasons tab of the plugin. The total follows the dates on the product page, in the cart and in the order. Before, a stay of five nights cost the same as one night.
  • Filtering the product listing by dates no longer ends on a "Failed opening required booking_filter.php" error: the file was missing from the plugin package, so the date filter only worked on a site where the plugin had been copied from the source.
  • The checkbox which selects every row of the bookings and of the capacities listing now has a name, so that a screen reader announces what it does instead of reading an unlabelled checkbox.

1.1.1 - 06 August 2026

  • Added the update system so the plugin now detects and offers its own new versions in the Joomla updater.

1.1.0 - 07 July 2026

  • The plugin interface is now available in 20 languages: English, German (Germany, Austria, Switzerland), French, Dutch, Japanese, Spanish, Italian, Portuguese (Portugal and Brazil), Polish, Swedish, Danish, Norwegian, Finnish, Russian, Chinese, Arabic and Turkish.

1.0.0 - 17 April 2026

  • Initial release of the plugin.
€ 50,00
Booking
The add to cart button will appear once you select the values above

See the demo

Read the documentation

Type
Integration

Access to updates included for 4 years

A tax rate (between 17% and 27% based on your country) will be added if your address is in the European Union and that you don't provide a valid VAT number or if your address is in France as per the European Union law.