How to Take Bookings and Appointments in WooCommerce
If you already sell through WooCommerce, you don't need a separate booking system. A booking plugin turns a product into something customers can book, and your normal checkout and payment gateways keep working. One site, one set of orders, one place to manage everything.
This guide covers what a booking plugin needs to do, how to set up your first bookable product, how to handle opening hours and payments, and how to choose between a free and a paid plugin.
What can you take bookings for?
- Appointments: salons, barbers, clinics, therapists, personal trainers and consultations.
- Classes and workshops: where several people book the same session.
- Tours and activities: with group sizes and a price per person.
- Hire: equipment, vehicles, boats or courts, by the hour or by the day.
- Stays: cabins, rooms, glamping and holiday lets, booked by the night.
What a booking plugin needs to do
- Show real availability. Customers should see which days are available, full or closed, before they click anything.
- Hold the time while they pay. Otherwise someone else can take it during checkout.
- Prevent double bookings. The final check has to happen under a lock as the booking is saved, so two customers clicking at once can't both get the last space.
- Deal with unpaid orders. A time shouldn't stay blocked forever because someone abandoned a payment.
- Handle late payments safely. If a payment arrives after a time was released, it should only keep the booking if the time is still free.
Those last two are where cheaper plugins often fall down, and they're the ones that cause awkward phone calls.
The basic setup
- Create a product and choose Bookable product as the product type.
- Choose time slots or whole days, and set the length.
- Set your weekly hours, plus any holidays and special dates.
- Set a price, and the number of spaces if it is a class or tour.
- Publish it, and the booking form appears on the product page.
That really is it for a simple appointment. Everything else is fine-tuning.
Getting your hours right
Availability is where most of the setup time goes, and it's worth getting right:
- Weekly hours: add one or more time ranges per day, such as 9:00 to 12:30 and 13:30 to 17:00, to build in a lunch break. Days with no hours are closed.
- Holidays and special dates: close a single day or a range, block a few hours for a meeting, or open with special hours, like a late night or a Sunday.
- Store-wide closed dates: close every bookable product at once for Christmas or a holiday.
- Buffers: keep time free between bookings for cleaning, travel or preparation. With a 15 minute buffer, a 10:00 to 11:00 booking means the next one can start at 11:15 at the earliest.
- Minimum notice and booking window: stop last-minute bookings you can't prepare for, and limit how far ahead people can book.
What your customers see
On the product page, customers choose how many people if you ask, then pick a day on the calendar. It shows which days are available, fully booked or closed, and skips ahead to the first month with space. They choose a time, see the price update live, and click Book now. The time is held for them while they check out, so nobody else can take it.
After booking, they get a confirmation email with a calendar invite. In My Account they can see their bookings, pay for unpaid ones, add them to Google Calendar or download an .ics file, and cancel within the window you set.
Payments and unpaid orders
Bookings go through the normal WooCommerce checkout, so every payment gateway works, including the Cart and Checkout blocks. The booking follows its order: paid orders mean paid bookings, and cancelled or refunded orders free the time.
If an order sits unpaid for longer than the limit you set, it's cancelled and the time is released. The pay page checks the booking again before taking payment, so a customer can never pay for a time someone else now has.
Managing bookings day to day
You'll want one place to see everything. A good bookings screen shows today's bookings and the week ahead at a glance, with filters, search and a calendar by month, week or day. You should be able to move a booking to a new time, add private notes and take phone or walk-in bookings yourself, either sending the customer a "Pay now" order, marking it as paid, or simply confirming it.
Free or paid?
The Yeti Dev Bookings Lite is free and covers time slots or whole days, opening hours, closed dates, buffers, group sizes with one price per person, a live calendar and bookings by phone. For many small shops that is enough.
Yeti Bookings is worth it when you need any of these:
- Staff or resources with their own calendars
- Deposits, with the balance invoiced later
- Bookings you approve before they are confirmed
- Nightly stays, or lengths the customer chooses
- Pricing rules by day, date, time and length
- Types of people, such as adults and children, and paid extras
- Customer rescheduling, reminder emails and calendar sync
You don't have to decide today. Start with Lite, and when you move to Yeti Bookings, one click brings your bookings, products and settings across. Our free vs Pro comparison goes into more detail on when to upgrade.
Common mistakes to avoid
- Forgetting buffers. Back-to-back bookings look efficient until you're running late all afternoon.
- No cancellation window. Let customers cancel, but early enough that you can refill the slot.
- Leaving holidays until the last minute. Add closed dates as soon as you know them.
- Not testing on a phone. Most bookings happen on mobile, so book something yourself on one.
Want to see it working? Try the live demo, or read the Quick Start Guide.
Yeti Bookings
Appointments, reservations and a live booking calendar for WooCommerce