This post came about as the result of a client’s specific need: they wanted to rent their gallery space on a weekly basis to artists who were staging exhibitions. The spec was simple enough: bookings should always start on the same day of the week and run in weekly blocks. My first thought was to use an existing bookings plugin – I thought that this requirement was bound to be covered by several plugins. However, I soon found that none of the main booking plugins for WordPress could accomplish what we required.
WordPress rental booking plugin
Please note that this post covers both my own WordPress bookings plugin, Bookings for WooCommerce, and my thoughts on several third-party plugins that I researched. There is a wide range of free and definitely not-free plugins in this space and I was looking specifically for a plugin that would allow my client to automate their gallery hire process. I was expecting to quickly find a plugin that would achieve this, possibly one that was designed for rental properties, holiday lets, or accommodation rentals. The following reviews and summaries are with that requirement in mind. Plugins that are aimed more towards appointments and shorter term rentals are out of scope – so basically I’m more interested in date-based bookings than time-based.
At the bare minimum, we needed:
- The ability to specify different units for the booking length, e.g. daily, nightly, weekly
- The ability to specify a start or check-in day and an end or check-out day. It should be possible for check-in and check-out days to be the same day or to be on different days
- The ability to set different prices for different times of the year. For example, the property might be more expensive to rent during public holidays
- The ability to block out certain times of the year when the property wasn’t available
- The ability to take payments
Some of the plugins covered below have functionality far beyond those basic requirements but these were the essential factors for us.
Bookings for WooCommerce
This was the plugin that eventually I built from scratch to ensure we could get the functionality we needed. As such, the plugin is aimed mainly at bookings and rentals, for instance:
- Gallery rentals
- Exhibition space rentals
- Property and apartment rental
- Villa, holiday homes, holiday lets, and vacation rentals
- Venue booking
That’s not to say that you couldn’t use the plugin for other purposes but that’s its primary purpose.
Cost is relatively affordable in comparison with some of the plugins below, starting at $49 for an annual licence for one site and increasing to $89 for an annual licence for unlimited sites.
The plugin works by creating a new ‘Booking’ product type where you can set all your booking parameters:
These parameters include:
- Booking unit: this is how you measure the duration of the booking, either in days, overnight, or by week
- Bookings start: here you can specify a day of the week for each booking to start. If you are renting out a vacation or other property, this is your check-in day
- Min booking length: you can specify a minimum number of days, nights or weeks for the booking to last
- Max booking length: you can specify a maximum duration for the booking
- Buffer period: allows you set a period at the end of each booking where the property is not available
- Standard cost: this is your default price per booking unit
- Last bookable date: you can specify a date beyond which bookings can’t be made
- Non standard costs: here you can specify times of the year when the standard booking price doesn’t apply, so times when the property is more or less expensive. You can also block out the property (maybe you’re planning to use it yourself) for periods.
On the front end, the user can select their start and end dates using separate calendars – one for the start date, one for the end date. Bookable dates are clearly indicated and the calendars automatically update to ensure that users can’t duplicate bookings or book across a blocked-out period. The plugin will calculate the duration of the stay and display the cost automatically, taking into account any non standard cost periods that might be incorporated into the user’s booking.
The image above shows the Booking product page in the Twenty Sixteen theme.
As you might already have guessed from the plugin’s name, Bookings for WooCommerce is designed to integrate with WooCommerce. This means we can use all the convenient stuff from WooCommerce, like payment gateway integrations, plus the option to extend further and sell other non-bookable products on the site.
Find out more
This is the big one, coming in at between a hefty $249 and a massive $449 per year depending on how many sites you’re running it. It extends WooCommerce, creating a new ‘Bookable Product’ product type, and adding a lot of features. Much of the plugin is geared towards time-based appointments, with features like:
- Fixed booking slots
- Bookings according to number of people
- Bookable resources
- Custom costs
- Optionally require bookings to be confirmed
- Buffer periods between bookings
There’s a lot of documentation for the product and a number of how-to guides for various scenarios, e.g. boat cruises, museum tickets, gym membership and so on. These are useful resources but would benefit from actual demos so that you can see how the front-end functions. It’s a monster of a plugin and was my initial choice for my client except that, despite all the features it has, it didn’t have the one feature we needed.
There are numerous options in the back-end when you create your bookable product:
- Booking duration: this allows you to fine-tune the duration of booking, allowing you to specify number and unit
- Minimum / maximum duration: define minimum and maximum length of booking
- Requires confirmation: this is a useful option if you want to be able to approve a booking before its confirmed and payment taken
- Can be cancelled: this is also useful if you want to allows users to cancel their bookings. It also gives you control over how refunds are issued.
On the Availability panel, you can make some detailed amendments to the availability settings:
- Max bookings per block: define how many times this bookable product can be booked
- You can also set a number of rules for periods when the product is not bookable.
Finally, on the Costs panel:
Set your base cost plus an optional cost per booking block. Using this option, you can set a basic flat price for every booking that is augmented by the duration of the booking.
There’s a lot of stuff here, giving you plenty of options to fine-tune your settings.
WooCommerce Bookings uses a single calendar for users to choose start and end dates. It’s not always clear when a booking is starting and finishing, although this could easily be solved with some CSS. The cost is automatically calculated and it didn’t appear to be possible to duplicate bookings or book across blocked dates.
On the downside, support is shaky, quite frankly. It took me a week after my initial enquiry to find that the plugin didn’t do what we needed. I waited three days after submitting a pre-sales enquiry to get an answer back from a Woo / Automattic “Happiness Engineer” with information that turned out to be incorrect. Eventually I got a response direct from a developer with the news that the plugin couldn’t achieve what we wanted. Also, despite mentioning in my initial email that one of the booking pages on the demo site was returning a 404, the page is still missing now, some two months later.
However, on the plus side, I discovered that Woo had a kind of semi-unofficial testing site available where you can create a site and test drive all their plugins. This is a neat idea, though not widely publicised (and now taken down). I was able to play around with the Bookings plugin on my own site which is a great way to get a feel for the product.
Although it’s pricey, Woo Bookings is feature-rich and benefits from integrating with WooCommerce. You have multiple payment gateways available plus integrations with other Woo products. It just didn’t have that one feature we needed.
WooCommerce Accommodation Bookings
You can further extend WooCommerce Bookings with the WooCommerce Accommodation Bookings plugin (it’s getting to be quite a mouthful). I was really hopeful that this extension would allow for weekly bookings with specified check-in / check-out days. Unfortunately, it didn’t (though it does allow you to specify check-in and check-out times) but it’s still a nice option if you want to specify the booking duration as ‘number of nights’ rather than number of days.
Thankfully, it’s a free extension but does require the main Bookings plugin. It’s designed for the “hospitality business” but I’m not convinced it’s the best choice for letting apartments, villas, galleries, etc.
Booking and Appointment Plugin for WooCommerce
After taking a look at the Woo product, my next port of call was the Booking and Appointment Plugin for WooCommerce from Tyche Software. The general slant of this plugin seems to be more towards appointments and reservations than property rentals.
I’m going to shorten the name of this plugin to BAPWC as it’s hurting my fingers typing it out.
BAPWC costs between $119 for a single-use licence and $249 for unlimited usage. Renewal is annually at 50%. There’s also a 30 day money back offer.
BAPWC takes a slightly different approach to the other plugins for WooCommerce in that it doesn’t create a specific product type but allows you to enable bookings for any product. This makes it especially suitable for product hire shops, for example, or any store where products are rented out instead of or as well as being sold.
- Enable booking: select this to add booking features to the product
- Purchase without choosing a date: I wasn’t able to find more information about this in the documentation. As a feature, I don’t really understand it when the whole purpose of the plugin is to choose dates.
- Requires confirmation: allows you to approve bookings before payment is taken
On the Availability panel:
- Advance Booking Period: this is a useful feature that prevents short-notice bookings.
- Number of Dates to Choose: this allows you to limit how far into the future you wish to allow bookings.
- You can then specify custom prices and other parameters by week day and enter custom date ranges if required.
Google Calendar Sync:
The calendar sync option allows you to import / export bookings and events to a Google Calendar. This works in real time so you can track bookings in your Google Calendar.
By the way, it’s a relatively minor point but I don’t see the need to use non-standard WordPress interface elements like the disc icon on the Save button or the toggle switches instead of a checkbox. It doesn’t affect the functionality, as far as I could see, but it jars slightly with the appearance of the rest of the interface.
I couldn’t test with the Twenty Sixteen theme as I had with the plugins above so it’s not an exact like-for-like comparison but you get the idea.
There’s a useful Showcases section on the Tyche website so you can see examples of their plugin in action. This is a useful feature both in terms of seeing how it looks on the front-end and getting a feel for its capabilities.
I found the documentation section of the website a little hard to follow. It didn’t seem to be organized into meaningful sections, e.g. offering you a ‘Getting Started’ section first with options for more advanced items later. Instead, it’s organized by date meaning that you are presented first with whichever support topic was most recently posted, not always the best place to start if you are a beginner with the plugin.
On the other hand, my experience with support was positive, getting a response in less than an hour (compare this with Woo above). The response was to the point and directed me to a live site by way of example. As it happened, the plugin didn’t have that one feature I was searching for but I felt the support was strong.
There’s also a helpful demo site with instant access so you can take the product for a test drive.
As ever, the clue is in the name and EDD Bookings adds booking capabilities to Easy Digital Downloads. I’m a big fan (and affiliate) of EDD and given that bookings are not physical products, even if they’re not exactly downloads, this integration seems like a reasonable fit. However, note that although the plugin is offered via the EDD site, it’s not developed by the EDD team, it’s a third-party plugin.
At the time of writing, EDD Bookings is undergoing a significant rewrite for version 3.0 so much of what applies here may not hold in the future.
Version 2.2.4 is available for between $89 and $209 for an annual licence.
Like BAPWC, EDD Bookings is skewed more towards appointments and services, less towards accommodation and property rental.
When you enable bookings for a download, you’re presented with some additional fields:
- Single session length: define the duration of a session. Amazingly, this can be as little as 1 second long. I am still trying to imagine what kind of service would require a single second duration. More sensibly, sessions can be minutes through to weeks.
- Customer can book from: this allows you to define minimum and maximum booking lengths
- Cost per session: set your cost here. I couldn’t see an option to have variable costs, e.g. for weekends to be more expensive, etc.
- Available times: you can use this to block out certain times and days.
With so few options, setting up a bookable product is therefore pretty simple, which is not a bad thing.
Admin calendar view
The plugin also creates a separate Bookings menu item under the Downloads menu item. This lists all bookings (in the same way that all the plugins above do) but also provides the admin with a calendar view where they can view existing bookings. This is a neat idea (and one I plan to steal).
The demo site uses the Vendd theme so, again, a like-for-like comparison isn’t possible. By default, the booking form goes into a widget in the sidebar.
There’s a single calendar displayed. On selecting a date, additional booking fields appear to define time and duration. It’s neat though there appear to be a couple of bugs on the front-end. Selecting the date seems to duplicate the ‘Purchase’ button and when checking out, the date fields don’t display the correct date:
However, a nice touch is to be able to edit your booked session directly from the checkout page:
My experience of support from EDD was not as amazing as it normally is. I sent a pre-sales query in with a specific use-case for the plugin. The reply, sent within 24 hours, didn’t really answer the question and just directed me back to the documentation, which I’d already seen. I’d also stated that I’d created a demo so I was really asking something very specific. I think the slightly sketchy reponse might be related to the fact that the EDD Bookings plugin is a third party plugin sold via the EDD site so it might not be as familiar to support staff as their own plugins.
I also want to emphasise that I’ve contacted EDD support a couple of other times. In one case, I got a reply back direct from Pippin Williamson within about 5 minutes, in the other case it was within 30 minutes, and in both cases my issue was swiftly resolved so I think this instance is more an anomaly than the norm.
There is a useful demo site where you can create a site with EDD, EDD Bookings, and Frontend Submissions pre-installed.
EDD Bookings integrates with the Frontend Submissions plugin so that you can create a marketplace for vendors offering bookable services. Vendors can create their bookable products from the front end of the site.
As I mentioned, EDD Bookings is being rewritten so at some stage this part of the article is going to be out of date. However, at the moment, it feels like a neat, simple plugin for booking appointments and services.
What other plugins are available?
This is a briefer rundown of other plugins that I looked at but quickly rejected, either because they clearly didn’t have that one feature that I was looking for, or for other reasons.
RnB – WooCommerce Rental and Bookings System
On the face of it, this plugin seemed quite promising. It has nearly 1500 downloads and around a 4.6 rating on Code Canyon. Its demo covered a lot of different use cases, including car hire, villa rental, hotel bookings, and service bookings
The alarm bells start ringing when I viewed the demo. For instance, on the product page designed to demonstrate the price range features, note the large grey box on the right of the image:
When you click the panel, it spins round to reveal the pricing ranges. But why not just display the pricing ranges from the beginning? I suspect it was so the developer could include a 3D animation.
On the whole, the layout and design of the front-end seems dubious. And while a great deal of that might be down to the theme, the overall impression I got wasn’t favourable.
There are a lot of features in this plugin, way more than I needed. At $29 it’s very affordable.
Booking Calendar has been around a while, since 2009 according to the developers, has 40,000 active installations and a 4.7 star rating. So those are all positive signs.
The calendar view above seems quite busy to me though I appreciate the developers are trying to demonstrate multiple features in one hit. When I dug down a little, I found some demo pages for apartments which was along the lines of what I wanted.
However, after downloading the plugin to play around a bit, I realised that there can be a drawback to a plugin that’s been around for 8 years – sometimes it can feel like it still belongs in the past. The interface has a very dated feel, booking calendars are added via shortcode to posts and pages, and while none of this makes it a bad plugin, I think expectations are greater now. This isn’t something I could give a client and expect them to configure themselves.
Booking Calendar has a free version and a premium version. Premium starts at $79.
Booking Calendar, Booking System, Appointment Booking
This was the first plugin I found that had the single feature I was most looking for – the option to specify a day of the week for bookings to start. However, there were a couple of problems that I encountered with the plugin on checking its demo. First, there was a bizarre transition animation to display the calendar on loading the page. I don’t understand why the developer would do this – my first thought is that I would have to spend time removing it if I used the plugin. And if I had to remove that, there would doubtless be further things to remove. And the second problem I encountered was that the demo didn’t seem to work. Clicking on the demo calendar did nothing, I couldn’t select a start date, end date, nothing. Hmm.
There’s a free version and a premium version that starts at around $80.
By this stage, I’m starting to feel quite jaded. After viewing Bookly’s demo, I didn’t bother to check its features. The front-end interface seems so distinctive and subjective:
That’s not something I could easily integrate with my client’s theme. In any case, a quick check showed that Bookly is very much aimed at appointment bookings. The demo uses dentistry services as an example and I can see it working well for that kind of use case.
Personal conclusions on booking plugins
I feel like I’ve lived and breathed booking plugins for WordPress over the last couple of months. There seems to be a really clear distinction in this particular market between the higher-end, premium products and those at the bottom end with the freemium model. I don’t think that this is necessarily true of all WordPress plugin markets, but it very much feels that way here.
In terms of recommendations, clearly I’d like everyone to buy my Bookings for WooCommerce plugin. However, as individual needs vary so much and the features offered by these plugins vary even more, it’s difficult to present a single recommended product. However, I would say for certain that this is one area where it’s worth spending some money upfront and staying away from the freemium sector.