Frequently asked questions
Answers to the questions that come up most often — from dates and pricing to troubleshooting.
Bookings and dates
The plugin charges the rate for every selected day, the last one included. The range from 18 to 22 August is five entries, so at a rate of 512 the customer pays 2,560. The dashboard calls such a stay "5 nights". If you prefer to bill nights in the classic sense (excluding the departure day), set the rate accordingly or state in the product description that the final day is charged as well.
That depends on the period rule in the price list. Any range allows any interval that fits inside the period, Week enforces whole weeks starting on a chosen weekday, and Whole range allows only the entire period. Rules are set per price list row, so one product can have a season with free-form dates and a season that is weekly only.nnThe rule holds on the server as well as in the calendar — when adding to the cart, on the cart and checkout pages, and when the reservation is saved. A request that bypasses the calendar, say a single day of an object rented in whole weeks posted straight to the shop, is refused with a message saying what range is allowed. The range also has to be continuous: to book two separate stays, a customer places two orders.
Yes. A day where one reservation ends and another begins stays available — the calendar only blocks days in the middle of a stay and days where two reservations overlap. Changeover handling therefore needs no extra configuration. A one-day booking blocks its day completely, since that day is both the arrival and the departure.nnA changeover day may only be used in the opposite role: the day one guest leaves can be the next guest's arrival, and the day one guest arrives can be the previous guest's departure. What cannot be booked is a range that swallows someone else's stay — with a reservation from the 21st to the 22nd in place, a new booking from the 21st to the 22nd is refused, while the 20th to the 21st, or the 22nd to the 23rd, goes through.nnKeep in mind that the departure day is charged to the leaving guest as well (see the pricing question above), so a changeover day is paid for twice. That suits objects rented by the day. If the object needs a day between customers — a boat or a car that has to be serviced — set Changeover day to Blocked for a service day in BookingHive → Global settings, or on the product itself in its Price List tab, which overrides the global choice. Developers can also decide it in code with the bookinghive_release_changeover_day filter, which has the final say.nnOne thing to remember when changing this setting on a live shop: switching a product to Blocked for a service day applies at once to reservations placed earlier too. A day that used to be free as a changeover day becomes occupied, so a customer holding it in their cart will be told at checkout that the dates are unavailable. That is not a fault but the new rule applied to a cart filled under the old one. The other direction, back to Free for the next booking, only adds availability and interrupts nobody.
No. The plugin checks availability when the item is added to the cart and again on the cart and checkout pages, and the reservation write itself is serialised: two orders completing at the same instant are handled one after the other, and each re-checks the dates just before saving. The first order takes the dates, the second is refused with a message naming them. A double booking cannot slip through, however busy the property is.
No. The calendar greys out past days, and server-side validation rejects them too — including when the customer left the page open for a long time or tried to submit data bypassing the calendar.
Price list and period rules
The calendar only offers days covered by a price list row. A product with no price list — or with a price list for a different year only — is visible in the shop but cannot be booked. Check the Price List tab and the year picker above the table.
Yes. Rows belong to a year and the picker above the table shows the selected year only. Rows from other years are not lost — they simply have to be added before the new season starts. Entering the next year together with publishing the new rates is a good habit.
For a day covered by more than one row, the first matching row wins. The result is hard to predict while editing, so it is better to keep periods disjoint — one ending the day before the next begins.
With Any range, yes — the remainder of the period is available, counting from today. With Week, the next full week starting on the configured weekday is available. Whole range stops being available, because by definition the entire period is what gets booked.
Choose the Week rule — a Start of period select with the weekday appears next to the price. This works both when adding a row and when editing one that is already saved: click Edit on the row, pick Week, choose the weekday and save the product.
Products and configuration
Guests (does not affect price) stores the number of people with the reservation but does not change the price — right for an apartment, where the customer pays for the property. Units (multiplies price / cart quantity) treats the quantity as a price multiplier and maps it onto the WooCommerce cart quantity — right for renting items: kayaks, bikes, equipment.
Yes. The Quantity mode field in a product's Price List tab defaults to Inherit global default (…), following the global setting, but it can be overridden per product.
No. The Core module is marked Always enabled and has no toggle, because it provides the product type, price lists, the calendar and the reservation storage. The other modules — Spectator Views and Stay Notifications — can be switched on and off freely.
They stay in the database. Disabling removes the module's behaviour from the storefront and the admin, and switching it back on restores the configuration unchanged.
No — a booking is a virtual product, so WooCommerce calculates no shipping for it. This has one practical consequence: payment methods that require shipping (cash on delivery in its default configuration, for instance) do not appear at checkout. Enable a method that supports virtual orders.
E-mail notifications and cancellations
Three, all configurable under WooCommerce → Settings → Emails: Booking Cancellation Link (to the customer right after booking, with a self-service cancellation link), Booking Reminder (before the stay) and Booking Cancellation Confirmed (after a cancellation).
Through the link in the Booking Cancellation Link e-mail. The link is signed with a token tied to one reservation, so it works only for its recipient and only until the moment set by Cancellation cutoff (hours).
Until the number of hours before the stay begins set in Cancellation cutoff (hours) in the Stay Notifications settings. The default is 24 hours. After that the link stops working.
At the points ticked in Reminder settings: 14 days, 7 days and 1 day before the stay begins. Each point has its own switch, with Enable reminder emails as the master switch above them.
From the reservation modal on the Reservations screen — the REMINDERS SENT section lists the reminders already sent. An empty section means nothing has gone out yet.
Managing reservations in the admin
The order list shows transactions; the Reservations screen shows stays — with their date range, night count, product and status. One order covering five nights is a single entry here, grouped under the month it starts in.
processing and completed block dates as booked, while pending and on-hold block them provisionally. Cancellation, refund and failed payment release the dates, so they return to the calendar.
In the details modal, under CHANGE STATUS — a status select and a Save status button. The change applies to the whole WooCommerce order rather than a single day, and it may send the customer WooCommerce's standard status e-mail.
With the filter bar above the list. Search accepts a guest name or an order number, and next to it are filters for product, status and date range. Reset clears every filter.
ALL RESERVATIONS is the count of every reservation, UPCOMING of future ones, ONGOING of those in progress, and REVENUE (30 DAYS) is the revenue of the last 30 days. The tiles respect the active filters, so filtering down to one order shows the values for that order alone.
Dates, weekday abbreviations and month headings follow the language set in your own WordPress profile, so two people working on the same shop can each read the screen in their own language. Amounts do not: they always follow WooCommerce → Settings → General — the currency symbol, its position, the decimal and thousand separators and the number of decimals. An amount on this screen therefore reads exactly as it does everywhere else in the shop, whichever language you use.
Troubleshooting
The most common cause is a missing price list row for that year or for the current period — the calendar only offers days the price list covers. Check the Price List tab, the year picker, and whether the periods end before today's date. The second cause is a reservation occupying the whole visible range, since booked days are greyed out too.
The product is in Guests (does not affect price) mode, where the number of people is only recorded with the reservation. To make the count affect the price, switch to Units (multiplies price / cart quantity) — globally on the Global settings tab or per product in its Price List tab.
Check two things: whether the Cancellation cutoff (hours) window has passed (24 hours before the stay begins by default) and whether the Stay Notifications module is enabled. Past the cutoff the link from the e-mail deliberately stops working.
Reminders are sent by a cron job that runs once a day. On a site without traffic nothing triggers WP-Cron, so the job never starts — in that case set up a system cron calling wp-cron.php. Also check that Enable reminder emails is on, that at least one reminder point is ticked, and that the store can send mail at all (the quickest test is Send a test email in the e-mail settings).
Actions in the price list table — Accept on a new row and Delete on an existing one — happen in the browser only. The price list reaches the database when you press Update on the product. If a row was deleted by accident, reload the product page without saving and the stored state comes back.
A booking is a virtual product, so methods that require shipping are unavailable. Enable a method that supports virtual orders — direct bank transfer, for example — under WooCommerce → Settings → Payments.