Skip to content
codecollab.pl
§ Blog woocommerce booking and rental

Bookings and rentals in WooCommerce - a store that sells time slots

WooCommerce can sell more than things - it can sell time: appointments, rental nights, an hour on the court or a table on Saturday

Krystian Kacik 10 min read
Contents

WooCommerce can sell more than things - it can sell time: appointments, rental nights, an hour on the court or a table on Saturday. A booking in WooCommerce is an ordinary product that has a calendar instead of a stock level: the customer picks a date and time, the system checks availability, blocks the slot and pushes the order through the store’s normal checkout. For most service and rental businesses one well-chosen plugin plus a few hours of configuration is enough - a booking system written from scratch is a cost you reach for only when the rules are genuinely unusual.

Below: the models of selling time, what to demand from a calendar, how to choose a plugin, the typical mistakes, and the point at which you really do have to write code.

How a bookable product differs from a normal one

A bookable product is one whose “stock level” depends on time. A normal product has a single quantity; a bookable one has a grid: for every day and every hour separately it tracks how much is still sellable. On top of that it knows rules an ordinary store never needs:

  • The unit of sale - an hour, a 90-minute block, a night, a weekend, a week
  • The availability calendar - opening hours, days off, holidays, seasons
  • Buffers - time to clean the room, to travel, to prepare equipment between bookings
  • Capacity - how many customers fit the same slot (one chair, or twelve places on a workshop)
  • Lead time - minimum (not in half an hour) and maximum (not a year ahead)

If your sales can be described by those five things, a plugin will handle it. If the rules are more twisted - I come back to that in the section on a custom module.

Five models of selling a time slot

Before you pick a plugin, name your model - this is the most common source of mistakes: somebody buys a tool for appointments and then sells nights.

ModelExampleUnitWatch out for
Appointment / serviceclinic, hairdresser, tutoringhour or blockbuffers between appointments, multiple staff
Rental by the nightapartment, cabin, caravannight, from-toseasonal pricing, partial nights, deposits
Rental by the hourcourt, hall, equipment, studiohourmultiple identical units, returns and inspection
Event / ticketworkshop, training, tripseat on a datecapacity, waiting list, named tickets
Order for a datecatering, cake, food truckday with pickuppickup hours, daily order limit

The last row surprises people most often: a food business sells food, but it sells it “for Friday at 5pm”, with a cap on orders per day. Technically that is booking, not ordinary selling.

What the calendar must handle before you spend a zloty on it

A good plugin closes the whole loop: from showing free slots to the reminder the day before. The minimum I look for in every build:

  1. Double-booking protection - the slot disappears from the calendar when the order is placed, not when the transfer clears
  2. A customer-facing calendar that reads well on a phone, because that is where most bookings come from
  3. An owner view - a list and a calendar in the dashboard, with the ability to add a booking by hand from a phone call
  4. Two-way sync with Google Calendar / iCal - so a slot you blocked privately does not get sold in the store
  5. Transactional emails - confirmation, reminder, change notification
  6. Pricing rules - a different rate at weekends, in season, for longer rentals
  7. Resources - if you sell “a bike” and you have eight of them, the plugin assigns a specific unit

Point four saves more builds than any other: without sync, somebody books over the phone while the store still shows the slot as free.

Plugins - what is actually in use today

The market splits into three groups, and it is a split worth navigating by:

GroupWhat it suitsPayment modelNote
The official WooCommerce Bookings extensionappointments, hours, nights, resourcesannual licence, upper shelfmost deeply wired into Woo, vendor documentation and support
”Bookings and appointments” plugins from other vendorsclinics, services with staff membersannual licence, mid shelfoften a better calendar interface, check how actively it is developed
Rental pluginsequipment, vehicles, accommodationannual licence, mid shelfthey count nights and deposits, weaker on hourly appointments

I deliberately give no figures - plugin pricing changes several times a year, and the gap between a one-site and a five-site licence can be several-fold. Assume that a booking licence is usually the single largest line in the annual costs of a store like this; how it all adds up I laid out in the real cost of WooCommerce plugins.

When choosing, I check the last update date, the install count and whether the vendor replies in the support threads. A booking plugin touches money and dates - one abandoned after a year is worse than none at all.

Checkout add ons, or where the margin actually comes from

Selling a slot rarely ends at the slot itself. A child seat with the rental car, breakfast with the apartment, an extra hour in the hall, a cake personalisation - those are checkout add ons, paid options bolted onto the order. Good booking plugins have them built in; for unusual logic (a field that only appears for rentals longer than three nights) you do it with custom checkout fields in WooCommerce.

What to collect up front so you do not have to phone the customer later:

  • fulfilment details (number of people, arrival time, registration plate, allergies)
  • consents and rental terms, recorded on the order
  • paid extras added to the total before payment

Deposits, security deposits and cancellations

With bookings, the money rarely arrives in full up front. The standard is a deposit - part of the amount at booking, the rest on site. WooCommerce does not do this by itself; you need a prepayment plugin or that feature inside the booking plugin. The three variants I see most often:

  1. Full prepayment - technically the simplest, good for cheap services and events
  2. A percentage or fixed deposit - the balance settled manually, typical for rentals
  3. Card pre-authorisation - holding funds instead of taking them; requires a gateway that supports it

Then there is the cancellation policy: the slot has to return to the pool automatically, otherwise after a month the calendar shows days as booked that are actually free. And make sure BLIK, the Polish instant-payment standard, and fast bank transfers work smoothly on a phone, because bookings get made on the move - there is a comparison in the piece on payment methods in WooCommerce.

Five mistakes that break bookings

Builds fall apart in repeatable places:

  1. The cache serves a stale calendar - the product page with the booking form has to be excluded from caching, otherwise the customer books a slot that was taken an hour ago
  2. Time zone - WordPress set to UTC instead of Warsaw shifts every hour; it takes a minute to check and is usually discovered after the first complaint
  3. Emails do not arrive - a confirmation in the spam folder is the most expensive failure in this model, so send transactional mail through SMTP and test delivery before you go live
  4. The slot is only blocked after payment - with a bank transfer you will sell the same day twice
  5. No offline channel - phone bookings never reach the system, so the calendar lies

Separately: the calendar is a dynamic page, generated on every visit, so on weak shared hosting it can take seconds to load. If your store is already sluggish today, start with choosing hosting for WooCommerce.

When a plugin is no longer enough

A plugin stops being enough when the availability rules are business logic rather than a setting. The signals after which I propose a custom module:

  • a booking depends on several resources at once (a room plus an instructor plus equipment, each with its own calendar)
  • prices are calculated by your own algorithm - thresholds, packages, rates for regular customers
  • the system has to talk over an API to an external schedule or a property management system
  • you have business customers with limits and consolidated invoicing - that is already B2B selling, covered in a B2B booking system for travel partners
  • you also sell recurring access (a pass, a membership), which mixes with the logic of subscriptions in WooCommerce

In that case I build a hybrid: WooCommerce stays as the checkout, the catalogue and the customer account, while the availability and pricing layer lives in a separate module wired into Woo. The customer gets one store, not two systems to babysit.

Where to start with your own setup

I begin with a free diagnosis: what you sell and how, what the current store looks like, how many bookings a day go through the phone. Out of that comes a recommendation - a plugin with configuration, or a custom module - together with a list of annual costs, so the licences do not surprise you next year. For anything larger the quote goes out in writing before the start, fixed-bid, usually 5,000-10,000 PLN net (Polish market rates). Adding bookings to a working store falls under development and optimization; building from scratch falls under ecommerce stores.

Frequently asked questions

Does WooCommerce have bookings without a plugin? No. WooCommerce on its own has no concept of a time slot or an availability calendar - you need a booking plugin or a custom module. Without one, all that is left is selling a “voucher for an appointment” and arranging the date by hand outside the store.

Which WooCommerce booking plugin is best? There is no single best one - there is the best one for your model. For hourly appointments with multiple staff, the bookings-and-appointments type plugins work well; for rentals by the night, rental plugins that count dates and deposits; and the official WooCommerce Bookings is the most universal.

Can I rent out equipment that I have several units of? Yes, that is what resources are for: eight bikes are defined as eight resources of one product, and the system makes sure a ninth is never sold for a given slot. Set a buffer for inspection between rentals while you are at it.

How long does it take to add bookings to an existing store? Configuring an off-the-shelf plugin with the calendar, emails and payments is usually a few working days, including tests on live slots. A custom module with your own pricing rules is a matter of weeks - I give the exact deadline after the diagnosis, together with the quote.


Running a store where something does not work the way it should? I build and rebuild WooCommerce stores - from a single fix to reworking the whole sales flow. Tell me what you are dealing with and I will send back a scope and a price.

§ Quote in 24h

Your store is slowing down or looks dated, and you do not know where to start?

Describe the scope in two sentences or send a link to your store. I tell you what to fix first, and you get a fixed bid in writing within 24 hours - no "from X" pricing.

Send your scope - quote in 24h