Before we switched to selling plugins, clients often asked us to build a WordPress e-commerce website with a WooCommerce online shop AND bookings for courses or other events.
There are lots of reasons for wanting this sort of WooCommerce events website. Your company may organise events and also sell products or equipment relating to these events. You may be a training company who sells courses directly as well as gift vouchers which can be redeemed against your courses. You may be a membership website for a specific industry, selling WooCommerce products and events to support your members.
With millions of websites using WooCommerce according to the latest usage stats, plenty of websites fall into all these categories.
I'm going to tell you about three of the best WooCommerce event and booking products, with advice on how to choose the best one for your specific requirements.
Important notice! In response to the popularity of this article, we've created an online course to teach you how to use WooCommerce to take course and event bookings.
How to use WooCommerce for course & event bookings
A lot of WordPress web designers meet the above requirements by installing two standalone plugins - WooCommerce for selling products, and an events management or booking plugin for selling courses/events. We've had lots of clients whose WordPress events websites work in this way.
The downside is that your users have to buy products and pay for them in a completely separate process from booking events. For example, we saw one website used WooCommerce to sell products and Events Manager Pro to sell events. Customers would use the WooCommerce shopping cart and checkout to buy products. They would then have to book each event individually by completing a booking form and clicking a PayPal button. This created a disjointed experience for customers. It also missed out on opportunities for increasing sales by cross-promoting products and events.
I will show you three ways to design a WordPress e-commerce website that sells products and courses/events using WooCommerce. Both methods use the standard WooCommerce cart and checkout, allowing customers to add products AND book a course/event at the same time. Your customers can pay for products and events in a single transaction. This creates a seamless experience that maximizes your sales.
Each of these methods use WooCommerce, as this is the best WordPress e-commerce plugin and has all the features that most websites need. It also has plenty of extensions and other plugins to meet more unusual requirements. And surprisingly it's free, too!
WooCommerce is clearly the best option for the e-commerce side of your website. This means that your main decision is how to extend WooCommerce to take bookings for courses or events in a single checkout process. Which option to choose depends on how you organize your events.
Method 1 - A WooCommerce product with a date picker (the easy option)

Let's start with the simplest option which will only take you a minute to set up.
The plugins that I'm going to feature in Methods 2 and 3 are designed specifically for selling events in WooCommerce. In contrast the plugin in Method 1 is something different - a product add-ons plugin!
The WooCommerce Product Options plugin lets you add a wide range of extra options to any product. You can add a date picker field to any product, and optionally enable a time picker. It also lets you add a range of additional options to your WooCommerce events, such as choosing a ticket type or lunch options.
If you have simple requirements (and limited time) then WooCommerce Product Options is an excellent way to set up WooCommerce events. That's because purpose-built events plugins tend to be very complex. They can be difficult to set up and customize. With WooCommerce Product Options, you simply add a date picker field to your existing products.
Your customers can easily choose a date and time slot for the event they want to book. You can even disable past dates in the calendar, specific dates or days of the week, and block dates when the event isn't running. That way, you can ensure that customers only book for available dates and times.
If you're looking for a simple and easy way to take event bookings in WooCommerce, then the Product Options plugin with a date picker field is the perfect solution.
Method 2 - WooCommerce with Events Calendar and WooCommerce Event Tickets Plus
The Events Calendar (free), Event Tickets (free) and Event Tickets (paid-for) are designed to work together alongside WooCommerce. The Events Calendar allows you to add events to your website. Event Tickets lets people register for your free events. By combining them with Event Tickets Plus and WooCommerce, you can sell places on your events using the WooCommerce shopping cart. This lets you create a fully functional WooCommerce online store with event bookings.
If you need a more fully-featured events management system then upgrade to Events Calendar Pro, the paid version. This has various extra features, for example calendars that you can display in the sidebar throughout the website to promote your events.
Pros - The Events Calendar/Event Tickets/Event Tickets Plus are created by StellarWP, a reputable WordPress company. The events plugins provide a wide range of features. It lists upcoming events (which can be filtered by category etc.). There are calendars showing the dates of your upcoming events. It really is a complete event management system. They are designed to work with WooCommerce and are fully tested with it.
Cons - To create a course or event using this method, you have to add each date as a separate event. This creates some extra work for you. For example, if you run the same event on multiple dates then you have to add it separately for each date. If you take our online course on how to create a website using these plugins then I'll provide some tips on how to create your events more quickly.
Method 3 - WooCommerce with WooCommerce Bookings
WooCommerce Bookings is a paid plugin that works alongside WooCommerce. It lets you add each event as a bookable WooCommerce product. You can add multiple dates for each event. Customers can add products or events (i.e. bookable products) to their cart and pay for everything in a single transaction.
Pros - This method makes it easier to create and maintain events because you only have to create each course once, and can assign multiple dates to each event. Both plugins are owned by Automattic, the company behind WordPress.com. This means that the plugins are fully tested together and you're not taking on the risks that come from combining plugins by third parties.
Cons - There's no built-in option to display all your upcoming events on a single calendar. Each individual event has a calendar showing the available dates, but there is no overarching calendar showing all your events together. Instead, you can list the course names and customers have to click on a course to view the available dates.
Can I create a calendar of all my events with WooCommerce Bookings?
As I said, the plugin doesn't have a built-in option for this. If you need a central calendar then there are options for you:
- Use method 1 instead (i.e. WooCommerce with Events Calendar plugin), or;
- Use Google Calendar integration to show all your bookable events on a Google Calendar, embedded on your website. This won't look as integrated/professional as the Events Calendar plugin's central calendar, but it is a way to show all events with WooCommerce Bookings.
The exact features of your event bookings will depend on whether you use method 1 or 2. Both can be implemented in a way that allows your customers to choose a date, book a course and pay via PayPal or another payment method such as Stripe. (Or you can continue taking manual payments, if you prefer). Customers will be able to purchase gift vouchers and courses in a single checkout process, creating a seamless user experience.
Expert tip #1 - Sell membership at the same time!
A lot of WordPress membership websites sell products and/or events. If you want your customers to be able to purchase membership at the same time as products and events then this is possible too!
To achieve this, there are 2 great options:
- Combine the free Groups plugin with Groups for WooCommerce. This allows you to create a 'Membership' product (or more than one, if you want different membership levels). Customers can buy membership in the same way as other products and events.
- Use the WooCommerce Memberships plugin. This is very similar to Groups with some subtle differences. Check out this comparison table from WooCommerce to decide which is best for your WooCommerce membership site.
Once a customer has purchased your 'membership' product, you can create members-only pages on your site. You can restrict these to the relevant membership group or membership level.
And if you're being really clever, you can use the Dynamic Pricing plugin to give discounts to your members! Create different discounts for products in each category, discounts for individual products - the sky's the limit!
Note: These membership plugins are compatible with either of the above methods for creating a WooCommerce event bookings site.
Expert tip #2 - Create a table of events with WooCommerce Product Table
Whichever WooCommerce events plugin you use, you can improve how your events are displayed by listing them in a product table. To do this, just install the WooCommerce Product Table plugin and use it to list your event products.
This is particularly useful if you have large numbers of events and want to provide a more detailed database of upcoming events. It's great for sites with lots of events as customers can use the search box, sortable columns and filtering options to find events by category, tag, etc.
Choosing the right theme for your WooCommerce events website
For a professional website, it's important to make sure WooCommerce and the event plugins match the rest of your website.
You can achieve this by choosing a WooCommerce-ready WordPress theme. Its shop pages will be pre-styled to match the theme, helping to reduce your costs.
It's harder to find a theme that contains styling for events plugins. These tips will help you find a theme that looks great with The Events Calendar plugins:
- Storefront is the official WooCommerce theme. It's lightweight, easy to set up and will work with events and booking plugins. The main Storefront theme is free and if you don't like the design, you can use it with a free or paid child theme.
- Avada and Enfold are popular themes designed to work with WooCommerce and The Events Calendar plugins. They're hugely flexible and can adapt to work with most brands and colour schemes, without needing to write any code - so check these out first.
- To find other themes designed to work with WooCommerce and The Events Calendar plugins, go to the WordPress section of ThemeForest. Scroll down and find the 'Compatible with' section in the left column. Select 'WooCommerce' and 'Events Calendar' to find themes that work with your plugins.
If your theme hasn't been tested with these plugins, you might need to do some custom styling to make the WooCommerce and event pages look good.
Take our online course on WooCommerce Course & Event Booking Plugins!
This article is one of the most popular on our site. It has helped many people to create a course or event booking website with WooCommerce.
We have now created an online course to take you through the whole process of building an events site with WooCommerce.
The course focusses on using The Events Calendar suite of plugins with WooCommerce. You'll learn how to create a fully functional events site.
In the course, I'll talk you through the different plugins to help you choose the right combination for your site. I'll teach you how to set up each plugin and get the most from them. Along the way, I'll provide lots of advice and tips on how to maximise the income from your WooCommerce events site. And finally, I'll show you how to test your website, fix any problems and where to get support. I'll even share the famous Barn2 Media go-live checklist with you.
What is the best WooCommerce events plugin?
In conclusion, WooCommerce provides several options for taking bookings for events, each with its own strengths and weaknesses.
If you want a simple and easy-to-use solution, the WooCommerce Product Options plugin with a date picker field is an excellent choice. This plugin allows you to add a date picker field to any WooCommerce product, and you can customize the field with various options to suit your needs. It's an ideal solution for businesses that want to take bookings for events without the need for advanced features.
On the other hand, if you need a dedicated event calendar with advanced features, the Events Calendar plugin is a great option. It provides a complete calendar system for your website, allowing you to create and manage events with ease. This plugin is perfect for businesses that want to create a comprehensive event calendar with ticketing and registration features.
Finally, if you need a powerful booking system with advanced features like resource management, scheduling, and appointment reminders, the WooCommerce Bookings plugin is the way to go. It provides a robust and reliable solution for businesses that need a complete booking system.
In summary, here are the three plugins discussed in this article and when to use them:
- WooCommerce Product Options with a date picker field: For businesses that need a simple and easy-to-use booking solution.
- Events Calendar: For businesses that need a comprehensive event calendar with ticketing and registration features.
- WooCommerce Bookings: For businesses that need a powerful booking system with advanced features.
Ron Orme
Hi,
I have just skimmed through your Udemy course (recommend to others) as I wanted to check out whether this approach would work for our site. I have several questions remaining:
a) many of our clients are businesses who want an invoice rather than being forced to pay with a Credit card. Is this possible?
b) you offered to show some shortcuts on Option 1 where there are multiple events per course but I did not see how to do this on the course
c) if I have to use Option 2 for multiple dates on 1 course is there a way to get the delegate details as well as the booker details as these are often different (I can see that you can do this with Option 1)
d) we want our bookings to be integrated with Xero - our accounts system. I see there is a plugin for WooCommerce that does this. Do you have any experience with this plugin?
e) In your course (Option 1) people buy 'tickets' onto the course. In the training industry these are normally referred to as 'delegates' or 'places' - can this be changed easily
Finally do you offer consultancy in this area as this looks a very exciting option for us compared to our current booking system which is expensive and quite inflexible
Regards
Ron
EJ
Hi, Ron. I'm sorry for the late reply and thanks for reaching out to us via your comment. As I see that you have a number of questions and a few might require lengthy replies, please could you submit these via our dedicated Support Center so that we may best address your concerns. Thanks in advance!
Alex
Hi Katie
As per Lisa's question above, can you please explain how I would show upcoming available dates in WC Products Table for bookable products (courses)? What do you mean by adding each one as a variation? I'm using WC Bookings extension.
Does the WC Products Table plugin also allow for showing a list of 'pre-filtered' products? I basically need the ability to select any course category via main menu and then go to a list of all upcoming courses just for that category. The user would then have further filtering options such as venue, course category, month.
EJ
Hi, Alex. Thanks for your comment. I see you also sent us a message regarding the same, which I have replied to with similar details:
(1) Our other tutorial, How to Create a WooCommerce Events Page (With or Without an Events Plugin), has a section about How to create a WooCommerce events page (without using an events plugin), in which we mention that you can add a separate variation for each date, which you should add each one as an attribute. You can then display these options as either variation dropdowns in the add to cart column, or in Product attribute columns.
Please note that if you're using the WooCommerce Bookings extension, then a calendar is displayed in the add to cart column, and the variation method above would not work because it's how the extension is designed to work.
(2) For what you describe, I suggest that you customize a file in your theme (or better yet, create a child theme) that would display product tables in your category pages. Please see: Adding product tables to the WooCommerce shop page, category archives & search results.
Johan Larsson
Hi, I'm running an after school activity center in which the kids are divided into classes or groups on a term or semester basis. Each class can only have a certain number of kids and the kids usually stay with us for many years in the same class/group.
I'd like to create a booking system where a parent or guardian can sign up a child and pay for the course (upfront or on a monthly basis) and to have a new bill sent out a few weeks before a new term begins. It would also be great if I could get an overview of the students in each class and their parents/guardians.
Can I accomplish this using the plug-ins in the post or are there other solutions more suitable for off-line schools/courses?
Thanks for any help and advice you can offer.
/ Johan :)
EJ
Hi, Johan. Sorry for the late reply!
As far as using WooCommerce to handle the e-commerce functions (selling online) AND bookings for your courses (via the plugins we mention), the above methods are our best suggestions/solutions for you. I hope the pros and cons discussed will help you with insight to decide which way is best for you.
Lisa
Hi Katie,
Im looking to upgrade a website so training courses can be booked and paid for. Each course can be one day at a time, some in blocks. Each course has multiple different locations. All have a max compacity. Is this something woocommerce booking can handle? Can a search facility be included on the home page? Can wordpay be intergrated for payment?
Katie Keith
Hi Lisa, yes you can do this with WooCommerce Bookings and you can list the bookable products in a table with WooCommerce Product Table. Customers can click through to the single product page to view the calendar and book each course.
You can set up each course to be 1 day long and add blocks and the number of available places. I recommend creating a separate bookable product for each location because you can then filter by location when you list the courses using WooCommerce Product Table, so that students can easily find courses at the location most convenient to them.
If you list the bookable products using WooCommerce Product Table then a search box will appear above the table so that people can easily find courses. You can include the list of courses and the search box together on the homepage.
There's an official WooCommerce Worldpay extension that you can use with this setup.
Lisa
Hi Katie,
Great thanks for the info. Ive created a search on the homepage for users to quickly find a course. I need to add a postcode search too so courses nearby are shown in results based on the course they have selected.
Can this be achieved?
Lisa
Hi Katie,
Thank you! One more question, Honest! My head is a bit messy with categories, tags etc. Ive set up the locations as products. How would i then list all the dates available on the product page? I would like the listing to look like this with roughly the same columns.
https://www.envico-online.com/courses/citb-health-and-safety-awareness/midlothian/edinburgh/eh20-9lz/
Thank you
Katie Keith
Which plugin are you using for your events? If you want to list the available dates as a table then you could add each one as a variation, and list them using our WooCommerce Product Table plugin in the product description or short description.
Katie Keith
Hi Lisa, you would need to research WooCommerce postcode search plugins and hopefully something would come up - this isn't a feature of any of the plugins in this article. Alternatively, you might need to add it as a bespoke feature.