Easy Booking Pro - WordPress Plugin
Easy Booking Pro is an inventory and booking management plugin for WordPress, specifically designed to work seamlessly with WooCommerce. This powerful plugin allows users to efficiently handle their inventory and automate the booking process, ultimately streamlining their business operations. With a user-friendly interface and a range of customizable options, this plugin is a must-have for businesses looking to optimize their booking management system.

Plugin Features
Designed with ease of use in mind, the plugin provides a simple and intuitive interface that makes it easy for users to set up and manage their inventory. It offers flexible pricing options, allowing businesses to tailor their rates based on factors such as time, duration, and customer preferences. This ensures that businesses can easily adapt their pricing structure to meet their specific needs and maximize their revenue potential.
With Easy Booking Pro, businesses can effectively manage their booking calendar, ensuring that bookings are accurately tracked and organized. This helps to prevent double bookings and scheduling conflicts, providing businesses with a reliable and efficient booking management system. The plugin also offers advanced features such as resource management, allowing businesses to allocate specific resources to bookings, ensuring that customers have access to the necessary equipment or services.
The integration with WooCommerce enables seamless online booking and payment processing. Customers can easily browse available inventory, select their desired dates and times, and proceed with the booking process. The plugin offers various options for collecting payments, including popular payment gateways like PayPal and Stripe, providing customers with a convenient and secure payment experience.
Additionally, Easy Booking Pro offers a range of customization options to ensure that businesses can tailor the booking process to their specific requirements. Users can customize booking forms, email notifications, and booking confirmation pages, creating a cohesive and professional booking experience for their customers. This plugin also provides comprehensive reporting and analytics, allowing businesses to gain valuable insights into their booking trends, revenue, and customer behavior.
In conclusion, Easy Booking Pro is a comprehensive and feature-rich plugin that offers businesses a seamless and efficient solution for inventory and booking management. With its user-friendly interface, flexible pricing options, and integration with WooCommerce, this plugin simplifies the booking process and helps businesses streamline their operations. Whether you run a hotel, a vacation rental, or any other business that requires managing bookings, this plugin provides the tools and functionality to optimize your booking management system and enhance the customer experience.
Specifications:
| Release date: | 11-10-2020 | |
| Last updated: | 13-07-2025 | |
| Type: | Paid | |
| License: | GPL | |
| Subject: | e-Commerce for WooCommerce | |
| Compatibility: | W5.x W6.x | |
| Includes: | Plugin | |
| Language packs: |
|
|
| Developer: | Easy Booking Pro | |
| Rating: | ||
Share with your friends!
Easy Booking Pro Setup Guide for WooCommerce Bookings
Easy Booking Pro is best understood not as a standalone booking system, but as an extension of standard WooCommerce product behavior: the customer selects a date or date range, the plugin calculates the price, checks availability, and passes the booking data into the cart, order, and reports. In this guide, we will walk through how to prepare your store, which settings to enable first, how to configure a product for rentals or accommodations, how to verify the outcome on the product page, and what to do if the calendar, pricing, or availability does not behave as expected.
This guide is written for rental site owners, small service businesses, WooCommerce administrators, and developers who need to understand how the plugin works in practice without unnecessary theory. We will not repeat the product's marketing copy, and we will not cover license purchases. The focus here is installing an existing extension, configuring it, testing it in a practical way, and troubleshooting issues.
The main advantage of Easy Booking Pro is that it preserves the familiar WooCommerce model. A product remains a product, the cart and checkout stay standard, and the calendar, duration, pricing, unavailable dates, and date-based inventory are layered on top of that model. This approach works especially well when a store already has payments, emails, taxes, coupons, shipping, or extra options configured, but now needs to sell not just a product, but a resource reserved for selected dates.
Throughout this guide, you will see some interface labels in English. They are left in their original form because that is how they may appear in the admin panel or official documentation: Easy Booking, Bookings, Inventory, Reports, Calendar, Availability, Save. All recommendations are explained in plain language, and any uncertain points are presented as items to verify, not as promises of full compatibility.
How the Plugin Turns a WooCommerce Product into a Bookable Resource
Easy Booking Pro does not require a separate product type for rentals. According to the developer's documentation, you simply make a standard product bookable using the Bookable option, assign a price, and configure the date rules. This is an important architectural detail: the store continues using WooCommerce's cart, checkout, emails, and payment flow, while the plugin adds booking data to the product line item.
In practice, it works like this. The customer opens a product page, selects either one date or two dates, sees the updated price, adds the product to the cart, and places the order. In the admin panel, the store owner then sees the booking inside the order and can track it in reports. In the Pro version, this is expanded with date-based availability management, blocking specific days or ranges, additional pricing rules, and manual booking imports.
This model is especially useful for renting equipment, bicycles, cars, apartments, costumes, venues, and other resources that can be reserved for a full day or several days. If the service depends on an exact time, such as booking a consultation at 2:00 PM, Easy Booking Pro is no longer an ideal fit. The developer explicitly distinguishes between date-based bookings and time-based appointments.
What Happens in the "Date - Price - Order" Chain
The most common mistake store owners make is thinking of the plugin as a calendar that operates on its own. In reality, the calendar is only the entry point. The outcome depends on several layers of settings: global Easy Booking rules, the product's own configuration, WooCommerce stock status, unavailable dates, whether pricing is based on days or nights, and the statuses of orders and bookings.
It helps to think in terms of this chain:
- Input data: the customer selects a start date and, if needed, an end date.
- Product rules: the plugin checks whether the product is bookable, how many dates must be selected, which durations are allowed, and which dates are unavailable.
- Pro rules: if inventory management is enabled, the selected dates are compared against the available quantity of the resource; if special pricing is configured, it is included in the calculation.
- Storefront outcome: the price changes, the product can or cannot be added to the cart, and the selected dates are passed into the order.
- Administration: the owner sees the booking in the order, reports, and calendar, and can add a manual booking or recalculate availability if needed.
Quick takeaway: if something is not working, do not check only the calendar. Check the entire chain. The product must have a price, it must be in stock, the required scripts must load on the standard WooCommerce product page, and the duration rules must not conflict with unavailable date rules.
How Easy Booking Pro Differs from General Appointment Systems
General appointment systems usually start with staff, services, schedules, time slots, and specialist calendars. Easy Booking Pro starts with the product. It works well when what you are selling is already naturally described by a WooCommerce product page: "bike for a rental period," "cabin for a number of nights," "equipment for a date," "costume for the weekend." This is not better or worse than the general approach. It simply serves a different kind of need.
That leads to the main limitation: you should not try to turn Easy Booking Pro into a full hourly scheduling system. You can build a workaround using a variable product with time options as variations, but it will still be a compromise. For recurring appointments, classes, staff schedules, rooms with hourly slots, or service calendars, it is better to look at solutions where time is the primary entity.
| Use case | How to think about the setup | Is Easy Booking Pro a good fit? |
|---|---|---|
| Bike rental for several days | One product, a date range, date-based inventory, price per day or per period. | Yes, this is a typical use case. |
| Apartment stay with check-in and check-out | Two dates, night-based pricing, unavailable days, occupancy calendar. | Yes, as long as you do not need complex hotel features outside WooCommerce. |
| Massage at a specific time | Date plus time, specialist schedule, appointment intervals. | Probably not. A time-based solution is a better fit. |
| Tour with a fixed start and limited seats | Depends on whether the customer selects only a date or a specific session. | Yes for date selection, less certain for time-based sessions. |
Who the Plugin Fits Best and When Another Solution Makes More Sense
Before installing it, be honest about your actual use case. Easy Booking Pro works best where a resource is booked by date and the business wants to keep its existing WooCommerce setup intact. That might be a small rental operation, a local store offering period-based pickup, an apartment rental site, an event equipment rental company, or a service where the customer only needs to choose a start and end date.
The plugin is especially convenient if the site owner wants to keep a familiar product catalog. The product page already includes images, descriptions, price, attributes, variations, add-ons, and reviews. Easy Booking Pro adds a calendar to that existing page instead of forcing the entire catalog into a separate system. For a small or mid-sized project, that reduces maintenance complexity.
Use Cases Where Easy Booking Pro Feels Natural
- Rentals with limited units: bikes, cameras, tools, baby equipment, or sports gear where it is important not to accept more bookings than the actual stock available for selected dates.
- Accommodations and short-term stays: apartments, rooms, cabins, campsites, or similar offerings where the period is counted in days or nights.
- Seasonal products and services: prices change by weekday, individual dates, or date ranges, and some dates are closed for booking.
- Offline requests: some bookings come in by phone, email, or other channels and need to be entered manually so availability stays accurate.
- A catalog with date selection on the shop page: the customer enters a date range first and then sees only the products that are available.
When the Plugin May Be Unnecessary or Awkward
If the main thing you manage is staff schedules, treatment rooms, group classes, or hourly slots, Easy Booking Pro has to be forced into a model it was not designed for. Yes, a variable product can imitate time selection, but that does not replace a system where time, staff, and capacity are independent entities. You should also be cautious if your product pages are fully built in a page builder and do not use standard WooCommerce markup. The documentation and FAQ explicitly note that the calendar scripts expect classic WooCommerce product pages, and they may not load on shortcode-based or builder-generated pages.
Another important consideration is calendar integrations. The current official materials consistently confirm reports, an admin calendar view, and export support, including iCal. But if your business requires full two-way sync with external calendars, management of multiple staff calendars, or a more complex resource model, that point should be verified separately before launch.
A required check before you decide: define exactly what the customer chooses - a date or a specific time. If the customer selects only a date or a date range, Easy Booking Pro fits the underlying logic. If the customer selects a staff member and an exact time slot, look for a scheduling solution instead.
What to Check Before Installing It on a Live Store
Preparation matters not because the plugin is unusually complex, but because it touches a critical part of the store: the product page, price recalculation, cart, order flow, and stock handling. Mistakes here are obvious right away: the customer will not be able to choose a date, will see the wrong price, or will place an order for a resource that is already booked. So it is better to prepare the site as if you are changing the store's sales logic, not just installing a decorative extension.
WordPress and WooCommerce Basics
The developer lists the required WordPress, WooCommerce, and base Easy Booking versions for Pro. In practice, that means WooCommerce itself should already be working reliably: products open correctly, the cart accepts a standard product, checkout completes the order, emails are sent, and the theme does not break product templates. If a normal product cannot be purchased properly, it is too early to add booking logic.
Before installation, check the following:
- WooCommerce is active and configured: currency, taxes, payment methods, and core store pages are already working.
- Products have prices: the Easy Booking documentation states that simple products and variations must have a regular price, and grouped or bundled products must use prices on their child items.
- The product is in stock: if the product is not purchasable, the calendar may not appear or adding to cart may fail.
- The theme preserves WooCommerce hooks: the area before the add-to-cart button is especially important because that is where the plugin outputs its date fields.
- You have a staging copy or backup: for a store with active orders and inventory, do not enable new booking logic on the live catalog without testing it first.
Cache, Minification, and Product Pages
The calendar and price recalculation depend on JavaScript and AJAX requests. The developer's FAQ specifically covers issues related to cache, minification, and scripts. So before configuring anything, run a simple test: temporarily disable aggressive JavaScript bundling on product pages, avoid caching bookable product pages for logged-in administrators, and test the behavior in a clean browser window.
You do not have to disable caching across the entire site permanently. A more practical approach is to exclude product pages, the cart, and checkout from any caching mode that can overwrite dynamic state. If your host uses server-side caching, check those rules with the hosting provider. If your optimization plugin can exclude specific scripts, first identify the conflict in the browser console and only then add an exclusion.
Data Worth Preparing in Advance
Before configuration, it helps to create a small planning table in a normal document. It should include products, quantity per date, minimum and maximum duration, closed days, seasonal pricing, and fulfillment rules. That may feel like extra work, but this kind of preparation is exactly what prevents conflicts such as "minimum one week, but weekends are closed inside that range" or "one variation should share stock with another, while a different one should have separate availability."
For each future bookable product, write down:
- How many units of the resource can actually be fulfilled on a single day.
- Whether it needs one date or a two-date range.
- Whether the period should be counted in days or nights.
- Whether there is a minimum duration, such as fixed multi-day blocks.
- Which dates cannot be selected as the start, the end, or any date within the range.
- Whether there are seasonal prices, duration discounts, or surcharges.
- Whether bookings come in from external channels and need to be entered manually.
Installation and an Initial Low-Risk Check
Installing Easy Booking Pro depends on the fact that it extends the base Easy Booking plugin. WordPress, WooCommerce, and the free Easy Booking plugin must be installed first, and then the Pro add-on is added. Do not get pulled into licensing and purchase questions on the live site during this stage. From an admin perspective, the activation order, menu check, and a test product matter more.
Activation Order
- Verify a standard WooCommerce product: add a simple product to the cart and complete a test order using a safe payment method.
- Activate the base Easy Booking plugin: after that, the plugin settings should appear in the admin panel, along with the ability to make a product bookable.
- Activate Easy Booking Pro: Pro features should add date-based inventory management, advanced pricing, unavailable dates, manual bookings, and extra reports.
-
Open
Easy Bookingin the admin panel: make sure the settings, reports, and tools matching your installed version are available. - Create a test product: do not start with your most profitable item. Use a separate product hidden from the catalog or published on a restricted test page.
After activation, do not rush to configure every feature at once. First, get a basic result working: one bookable product, one or two dates, correct price recalculation, successful add-to-cart behavior, and booking data visible in the order. Only then move on to inventory rules, seasons, blocked dates, and the shop page filter.
Initial Check on a Single Product
Open the test product for editing and locate the Bookable option near the product type selector. For a simple product, a regular price must be set. If the product is variable, check the price on the relevant variations and make sure the parent product is marked as bookable if at least one variation should accept dates.
Next, open the Bookings tab in the product data. If you are only testing the basic flow for now, keep the rules minimal: two dates for a period-based rental or one date for a single-day event, a normal calculation mode, no complex discounts, and no product-specific unavailable dates yet. Save the product, open it on the storefront, and check whether the date selection fields appear next to the add-to-cart button.
How to verify the outcome: if you can select a date, the price updates as expected, the product can be added to the cart, and the selected period appears in the order, the basic chain is working. Every additional setting after that should be added one at a time, with a check after each change.
Post-Install Settings: What to Enable First
Easy Booking settings are split into global settings and product-level settings. Global settings define default behavior, while product settings let you override that behavior for a specific product or variation. A good strategy is to configure global rules for the most common store-wide use case, then handle exceptions at the product level. That way, new products behave predictably, and unusual offers do not disrupt the entire catalog.
The All bookable Option and Product Selection
The All bookable setting automatically makes products and variations bookable. It works well for a store where the entire catalog operates by date, for example, a storefront made up entirely of rental equipment. But if you also sell standard products, consumables, or gift certificates alongside rentals, enabling this option can create unnecessary work. In that case, it is better to turn off the global automation and manually mark only the products that need booking.
The rule is simple: if your catalog includes even a noticeable share of regular products, do not enable All bookable without testing. Otherwise, customers may see a calendar where it does not belong, and administrators will end up wondering why a normal product suddenly has date fields.
Number of Dates: One Date or a Range
The date count setting defines the booking model itself. One date works for a day event, a single pickup date, or a service that does not span multiple days. Two dates are needed for rentals, accommodations, trips, long-term use, or any case where both the start and end matter.
Do not choose two dates "just in case." If the customer only needs a visit date or pickup day, a second calendar adds friction and increases the chance of mistakes. On the other hand, if the product is actually occupied for several days, one date is not enough to calculate the period and availability correctly.
Days or Nights
The Days and Nights mode affects how duration is calculated when two dates are selected. In day mode, the same start and end date may count as valid, and two adjacent dates may count as two days. In night mode, two adjacent dates correspond to one night. For equipment rentals, days usually make more sense. For accommodations, nights are more natural.
Check this setting not only mathematically, but also from the customer's point of view. If someone books an apartment with check-in and check-out dates, they expect to pay by nights. If someone rents a tool for a day, a calendar-day price is easier to understand. The wrong mode quickly leads to complaints such as "one day is being charged as two" or "one night disappeared from the calculation."
Duration, Minimum, and Maximum
The duration setting defines the size of the booking block. For example, if a product can only be rented in weekly blocks, duration can be set to seven days. The minimum and maximum then limit how many of those blocks can be selected. It is important not to confuse block size with the maximum allowed period. If the block size is seven days and the maximum is set to two, the customer can choose not "two days," but two blocks, meaning two weeks.
After changing duration, always test the calendar on the storefront. Problems usually show up right away: some dates become unavailable, the end of the period cannot be selected, or the system counts the period differently than expected. If you are also using unavailable dates, check whether they conflict with the minimum duration.
First and Last Available Day
Available range settings help limit how early or how far ahead customers can book. This is useful when the business needs preparation time before a product can be fulfilled, or when the calendar should not open too far into the future. The first available day setting also reduces the risk of same-day orders when processing requires review, delivery, or preparation.
A safe default approach is to leave a small buffer before the first available date for products that require physical preparation, and separately check any products that can be fulfilled immediately. If you have different product groups, do not try to solve everything with a single global number. It is better to set a general rule and handle exceptions at the product level.
Calendar Appearance
The appearance settings include calendar themes and colors. The documentation notes that the default theme may conflict with some WordPress themes, and in those cases the classic theme may work better. This is not just a cosmetic detail: if the calendar is covered by theme elements, fails to open, or is hard to read, users may assume the booking system is broken.
It is usually best not to overdo color experimentation. A light background with dark text is typically the most reliable for readability. After updates, colors may need to be saved again so the CSS files can be regenerated, so keep the selected values in your project notes. That makes it easier to restore the appearance quickly if it resets.
Configuring a Bookable Product and Date-Based Inventory
The most important part of Easy Booking Pro lives not only in the global settings, but inside the WooCommerce product itself. That is where you determine whether the product can be booked, what its price is, whether it has stock, how variations behave, and whether they share availability. If something is wrong at that level, even perfectly configured global rules will not save the page.
Bookable, Price, and the Bookings Tab
To make a product bookable, enable Bookable and assign a regular price. Then open the Bookings tab, where the product-level booking rules are stored. They are similar to the global settings, but they apply only to the current product or variation. This is useful in a catalog where some products are booked by the day, some by the week, and others have their own blocked periods.
Variable products introduce extra logic: the parent product must be marked as bookable if at least one variation is bookable. At the same time, individual variations can be either bookable or standard. This is useful when you sell the same underlying item in both "buy" and "rent" modes, or when only certain sizes, sets, or configurations are available as rentals.
How Date-Based Inventory Works
The Pro version uses WooCommerce stock logic to limit availability by date. First, global inventory tracking must be enabled in WooCommerce. Then, on the product itself, you need to enable stock management in the Inventory tab and set the quantity. That number becomes the count of units available for each day. When selected dates are occupied by bookings, the remaining quantity for those dates is reduced.
If stock management is not enabled on the product, the product may be bookable without limit for every date. In some cases, that is acceptable, for example, when the service has no hard capacity limit. But for a physical resource, it is risky. If you have five bicycles, five equipment sets, or one apartment, inventory must reflect real availability.
Variations: Shared Stock or Separate Availability
For a variable product, you need to decide in advance what a variation actually represents. If variations are colors of the same bicycle, each one may need separate stock. If variations are pricing plans for the same resource, such as "standard" and "with delivery," they may compete for the same physical item. The documentation describes two models: stock managed on the parent product shares availability across variations, while stock managed on each variation gives them separate availability.
Do not make this choice based on which setup is easier to fill in. Make it based on how your inventory works in reality. If one variation being booked should block the dates for all the others, stock should be shared. If variations represent different resource units, you can track stock separately.
Shared Availability for Related Products
The shared availability feature helps when different products describe the same underlying resource. For example, the same room might be sold as "photo studio rental" and "workshop rental," but in reality only one booking can use that room at a time. Once stock management is enabled, you can link a product's availability to other products so that a booking on one offering reduces availability for the related ones.
Test this setup especially carefully. Create a test booking for the first product, then open the second product for the same dates. The expected outcome is that the dates or available quantity reflect the first product's booking. If that does not happen, check whether stock management is enabled, whether the related products were selected correctly, and whether the product page cache is interfering.
Unavailable Dates, Buffer Periods, and Seasonal Rules
For many booking projects, the challenge is not simply showing a calendar. The challenge is handling exceptions: weekends, maintenance days, holiday closures, seasonal breaks, cleanup after a stay, or technical prep time between rentals. Easy Booking Pro offers several layers for handling these exceptions, but they need to be used carefully. Otherwise, the calendar becomes unpredictable.
Global and Product-Specific Unavailable Dates
Global unavailable dates apply to all products and variations. The documentation clearly notes that a date disabled globally cannot be re-enabled at the product level. That means the global level should be used only for rules that truly apply across the entire business: a company-wide day off, a technical maintenance day, a warehouse closure, or a period when the company is not accepting bookings at all.
Use product-level unavailable dates for a specific resource: an apartment closed for renovation, one car unavailable for maintenance, or a particular costume model already occupied by an external order. These rules live in the product and variation settings, and for bundled products the documentation separately explains how product-level unavailable dates on child items can be included or ignored.
Start, End, and Both Dates
One of the stronger details in the Pro booking model is the ability to block a date as the start, the end, or both edges of a date range. This is useful for accommodations and rentals where a checkout day may be available for a new check-in only after cleaning or preparation. For example, you can block check-in on a certain day while still allowing check-out, or vice versa.
If the setting that allows booking through unavailable dates inside the period is enabled, those dates are blocked only for check-in and check-out. If it is disabled, the customer will not be able to choose a period that contains an unavailable date anywhere inside it. This is a subtle setting and should be tested against a real use case: select a period that starts before a blocked day and ends after it, then see whether the calendar allows that selection.
Automatic Unavailability After a Booking
The Pro documentation and code snippets show that the unavailability period can be changed per product or variation using the easy_booking_product_unavailability_period filter. In a normal setup, this is useful for cleanup, delivery, returns, or product prep. For example, a costume may need a day for cleaning after a rental, and a tool may need several hours of inspection, which in a date-based model is often simplest to treat as an additional unavailable day.
Do not add a buffer for every product if only part of the catalog needs it. Buffer days directly reduce availability, which means they also affect sales. First apply the rule to one test product, create a booking, and then check neighboring dates both on the storefront and in the availability report.
A Common Pitfall: Duration vs. Unavailable Dates
If the customer cannot select a date, the issue may not be a broken calendar at all. It may simply be a rule conflict. For example, a product may be bookable only in seven-day blocks, the minimum duration may be set to one block, and an unavailable day may exist inside the nearest upcoming week. To the customer, the calendar looks "empty," but the system simply cannot find a valid period.
Work through these cases from simple to complex: temporarily disable product-level unavailable dates, check global ones next, then reduce duration to a single block and open the product page again. Once the calendar starts working, re-enable the rules one by one. That will show you exactly which rule makes the period impossible.
Date-Based Pricing, Duration Rules, and Rule Priority
Price calculation is the second critical area after availability. In the basic model, the product price is multiplied by the duration, but Easy Booking Pro adds flexibility: discounts and surcharges based on duration, special prices by weekday, individual date, or date range, plus storefront display modes for pricing. If you configure this without a plan, it is easy to end up with a price that is hard to explain both to customers and to admins.
Duration-Based Discounts and Surcharges
Duration-based discounts and surcharges work only when two dates are selected. They can be set globally, at the product level, and for variable products, at the variation level. The documentation defines the priority clearly: product rules override global rules, and variation rules override parent product rules. That is useful, but it requires discipline. If the price looks wrong, start by checking the most specific level, not the global settings.
The discount mode also affects the final amount. In Normal mode, only the rule matching the selected duration is applied. In Cumulative mode, all rules up to the selected duration are taken into account. For simpler businesses, Normal is usually easier to understand because the customer sees one rule and one final amount. Cumulative makes sense when the business genuinely prices bookings in tiers.
Pricing by Weekday, Date, and Range
Booking prices can be set by weekday, by a specific date, or by a date range. That covers seasonality, weekends, holidays, high-demand periods, and special windows. The key fields here are the rule type, the date or range, recurrence, regular price, discounted price, and the application method for ranges: per day or for the entire booking duration.
Before configuring seasonal pricing, it helps to write the rules out in plain language first. For example: "weekends cost more," "summer pricing is higher," or "a one-week rental has a fixed block price." Then translate those rules into the interface. If you start building many rules directly in the admin panel, it becomes easy to confuse dates, recurrence, or the unit of application.
How to Make the Price Clear to the Customer
The Prices display mode setting controls what the customer sees when special pricing or discounts apply. You can show nothing, show the reduction, or show the applied price. For a simple rental store, the final price after date selection may be enough. For a seasonal catalog, it is better to show why the price changed, otherwise users may assume the site is calculating incorrectly.
Check the price in three places: on the product page after selecting dates, in the cart, and in the order. If you use extra options, deposit plugins, or WooCommerce coupons, add a separate test for those as well. Easy Booking may be compatible with such extensions, but the order of calculations and how they are displayed should be verified against your actual plugin stack.
| Symptom | Most likely area to inspect | What to do |
|---|---|---|
| Discount is not applied | Duration, one-date vs. two-date selection, product or variation level. | Check that the rule is intended for two-date mode and is not being overridden by a more specific rule. |
| The period price looks doubled | Days vs. Nights mode, and how the range price is applied. | Compare the calculation across adjacent dates and confirm whether you are pricing by days or nights. |
| A variation calculates differently than the parent product | Variation rules. | Open the Variations tab and check individual prices and discounts. |
Date Filter on the Shop Page and the Customer Journey
In a small catalog, customers can open each product and choose dates manually. But once there are many products, that workflow quickly becomes frustrating. The Pro version includes the Easy Booking date filter block, which can be added to the shop page or product archive. The customer selects a date or date range first, and the listing shows only available products. When they open a product page, the selected dates can be prefilled.
Where to Use the Block
The documentation specifies that the block is available only on the shop page and product archives. You can find it under the name Easy Booking date filter in the shop page editor or in widget areas if your theme uses them. The block settings include one-date or two-date selection, horizontal or vertical form layout, and whether globally disabled dates should be taken into account.
Do not place the filter on every page. It should appear where people choose a product from a list. On the homepage, it may be more practical to use the WooCommerce Single Product block with a specific bookable item, or simply link users to the catalog. The important point is not to imply that the date form will work on any arbitrary page. The developer's FAQ makes it clear that scripts are limited on non-standard pages.
How to Test the Filter
Create two test products: one available on the selected dates, and one unavailable because it is already booked or blocked by unavailable date rules. Open the shop page, select a period, apply the filter, and check the product list. Then open the available product and make sure the dates were prefilled. If the list does not change, verify that you are testing on the actual shop page or archive, not on a regular page with a custom shortcode.
When the Filter Helps Conversion and When It Gets in the Way
The filter is useful when the customer knows the date first and chooses the rental item afterward. For example, they need a bike for the weekend, a photo studio on a chosen day, or an apartment for a date range. But if the customer typically chooses a specific product first and then decides on dates inside that product page, the filter may be unnecessary. Do not add it just to have "more features." Add it when it shortens the path to an available product.
Manual Bookings, Orders, and Reports in the Admin Panel
Real businesses rarely run only on online orders. Some requests come in by phone, in a messenger app, through a partner, or from an old spreadsheet. Easy Booking Pro closes that gap with manual bookings and imports. This is not a replacement for a WooCommerce order. It is a way to occupy a resource on the calendar so public availability does not show dates that are already taken.
Manual Booking Without Creating an Order
In the documentation, manual import is described as a useful workflow for external platforms and phone bookings. In the entry form, you select the product, enter a start date, enter an end date if needed, specify the quantity, and save. One important limitation is that manual import works only with products using stock management. That makes sense because the entire purpose of the action is to change the resource's date-based availability.
After saving, always open the public product page for the same dates. If the quantity has not changed, check whether stock management is enabled and whether the correct product was selected. If availability still seems wrong after deleting or changing a booking, the documentation and FAQ mention an inventory initialization tool in Easy Booking > Tools.
CSV Import for External Channels
If you have many bookings, you can import them from a CSV file. The documentation describes four required columns: product_id, start_date, end_date, quantity. That is the minimum format, so do not try to mix in arbitrary fields without checking the documentation first. Upload one small file for a test product, verify the calendar, and only then import a larger list.
A good practice is to keep a separate source column in your working spreadsheet, even if you do not import it into Easy Booking itself. For example, a note such as "phone," "partner," or "manual" helps the administrator understand where the request came from, while the plugin itself is responsible for managing date occupancy.
WooCommerce Orders and Date Changes
Bookings can be added or edited inside a WooCommerce order through the order items. The documentation warns that some orders may not be editable until their status changes. It also notes that when a booking item is added or edited manually inside an order, the booking price is not recalculated automatically and must be checked and adjusted by hand.
This is an important point for support staff. If a customer calls and asks to move their dates, it is not enough to simply change the calendar. You need to check the order line item, the price, availability for the new dates, and the customer emails. In unclear cases, the safest option is to create an internal procedure: who changes the date, who confirms the price, who sends the email, and who checks availability after saving.
Reports, Calendar, and Availability
The Easy Booking > Reports section helps you view bookings in both list and calendar formats. In the Bookings tab, you can filter entries by status, product, start date, and end date. The Calendar tab shows a calendar view. In the Pro section, the Availability tab lets you choose a product and inspect availability by date.
Reports do not replace accounting, and they do not promise perfect planning without internal processes. Their purpose is to give administrators a fast operational view: what is already booked, which bookings start soon, where periods are ending, and which products are available. For external tracking, you can use export from the bookings tab in the supported formats.
Practical Example: Multi-Day Bicycle Rentals
Let us walk through a concrete example, because it brings together almost every important setting. Suppose the store rents out six identical city bikes. The customer must choose a rental period, pricing is calculated by day, Sunday is closed for both pickup and return, and phone bookings need to be entered manually. The goal is to prevent more than six bookings on any one date and to show the customer a clear, understandable price.
Goal
You want a WooCommerce product page where the user chooses a start and end date, sees the total price for the period, adds the product to the cart, and the selected dates reduce availability. The administrator should see the booking in reports and be able to enter an offline request if the customer called directly.
Preparation
- Create or choose a simple product called "City Bike."
- Set a regular daily rental price.
- Make sure WooCommerce can complete a normal test order.
- Enable WooCommerce stock tracking and prepare a quantity of six.
- Disable caching for the test product page while you configure it.
Configuration Steps
- Open the product in the WordPress admin panel and enable
Bookable. - In the
Generaltab, verify the regular price. - In the
Inventorytab, enable stock management and set the quantity to six. - In the
Bookingstab, select two-date mode. - For calendar-day rentals, choose day-based calculation rather than nights.
- If the product cannot be rented for less than two days, set the minimum duration accordingly.
- In unavailable dates, disable Sunday as both a start and end date if pickup and return are not possible on that day.
- Save the product and clear the product page cache if caching is enabled.
How to Verify the Outcome
Open the product on the storefront. Select a multi-day period and make sure the price is recalculated. Add the product to the cart, complete a test order, then return to the product page and try selecting the same dates again. If the stock is six, one booking should not fully block the dates, but it should reduce availability. Create several more test orders or manual bookings until the selected dates become unavailable.
Then open Easy Booking > Reports and review the booking list. In the calendar view, it should be clear which dates the order covers. If manual bookings are enabled, enter one phone booking for the same product and verify that availability on the site changes accordingly.
The Detail That Most Often Breaks This Setup
If the product suddenly becomes unavailable for all selected dates after the first order, even though stock is greater than one, check the product quantity and make sure stock management is enabled. If the product remains endlessly available, stock management is probably not enabled. If the calendar does not appear at all, check the price, the product's stock status, the standard WooCommerce product page, and JavaScript errors in the console.
Working principle: start with one simple setup without discounts or complex blocking rules. Once that passes a test order, then add seasonal pricing, the shop page date filter, and manual import.
Verifying Everything Before Launching for Customers
Your testing should imitate both customer behavior and admin behavior, not just saving settings. For bookings, it is critical to follow the entire path: product page, calendar, pricing, cart, checkout, email, admin order, reports, post-order availability, cancellation, or date change. If you test only the calendar, you can easily miss an error in the cart or order flow.
Customer Test Path
- Open the product in a normal browser window without administrator privileges.
- Select valid dates and make sure the add-to-cart button is available.
- Check that the price before adding to cart matches your pricing logic.
- Add the product to the cart and confirm that the selected dates appear in the product line item.
- Complete a test order using a safe payment method.
- Open the order in the admin panel and verify the dates, duration, quantity, and price.
- Return to the product page and check availability for the same dates.
Administrator Test Path
After a test order, the administrator should know where to find the booking and how to work with it. Open Reports and review the list, calendar, and availability tabs. Then change the date inside the order or create a manual booking if that workflow matters for the business. After each action, check the public product page. This is the most reliable test because it shows not only the internal record, but also what the customer will actually see.
What to Check After Updates
After updating the plugin, WooCommerce, the theme, or caching and optimization extensions, repeat a short test path: select dates, confirm the price, add the product to the cart, place a test order, and check availability. The Easy Booking and Easy Booking Pro changelogs regularly include fixes related to WooCommerce, orders, availability, cache, database behavior, and scripts. That is a normal risk zone for any plugin that works close to the cart and checkout flow.
If an update affects the Pro feature set or discount logic, make a backup first and test the process on a copy of the site. Do not postpone updates forever, but do not apply them blindly in the middle of a busy booking season either.
Safe Improvements, Compatibility, and Small Customizations
Easy Booking documents a set of hooks and filters for developers, along with ready-made snippets for labels, pricing, cart behavior, orders, and availability. That is useful, but only if approached carefully. Do not edit the plugin's own files, and do not place code in the parent theme. Updates will wipe out your changes, and a PHP error can break the entire site. Use a child theme or a snippets plugin, and always test on a staging copy first.
Renaming the Start and End Labels for Your Audience
If the calendar shows labels that do not match your use case, they can be changed through documented filters. For example, accommodations are clearer with "Check-in" and "Check-out," while rentals may need "Pickup Date" and "Return Date." Below is a custom adaptation based on the official text filter example. Replace the strings to fit your own use case.
add_filter( 'easy_booking_start_text', 'my_booking_start_text', 10, 2 );
function my_booking_start_text( $text, $product = false ) {
return __( 'Pickup Date', 'woocommerce-easy-booking-system' );
}
add_filter( 'easy_booking_end_text', 'my_booking_end_text', 10, 2 );
function my_booking_end_text( $text, $product = false ) {
return __( 'Return Date', 'woocommerce-easy-booking-system' );
}
After saving, open the product page and verify the calendar labels. If the site is multilingual, do not hardcode the translation without considering your language plugin. Check how the strings appear in each language version. Rolling back is simple: disable the snippet and clear the cache.
Supporting Custom Order Statuses
If the store uses a deposits extension, installment payments, or custom order statuses, availability may appear incorrect: the order exists, but Easy Booking may not treat it as occupied inventory. In the FAQ, the developer provides an example using the easy_booking_get_order_statuses filter to add a custom status. Below is the same principle in a cautious form: add only statuses that actually exist on your site.
add_filter( 'easy_booking_get_order_statuses', 'my_easy_booking_order_statuses', 10, 1 );
function my_easy_booking_order_statuses( $statuses ) {
$statuses[] = 'wc-partially-paid';
return $statuses;
}
Testing is required: create a test order with that status, choose the same period on the product page, and see whether the available quantity changes. If the outcome unexpectedly blocks too many dates, disable the snippet and review your stock settings. Do not add statuses that do not represent real resource occupancy.
Using It with Product Add-Ons and Deposits
The developer separately documents compatibility with WooCommerce Product Add-Ons and WooCommerce Deposits as third-party extensions. In practical terms, that means Product Add-Ons can attach extra options to a bookable product, such as breakfast, insurance, or an accessory kit, while Deposits can collect a deposit instead of full payment. But that does not mean you should enable them without testing.
Safe setup order:
- First, get booking and price calculation working correctly without any third-party extensions.
- Add one extra option and check whether its cost is included in the total the way you expect.
- If you use deposits, test the public product page, cart, checkout, and the resulting order status after payment.
- If the order status is non-standard, verify whether Easy Booking treats that booking as occupied in availability calculations.
- If there is a conflict, disable extensions one by one, starting with the most recently added one.
Do not describe this as a broader official integration beyond what the documentation actually confirms. It is a practical setup based on compatibility described by the developer and WooCommerce's standard order model.
Localization, Multilingual Stores, and Clear Customer-Facing Text
For a booking store, what matters is not only the technical handling of dates, but also the wording users see. Customers need to understand exactly what they are choosing: a pickup date, a return date, check-in, check-out, an event date, or a rental period. If the labels are unclear, a user may choose the correct dates but misunderstand the service terms. That is why Easy Booking Pro localization is part of the user experience, not just a cosmetic detail.
WordPress.org notes that the base Easy Booking plugin is translated into several locales, and the official FAQ separately covers problems related to calendar translation files. In practice, that means there are two different tasks. The first is translating ordinary interface strings so they sound natural on the site. The second is making sure the JavaScript calendar loads the locale file that matches the WordPress language or the site's language version.
How to Check Front-End Labels
Open the product as a regular customer and look at the page through the eyes of someone who does not know the plugin's internal behavior. A good product page answers three questions without forcing the customer to contact support: from what date the item is occupied, when it must be returned, and how the price depends on the selected period. If the customer sees technical labels or wording that is too generic, use the documented text filters or your site's translation system.
For accommodations, "Check-in" and "Check-out" are usually the clearest labels. For equipment rentals, "Pickup Date" and "Return Date" work better. For a one-day event, "Visit Date" or "Participation Date" may be more appropriate. Do not apply the same labels to the entire catalog if your store mixes different kinds of offers. The documented filters do not accept the product object in every context, so more advanced per-product logic may require careful testing or developer help.
Multilingual Sites and Product Language Versions
The official features page lists compatibility with multilingual plugins as a general direction, but that does not remove the need to test your specific site setup. In a multilingual WooCommerce store, there are usually several layers involved: product translation, attribute translation, plugin string translation, date format, currency, and language-specific caching rules. A problem at any of those layers can look like an Easy Booking issue even when the real cause is a broken translated string or the cache serving the wrong language version.
Test each language version separately. Select dates, add the product to the cart, and check how the start date, end date, duration, price suffix, and order email data are displayed. If you use a language plugin, make sure bookable products are correctly linked across languages, and that availability rules apply to the products that are actually being sold. This matters even more for shared availability: two translated versions of the same resource should not accidentally behave like two separate inventories if the physical resource is only one.
Calendar Locale File Errors
The FAQ describes a case where the user sees an invalid date message because the JavaScript calendar locale file is missing or incorrectly named. Do not try to fix that by changing booking rules before checking the browser console. If the console shows a request for a missing locale file, solve the translation issue first. After that, clear the cache and try selecting dates again.
If there is no ready-made file for your locale, it is better to check the documentation and contact the developer's support. Manually copying a similar locale can be a temporary workaround on a staging copy, but for a live site it is important to understand that such a file may be affected by updates. Record any such change in the project's technical notes so another administrator does not have to rediscover the cause later.
Exports, Availability Reconciliation, and Team Workflows
Once the number of bookings grows, an administrator can no longer rely on looking at a single order. You need a reconciliation workflow: which dates are occupied, which orders start soon, which bookings were added manually, what was sent to external tracking, and where a mismatch might appear. Easy Booking Pro provides reports, a calendar, an availability tab, and export features. These tools become useful when the team agrees in advance on how they will be used.
Exporting Bookings Without Unrealistic Expectations
The documentation describes export from Easy Booking > Reports > Bookings. Before exporting, you can filter bookings and then choose a format: JSON, XML, CSV, or iCal. By default, the export includes basic booking data: product ID, start date, end date, and quantity. Completed bookings are not included by default unless the corresponding status is selected in the filters.
That leads to a practical conclusion: export works well for availability checks and for passing along a minimal calendar dataset, but you should not expect a full CRM-style export with customer names, payments, and full order history unless you add custom work. If you need extra fields, the documentation shows filters for customizing exported data, but that is already a developer-level task. Make those changes only through a child theme or Code Snippets, and test the exported file on a small set of records first.
How to Organize a Daily Check
For a small rental business or accommodation property, a simple daily process is enough. In the morning, the staff member opens the booking calendar, checks upcoming starts and ends, and then reviews availability for the most in-demand products. If phone bookings came in, they are entered manually before the manager confirms the period to the customer. At the end of the day, the team can export current bookings if they maintain a separate spreadsheet or pass the schedule to warehouse staff.
It is important to separate roles. A manager may accept the request and create the order, but the person responsible for handing over the product should see the final calendar. If both people change the same dates without clear rules, mismatches become likely. Establish one simple rule: every manual booking or date change inside an order must be verified on both the public product page and in Reports. It takes a minute, but it prevents double bookings.
How to Handle Cancellations and Rescheduling
A booking can be canceled in several ways: refunding an order item, deleting a line item, canceling the order, or manually deleting an imported record. The order documentation notes that availability should update automatically, but if it does not, you can use the inventory initialization tool in Easy Booking tools. So for rescheduling or cancellations, it is worth defining one clear internal process.
- Find the source of the booking: a WooCommerce order, a manual import, or a CSV record.
- Make the change in the correct place: do not create a second record if the existing one only needs to be edited.
- Check the price: when order items are added or edited manually, the price may not recalculate automatically.
- Verify availability: open the product for both the old dates and the new dates on the storefront.
- Notify the customer: WooCommerce emails and any manual notifications should match the actual dates.
If availability still does not match expectations after a reschedule, do not make a series of random edits. First check the order status, quantity, product or variation, and only then use the stock recalculation tool. After that, investigate possible conflicts with custom statuses or third-party plugins.
Troubleshooting Common Problems
Most Easy Booking Pro problems appear at the intersection of WooCommerce, the theme, caching, JavaScript, and date rules. Below are the symptoms most consistently supported by the FAQ, documentation, and typical support forum discussions. Move from simple to complex: start with the product, price, and stock status; then check the theme, scripts, cache, duration rules, Pro availability, and only after that any custom snippets.
Date selection fields are missing on the product page
Symptom: the product page opens, but the calendar does not appear next to the add-to-cart button. First, check that the product is purchasable: it has a price, it is in stock, and it is marked as Bookable. For a variable product, check both the parent product and the specific variations.
Possible cause: the theme may not output the required WooCommerce hook before the add-to-cart button. In the FAQ, the developer identifies woocommerce_before_add_to_cart_button as a critical point for standard product pages. A quick test is to temporarily switch to a default compatible theme on a site copy. If the calendar appears, the issue is in the theme templates.
How to fix it: contact the theme developer or restore the standard WooCommerce hooks through a child theme. Do not remove or rename hooks in product templates. If the product page is built with a page builder or shortcode, verify that your output method supports loading Easy Booking scripts.
Nothing happens when clicking the date field
Symptom: the field is visible, but the calendar does not open. This is almost always script-related: a JavaScript conflict, cache issue, bundled assets, the page is not a standard product page, or the calendar script failed to load.
What to check: open the browser console in developer tools and look for errors. Then temporarily disable JavaScript minification and bundling, clear the browser cache, plugin cache, and server-side cache. If the calendar starts working after disabling other plugins, re-enable them one by one.
When to roll back a setting: if a speed optimization plugin breaks the calendar on the product page, exclude that page or the relevant scripts from aggressive optimization. Do not leave the site in a state where the calendar works for the administrator but not for regular users.
The message "Please select valid dates" appears
Symptom: the user selects dates, but the system reports that the dates are invalid. The FAQ describes two common causes: the calendar translation file is not loading, or another plugin loads similar date scripts. It can also be a conflict between duration rules, unavailable dates, and remaining stock.
What to check: start with the browser console and any file-loading errors. If a translation file is missing, check the translations folder and the locale filename. Then review minimum and maximum duration settings, blocked dates, and availability for the selected dates. If the error appeared after enabling a new profile or calendar plugin, temporarily disable it on a staging copy.
How to fix it: update translation files, clear the cache, resolve script conflicts, or simplify the date rules. If a specific conflict requires a snippet, take it from the developer's current FAQ and test it in a child theme or Code Snippets.
Price is calculated incorrectly after discounts or seasonal rules
Symptom: the price on the product page, in the cart, or in the order does not match the expected calculation. Possible causes include the wrong Days/Nights mode, a discount rule intended for two-date mode applied to the wrong product, a product rule overriding a global one, a variation overriding the parent product, or Cumulative mode being used instead of Normal.
How to check: disable all extra rules and leave only the base price. Then enable them one at a time: first duration, then seasonal pricing, then discount or surcharge. After each step, select the same dates and record the outcome. This simple log will show much faster where the calculation changes.
Availability is wrong after an order
Symptom: dates should be occupied but remain available, or the product becomes blocked too broadly. Check whether WooCommerce stock management is enabled globally and on the product itself, what quantity is set, where stock is managed for a variable product - on the parent or on the variations - and whether any custom order statuses are being counted.
How to fix it: if the data becomes inconsistent after order changes, use the stock initialization tool in Easy Booking > Tools, as recommended in the FAQ. If the store uses custom statuses, add them through the documented filter only after testing on a copy of the site.
You cannot turn off Bookable for individual products
Symptom: you disable booking on a product, but it keeps coming back. Check the global All bookable setting. If it is enabled, new and edited products automatically become bookable. For a mixed catalog, it is usually better to disable that option and enable booking manually only on the products that need it.
The date filter on the shop page does not affect the product list
Symptom: the block is visible, but products are not filtered or the selected dates are not passed into the product page. Check that the block is placed on the shop page or a product archive, not on an arbitrary page. Then confirm that the products are actually configured as bookable and use availability management if you expect inventory-based filtering.
Questions About Easy Booking Pro Setup and Limitations
Can I use the plugin without WooCommerce?
No. Easy Booking Pro is tied to WooCommerce in practical terms. The base Easy Booking plugin and the Pro extension work on top of WooCommerce products, the cart, orders, and store settings. If your site does not use WooCommerce, first decide whether the store-based model actually fits your use case.
Why does the product need a price if the booking is free?
The documentation states that simple products and variations must have a regular price for the product to be purchasable. If you need to remove the price calculation, use the documented filter or setting, but first check how that affects the cart, order, and emails. Do not remove the price randomly, or the calendar may stop appearing.
Can customers choose dates in the cart or on the checkout page?
The developer states that dates are selected separately on each product page. This matters for stores that allow multiple bookable products in one order. If you need one shared date range for the whole cart, you will need additional custom logic or a different solution.
Is Easy Booking Pro suitable for hourly appointments?
It is not the best fit for hourly appointments. The plugin is designed around either one date or a date range. A workaround using time options as variations is possible, but it is not ideal for a real schedule. For consultations, classes, and appointments, it is better to use a solution where time is a core part of the booking model.
Why does the calendar not work on a page built with a page builder?
The developer's FAQ warns that Easy Booking is designed for standard WooCommerce product pages, and on pages built with shortcodes or page builders, the scripts may not load. Check the regular product page. If the calendar works there, the problem is in how the page is rendered, not in the product itself.
How do I limit the number of bookings per day?
To limit bookings by quantity per date, you need the Pro inventory management logic. Enable global WooCommerce stock tracking, then enable stock management on the product or variation and enter the real quantity. After a test order, check the remaining quantity for those same dates.
What should I do if an update breaks the calendar or pricing?
First clear the browser cache, plugin caches, and server-side cache, then check the product page in a clean browser window. If the problem remains, temporarily disable JavaScript optimization and inspect the browser console. For major Pro feature updates, test on a copy of the site and keep a backup ready.
Can I adapt the calendar labels for my site?
Yes. The documentation includes filters for Start, End, date-selection text, the price suffix, and other elements. Use a child theme or Code Snippets, test the result across all site languages, and do not edit the plugin files directly.
When Easy Booking Pro Is the Right Choice
Easy Booking Pro is worth using if your site already runs on WooCommerce and your new requirement is to book a product, resource, or service by date. Its strength is not that it tries to replace every scheduling system, but that it adds a calendar, period calculation, date-based availability, blocked days, flexible pricing, and admin reports to a standard product.
Before launch, verify three things: the customer is choosing a date or date range, the WooCommerce product model genuinely fits your business, and your theme and cache do not interfere with the standard product page. Then configure one test product, follow it all the way through to an order, check the reports, and only after that apply the rules to the live catalog.
If the logic matches your needs after that, you can download the installation file and test it on a site copy or a separate product. The best rollout here is not to "turn on every feature," but to build a reliable chain step by step: date, price, availability, order, report, and clear troubleshooting for the administrator.


