BACK TO DIRECTORY

BookingHive – Reservation Calendar for WooCommerce

by ilabs

0.0
(0 ratings)

BookingHive extends WooCommerce with bookable and rentable products. It adds a booking calendar to the product page, prices each stay from a seasonal price list, and keeps every reservation in a dedicated dashboard — so the shop you already run starts selling nights, days and weeks instead of pieces.

Use it for anything billed per date range: apartments, hotel rooms, cabins, glamping tents, boats and yachts, campers, cars, kayaks, equipment, or a coach’s calendar.

Key features

  • 📅 Booking calendar on the product page – two months at a glance, unavailable dates greyed out, the price recalculated as the customer picks a range.
  • 💰 Seasonal price lists – a separate rate per period and per year, so low and high season live side by side on one product.
  • 🔁 Period rules – let customers book any interval, whole weeks starting on a chosen weekday, or nothing less than the entire period.
  • 🛏️ More than one booking a day – give a price period a capacity and the same product sells to several customers at once: four pitches, six kayaks, ten seats on a tour. Leave it empty and the product stays a one-booking-a-day rental, priced per stay.
  • 👥 Guests or units – decide whether the count is one cart line carrying the number of guests, or the WooCommerce cart quantity. On a period that has a capacity the count multiplies the price; on a period without one the price is for the whole stay.
  • 🗂️ Reservations dashboard – every stay in one screen, grouped by month, with filters, per-night breakdown and order status changes.
  • 🔔 Stay reminders and self-service cancellation – automatic e-mails before arrival and a signed link that lets the guest cancel without contacting you.
  • 👀 Social proof on the product page – “someone just booked”, “X people viewed this in the last 24 hours” and occupancy badges, all optional.

Designed for real-world rental operations

📅 A calendar that reflects what is actually free
The calendar reads the price list and the existing reservations, so a customer only ever sees dates you can honour. Past days, days outside any price period and days already taken are unavailable — and a departure day may double as the next guest’s arrival day, so changeovers do not cost you a night. On a period with a capacity a day stays open until its seats run out, and the quantity selector narrows itself to the fewest free seats in the range the customer picked.

💰 Rates that follow the season
Every price list row covers a date range and holds its own nightly rate. A product can carry as many rows as the year needs — off-season, shoulder season, peak weeks — and each year is kept separately, so publishing next year’s rates does not disturb the current one.

🔁 Rules that match how you rent
Three period rules cover the usual rental patterns: Any range for flexible stays, Week for Saturday-to-Saturday charters, Whole range for a fixed event or a full-season lease. The rule is set per period, so the same product can be flexible in May and weekly in August.

👥 Pricing per property or per item
In guest mode the number of people is recorded with the reservation but does not change the price — the way an apartment or a house is sold. In unit mode the quantity multiplies the price and flows into the WooCommerce cart quantity — the way kayaks, bikes and gear are rented.

🗂️ One screen for the whole season
The Reservations dashboard reads bookings from its own table rather than from the order list, so a five-night stay is one row, not five. Cards are grouped by month and carry the guest, product, status, amount and night count. Filters narrow the view by guest, order, product, status and date range; a details modal shows the price of every single night, which reminders went out, and lets you move the order to another status.

🔔 Messaging that runs itself
Reminders go out 14 days, 7 days and one day before arrival — each point can be switched off separately. Every booking confirmation carries a cancellation link signed for that reservation alone, and a configurable cutoff (24 hours by default) decides how late a guest may still cancel. A confirmation e-mail closes the loop.

👀 Demand made visible
The optional Spectator Views module shows how much attention an offer gets: live viewers, recent bookings, a popularity badge above a view threshold you set, and an occupancy badge based on how full the coming weeks already are. Colours, corners and thresholds are configurable, and you can limit the whole thing to selected categories or products — or to administrators only while you try it out.

🛡️ Server-side validation
Availability and price are re-checked on the server when the item enters the cart and again before payment, so a stale page or a tampered request cannot book an occupied date or set its own price.

🌍 Translation ready and integration friendly
The plugin ships with a Polish translation and is ready for others through translate.wordpress.org, works with Polylang and WPML, and supports EU Omnibus price-history plugins.

Where everything lives in the admin

The plugin adds a BookingHive menu with four tabs, each with its own linkable URL: Global settings (admin.php?page=bookinghive&tab=general), Modules (&tab=modules), Support (&tab=support) and Partners and services (&tab=partners_and_services). The Reservations dashboard has its own entry in the same menu.

Every booking product gains a Price List tab in WooCommerce’s Product data box, next to Linked Products and Advanced. It holds the quantity mode and the changeover day for this product, a year switcher, the table of price rows — date range, rate, period rule, Edit and Delete — and an Add row button.

The Modules tab lists all three modules. Core is marked Always enabled and has no toggle: it is what registers the Booking product type, the price list, the calendar and the reservation logic, so the plugin has no purpose without it. Spectator Views and Stay Notifications can be switched off freely — their features leave the storefront and the admin, while their settings stay in the database and come back unchanged when the module is enabled again.

Changeover days, spelled out

By default the day a stay ends stays open for the next guest’s arrival, so a turnover costs you nothing — bear in mind the departure day is still billed to the departing guest, so that day is effectively sold twice. Rentals that need preparing between customers — a boat, a camper, a car — can switch Changeover day to Blocked for a service day, plugin-wide under BookingHive Global settings or per product in its Price List tab. Either way a day in the middle of a stay is never offered, a departure day already claimed as someone else’s arrival closes as well, and a one-day booking blocks its whole day, being an arrival and a departure at once. The setting takes effect immediately, including for reservations already placed — so switching to Blocked for a service day can turn away, at checkout, a customer who already has a changeover day sitting in their cart.

What BookingHive does not do

  • It does not talk to channel managers or external booking platforms, and sends no reservation or diagnostic data anywhere — everything stays in your own database.
  • A reservation is a virtual product, so WooCommerce calculates no shipping for it. The checkout needs at least one payment method that accepts virtual orders — a bank transfer will do.
  • Price periods on one product should not overlap. For a day covered by two rows the first matching row wins, which gets hard to predict once rows are edited — end one period the day before the next begins.
  • Reminder e-mails ride on WP-Cron, which only fires when somebody visits the site. On a quiet shop, point a system cron at wp-cron.php once a day.

Screenshots

Booking calendar on the product page with a selected date range.

Booking calendar on the product page with a selected date range.

Calculated amount and the Reserve button.

Calculated amount and the Reserve button.

Price List tab: product-wide settings, the year coverage strip and one line per price period.

Price List tab: product-wide settings, the year coverage strip and one line per price period.

Price list row form: date range, nightly rate, capacity and booking rule.

Price list row form: date range, nightly rate, capacity and booking rule.

Booking rules — any range, whole weeks, whole period — with the week start day for the weekly rule.

Booking rules — any range, whole weeks, whole period — with the week start day for the weekly rule.

Reservations dashboard: totals and filters.

Reservations dashboard: totals and filters.

Reservations grouped by month.

Reservations grouped by month.

Reservation details: per-night breakdown, reminders and order status.

Reservation details: per-night breakdown, reminders and order status.

Spectator Views: badges and thresholds.

Spectator Views: badges and thresholds.

Stay Notifications: reminder schedule.

Stay Notifications: reminder schedule.

Booking details in the admin order screen.

Booking details in the admin order screen.

Cancellation e-mail with the self-service link.

Cancellation e-mail with the self-service link.

Plugin Details

Active Installs
10
Total Downloads
2,091
Version
2.1.0
Requires WP
6.2
Requires PHP
7.4
Tested Up To
7.1
Added
2022-08-04
Last Updated
2026-09-07 10:27am GMT

Ratings

5
0
4
0
3
0
2
0
1
0