Travel Website Customization with WooCommerce Bookings
To travel is to experience what the world has to offer. And in these experiences, we try our best to get the true sense of the place by living like the locals. And that's what this Australia-based business is all about. It acts as a portal between local guides and tourists. Guides sign up as hosts for visitors around the world, and offer prospects unique and authentic experiences.
The idea is amazing; the opportunity for locals and tourists is amazing; the management of data is, well, tricky. When the business started out, manually handling bookings for numerous tourists and managing the allocation of slots for each guide using this platform, was a mammoth task!
The client wanted to offer a quality and hassle-free experience to the tourists as well as the guide. The challenge was to automate the booking process and ensure error-free allocation of resources - a better interaction experience, for better business.
Bookings and guide allocation were central to the smooth operation of the business. To begin with, we had to keep the following facts in perspective:
- At a time, a guide could accommodate multiple tourists.
- A single guide could offer multiple types of experiences and activities like Bungee Jumping, Trekking, Photography courses etc.
- So, if a guide was allocated a particular time slot of the day for hosting an experience, the services of this guide had to be blocked from being booked for another activity during the same time.
In simple words, we had to prevent the overlapping of time slots that assigned to a particular guide for different activities.
As easy as it sounds, managing this manually, as you know, could lead to clerical errors. An automated solution was needed to make sure availability of guides and bookings were as expected leading to an enhanced user experience.
In order to accomplish the task at hand, we had to migrate the website to WooCommerce Bookings. WooCommerce Bookings is a comprehensive booking management plugin that sits on top of WooCommerce. It handles all basic tasks needed to create and manage bookable products. The client could set up various activities as bookable products and could assign them time slots based on guide availability.
The next task was to assign guides to these activities and ensure error-free booking.
By default, this plugin only allows the admin to set product-based availability i.e. the availability can be set only at the experience level. So, as far as the allotment of the guide was considered, the two possible ways to go about were, using the Person Type field or the Resource field i.e. the guide could be listed as a ‘Person Type’ or a ‘Resource’. A 'Person Type' is a person associated with the booking and a 'Resource' could be a person or a commodity or entity.
When it came to using one of the two, the challenge here was that:
- If we decided to use the 'Person Type' option, we would need to set a ‘Shared’ or ‘Global’ Person Type, for which we would have to customize the plugin (WooCommerce Bookings does not provide this facility)... Or...
- If we opted for the 'Resource' option, we would have to implement the 'Resource' in such a way that, if the resource (guide) is booked for one product (experience), it will not be available for another one. Although 'Resources' in WooCommerce Bookings are global in nature, the challenge was to make sure that no problems arose even when bookings had multiple capacity, that is when the same product could be booked by multiple people for the same time slot. For example, if a single guide offered 'Trekking' and 'Kayaking' experiences and 'Trekking' had multiple capacity, booking even once would lock the resource (guide), from other tourists booking the same 'Trekking' experience at the same time. This was a problem.
Using the 'Resource' option was the preferred choice and was in line with the operations of the plugin. However, the problem, which in fact is a problem with the plugin, had to be taken care of. Hence, we provided the client with a custom solution.
WooCommerce Bookings, by default, excludes the booked slots for the current product and shows only the available slots to the customers. We took this same logic and looped it for all the experiences sharing the same guide, thus comparing all the available slots of the current experience with the availability of the guide. Based on this comparison, a final list of available slots was returned to the audience.
As part of the customization, we also introduced a 'Notification System', which informs the guides when a booking takes place and added validations on critical points, such as displaying the available time slots or during the purchase cycle.
As a result of this, we were able to improve the user experience of the website to a great extent, which in turn contributed to spiking the user retention rate, and certainly making for a better vacation experience 🙂