Generic filters
Automatic updates Yes
Version 5.3.9
Updated on
Virus Total See Report

BookingWP | WooCommerce Appointments is a powerful WordPress plugin that seamlessly integrates with WooCommerce. It allows businesses to manage and schedule appointments directly from their website. With user-friendly features and customizable options, it enhances the booking experience for both businesses and customers.

How to download BookingWP | WooCommerce Appointments

Unlimited Access

Subscribe for only €10.90

Or

Get this product only with unlimited updates

Already included languages : EN, DE, ES, FR, IL, IT, NL, SI

We are not affiliated with BookingWP | WooCommerce Appointments nor its developers or owners. Please read the full disclaimer in footer.

HOW IT WORKS

Auto updates with Club WPress plugin

Check how to install and update your WordPress plugins and themes in ONE CLICK directly from your Dashboard.

ClubWordPress Updater Plugin

BookingWP | WooCommerce Appointments Plugin

In the ever-evolving world of e-commerce, businesses are constantly seeking ways to streamline their operations and enhance the customer experience. One of the most effective ways to achieve this is by integrating a robust booking system into your website. For WordPress users, the BookingWP | WooCommerce Appointments plugin offers a comprehensive solution that seamlessly integrates with WooCommerce, providing a powerful tool for managing appointments and bookings. In this article, we will delve into the features, benefits, and practical applications of the BookingWP | WooCommerce Appointments plugin.

Overview of BookingWP | WooCommerce Appointments

The BookingWP | WooCommerce Appointments plugin is designed to transform your WooCommerce store into a fully functional appointment booking platform. Whether you run a salon, clinic, consultancy, or any other service-based business, this plugin offers a range of features to help you manage appointments efficiently. By leveraging the power of WooCommerce, the plugin ensures a seamless integration with your existing e-commerce setup, allowing you to manage products and appointments from a single interface.

Key Features

The BookingWP | WooCommerce Appointments plugin boasts a plethora of features that cater to the diverse needs of businesses. Some of the key features include:

  • Flexible Appointment Scheduling: The plugin allows you to set up flexible appointment schedules, including buffer times, lead times, and padding times, ensuring that you can manage your time effectively.
  • Google Calendar Integration: Sync your appointments with Google Calendar to keep track of your schedule effortlessly.
  • Customizable Booking Forms: Create and customize booking forms to collect the information you need from your clients.
  • Multiple Staff Management: Assign appointments to different staff members and manage their schedules individually.
  • Automated Email Notifications: Send automated email notifications to clients and staff members to keep them informed about upcoming appointments.
  • Payment Integration: Accept payments for appointments through WooCommerce’s extensive range of payment gateways.
  • Time Zone Support: The plugin supports multiple time zones, making it ideal for businesses with a global clientele.
  • Custom Availability: Set custom availability for specific dates, holidays, or special events.

Benefits of Using BookingWP | WooCommerce Appointments

Implementing the BookingWP | WooCommerce Appointments plugin offers numerous benefits for both businesses and their clients. Some of the key advantages include:

  • Improved Efficiency: Automate the booking process and reduce the need for manual intervention, freeing up time for other important tasks.
  • Enhanced Customer Experience: Provide a seamless and user-friendly booking experience for your clients, increasing customer satisfaction and loyalty.
  • Streamlined Operations: Manage appointments, staff schedules, and payments from a single platform, simplifying your business operations.
  • Increased Revenue: Maximize your revenue potential by offering online booking and payment options, making it easier for clients to book your services.
  • Better Time Management: Utilize features like buffer times and lead times to ensure that you have adequate time between appointments, reducing the risk of overbooking.
  • Scalability: The plugin is designed to grow with your business, allowing you to add more staff members, services, and appointment slots as needed.

Practical Applications

The versatility of the BookingWP | WooCommerce Appointments plugin makes it suitable for a wide range of businesses. Here are some practical applications:

  • Salons and Spas: Manage appointments for haircuts, massages, facials, and other beauty treatments with ease.
  • Medical and Dental Clinics: Schedule patient appointments, manage staff availability, and send appointment reminders.
  • Consultancies: Allow clients to book consultations, meetings, and coaching sessions online.
  • Fitness Centers: Schedule personal training sessions, group classes, and other fitness services.
  • Educational Institutions: Manage appointments for tutoring sessions, workshops, and other educational services.
  • Event Planning: Schedule appointments for event consultations, venue tours, and other event-related services.

Setting Up BookingWP | WooCommerce Appointments

Setting up the BookingWP | WooCommerce Appointments plugin is a straightforward process. Here is a step-by-step guide to get you started:

Step 1: Install and Activate the Plugin

First, you need to install and activate the BookingWP | WooCommerce Appointments plugin. You can do this by navigating to the WordPress dashboard, clicking on “Plugins,” and then selecting “Add New.” Search for “BookingWP | WooCommerce Appointments,” and click “Install Now.” Once the installation is complete, click “Activate.”

Step 2: Configure General Settings

After activating the plugin, go to the “Appointments” tab in the WooCommerce settings. Here, you can configure general settings such as time zone, date format, and time format. Make sure to save your changes.

Step 3: Set Up Services

Next, you need to set up the services you offer. Go to the “Services” tab under “Appointments” and click “Add New Service.” Enter the service name, description, duration, and price. You can also set up buffer times, lead times, and padding times for each service. Save your changes once you have configured the service details.

Step 4: Add Staff Members

If your business has multiple staff members, you can add them under the “Staff” tab. Click “Add New Staff,” enter the staff member’s name, email, and availability. Assign the staff member to specific services and save your changes.

Step 5: Customize Booking Forms

To collect the necessary information from your clients, you can customize the booking forms. Go to the “Forms” tab and click “Add New Form.” Use the drag-and-drop builder to add fields such as name, email, phone number, and any other information you require. Save the form once you are satisfied with the layout.

Step 6: Enable Payment Options

To accept payments for appointments, you need to enable payment options through WooCommerce. Go to the “Payments” tab in the WooCommerce settings and configure your preferred payment gateways. Ensure that the payment options are enabled for the appointment services.

Step 7: Integrate Google Calendar

To keep track of your appointments, you can integrate Google Calendar with the plugin. Go to the “Google Calendar” tab under “Appointments” and follow the instructions to connect your Google account. Once connected, your appointments will be synced with Google Calendar automatically.

Conclusion

The BookingWP | WooCommerce Appointments plugin is a powerful tool that can transform the way you manage appointments and bookings. With its extensive range of features and seamless integration with WooCommerce, it offers a comprehensive solution for businesses of all sizes. By automating the booking process, enhancing the customer experience, and streamlining operations, the plugin can help you achieve greater efficiency and profitability. Whether you run a salon, clinic, consultancy, or any other service-based business, the BookingWP | WooCommerce Appointments plugin is a valuable addition to your WordPress toolkit.

List of improvements in BookingWP | WooCommerce Appointments version 5.3.9

  • 2026.05.25 version 5.3.9
  • Improvement Improved admin panel styling with bigger input selection.
  • Improvement Admin panel create/edit: datetime row shows a loading state while product details, first-available auto-pick, day slots, or availability AJAX run; success/error only after the check completes.
  • Performance Admin panel create: first-available auto-pick scans the bookable horizon in 14-day chunks and stops at the first slot instead of loading the full range up front.
  • Fix Admin panel create: availability no longer flashes loading twice or clears to blank before first-available prefill; date-only calendar prefill waits for day slots before checking; browse does not re-open after the user closes it during the same unavailable episode.
  • Fix Admin panel: datetime loading no longer sticks when day-slot AJAX fails or returns empty, when a superseded availability request aborts, or while bootstrap waits only on an in-flight slots request (not missing cached data).
  • Fix Slots / day & month products: timed global RRULE blocks (e.g. weekly Tue 4–6pm) block the whole civil day again — date-level checks use RRULE occurrence expansion, not midnight-only overlap, so higher-priority global rules override product day rules (`RuleMinutesRruleCivilDayTest`).
  • Fix Admin panel browse: slot chips show remaining capacity (e.g. **1 available**) on multi-capacity products when only one place is left, not only when two or more remain.
  • Fix Slots: dynamic availability (indexing off) paints full half-open unappointable ranges on the minute mask — priority blocks no longer leave appointable boundary minutes (e.g. 10:00–11:00 block showing 10:59 slots); matches indexed mask painting.
  • Fix Slots / calendars: minute/hour bookings that start at site midnight (including long durations such as 12 hours) block capacity again — timed overlap day-keys use Fake UTC site civil buckets for both occupancy indexing and slot lookup instead of mixing wp_date() site midnight with the civil UTC-midnight fast path.
  • Fix Slots / calendars: multi-day day-unit occupancy for admin-created (site-local midnight) bookings — civil overlap keys use the site calendar date (Fake UTC) so every booked day blocks correctly (e.g. June 4–5 for a 2-day booking starting June 4); `wc_appointments_get_posted_data()` stores matching Fake UTC start/end for new day/month appointments.
  • Fix Slots / calendars: multi-day day-unit products block every booked civil day again — occupancy uses live appointments; overlap day-keys use timezone-agnostic civil dates (gmdate on stored tokens), matching slot tokens, not wp_date() site-local midnight.
  • Fix Admin panel **create**: first available date/time via one AJAX call (`WC_Appointment_Slots_Provider::get_first_available_slot`, same as storefront), including when the first slot is outside the current month; calendar day click/drag date-only prefill auto-picks the first time or opens browse once with `noSlotsOnDateSelect` when that day has no slots; browse auto-opens only on unavailable validation (not during silent auto-pick) and stays dismissible (no immediate re-open after close until date or product changes); live preview placeholder while slots load; panel expands when the product form is ready.
  • Fix Slots / calendars: minute/hour day availability (storefront `day_data`, admin mini-calendar, time-slot lists) counts only bookable slot starts via shared `WC_Appointment_Slots_Collection::slots_for_day_summary()` on the same `get_collection()` engine — fully booked days no longer stay selectable when only sub-duration engine segments remain.
  • Fix Slots / time picker: **Availability check → The starting slot only*no longer lists grid starts in appointable fragments shorter than the booking duration (phantom evening slots such as 19:00 on 12h/12h products when the index leaves a tail after a gap); full-day ranges still allow starts when duration exceeds the window (e.g. 25h in 24h).
  • Fix Checkout validation (`WC_Appointment_Cart_Manager::validate_appointment_order`): re-validates cart slots via `WC_Appointments_Controller::get_indexed_total_available_for_range()` (same `slot_matches_requested_range` tolerance as add-to-cart) instead of strict `start_ts` equality; **all staff together*uses staff id `0` fan-out like `is_appointable()`; in-cart holds are excluded from overlap during the check.
  • Fix **Staff all together:*cart booking no longer collapses multi-staff `_staff_ids` to a single `_staff_id` during `WC_Appointment_Booking_Handler::create_appointment()` availability merge.
  • Fix Admin panel: **WooCommerce Deposits*on create — `calculate_costs` / `create_appointment` honour deposit choice and tax display (incl./excl. catalog); deposit footer quote and order item meta (`_deposit_full_amount`, etc.) match storefront; pay-deposit hides footer price edit (product deposit rules); pay-in-full edits full service price via `raw_full_price`; mistaken deposit-only overrides corrected on save.
  • 2026.05.20 version 5.3.9-beta
  • Breaking change Removed `WC_Appointments_Controller::find_padding_day_slots()`, `get_padding_day_slots_for_scheduled_days()`, and `find_scheduled_month_slots()`. Use `WC_Appointment_Slots_Provider::get_padding_days_for_product()`, `get_padding_days_for_fully_booked_dates()`, and `get_scheduled_month_slots()`.
  • Breaking change Removed `WC_Appointments_Controller::find_scheduled_day_slots()`, `WC_Appointment_Slots_Provider::get_scheduled_day_slots()`, and `WC_Appointment_Slots_Collection::legacy_scheduled_arrays_from_day_data()`. Use `get_day_data()` / `to_day_data()`; padding anchors from fully booked `day_data` (`get_padding_days_for_fully_booked_dates()`, `Y-n-j` keys); months via `get_day_data(…, ‘Y-n’)`. `woocommerce_appointments_scheduled_day_slots` runs inside `get_day_data()` with the `to_day_data()` payload (not legacy four-array shapes).
  • Breaking change Calendar AJAX `wc_appointments_find_scheduled_day_slots` no longer returns legacy keys (`partially_scheduled_days`, `remaining_scheduled_days`, `fully_scheduled_days`, `unavailable_days`, `padding_days`, `restricted_days`) or invokes that filter at the AJAX layer. Read `day_data` / `meta`, filter the JSON response, or use `get_day_data()` in PHP where the filter still applies.
  • Improvement Unified `day_data`: storefront calendar is `day_data`-only — per-day `padding` / `restricted`, full per-staff occupancy fields, redundant `display_day_summaries` removed; `to_day_data()` optional fold-in; availability widget/block use `get_day_data()` with `selectable`; `resolve_schedule_bounds()` maps Unix `0` to the booking horizon.
  • Improvement Padding and fully-booked month aggregation call `get_padding_days_for_product()`, `get_padding_days_for_fully_booked_dates()`, and `get_scheduled_month_slots()` (`get_day_data()`-based).
  • Improvement Storefront `date-picker.js`: removed legacy four-array branch and `is_slot_appointable`; removed unused `getTzOffsetFromString` / `getCustomerTzOffsetMinutes` (offset still server-supplied on AJAX).
  • Improvement `get_rest_records()` date-range mapping uses `wp_date()` / `wp_timezone()` instead of `date()` / `strtotime()`.
  • Improvement **WPML / WCML:*admin appointment panel **create*— independent multicurrency selector (`integrationCurrency` on `wc_appointments_admin_panel_config`); appointment-currency cookie + `wcml_client_currency` on panel cost, add-on, and set-currency AJAX; WCML loads in admin for those actions; rate conversion via pricing-rule filters, `wc_price_args`, and WCML `get_product_addons_fields` (add-ons refetch on currency change); footer total from server `calculate_costs` HTML; `_order_currency` on `woocommerce_new_appointment_order`; legacy add-appointment page unchanged.
  • Improvement **WooCommerce Payments Multi-Currency:*admin appointment panel **create*— independent multicurrency selector (same `integrationCurrency` pattern as WCML); appointment-currency cookie + `wcpay_multi_currency_override_selected_currency` filter for exchange rate conversion on panel cost AJAX; addon prices converted via `woocommerce_product_addons_*_price_raw` (WC Payments skips admin); `_order_currency` persisted on `woocommerce_new_appointment_order`. WCML takes priority when both plugins are active.
  • Improvement Admin appointment panel **create**: **WooCommerce Deposits*— deposit / pay-in-full / plan UI (storefront POST keys), line totals and meta on `wc_appointments_create_appointment`, `_wc_deposits_version` when applicable; product AJAX exposes `wc_deposits`; compact amounts in `wca-slots-header` / `wca-slots-count`.
  • Improvement Admin panel browse: time slot chips use a four-column equal-width grid (`.wca-slots-grid` / `.wca-slot-chip` in `appointment-admin-panel.scss`).
  • Improvement Google Calendar OAuth (settings + staff profile): [Google Identity branding]( — **Continue with Google**, `assets/images/google-g-mark.svg`, shared markup via `WC_Appointments_GCal::get_google_oauth_connect_button_html()`.
  • Improvement Admin panel: `woocommerce_appointments_add_appointment_page_redirect` gains a 5th string `$context` (`legacy_post`, `admin_ajax_standalone`, `admin_ajax_calendar`); full admin calendar never returns `post_create_redirect` (callbacks may still read context).
  • Improvement Update translations (+7 new strings, -2 strings removed).
  • Improvement Settings → Indexing: during manual re-index, an admin notice explains the storefront uses dynamic availability checks until rebuild finishes (availability stays correct; performance may be slower during rebuild).
  • Fix Storefront auto-select with `woocommerce_appointments_include_sold_out`: slots AJAX picks the first bookable time from the availability collection (marks it `selected` in HTML); the time picker applies that server selection instead of the first listed slot when sold-out rows are shown.
  • Fix Auto-select slot highlighting: match engine `start_ts` directly and compare unified `display_time` with `gmdate()` on Fake UTC timestamps so `wp_date()` does not shift the selected row (e.g. 10:00 marked as 12:00).
  • Fix Storefront time picker: rapid date changes with auto-select no longer apply a stale slots AJAX response (wrong time/timestamp for the selected day); cost calculation ignores superseded responses before enabling add to cart.
  • Fix Storefront time picker: multiple appointment forms on one page (shortcodes/blocks) scope slots, autoselect, and `date-selected` per `.wc-appointments-appointment-form` widget again.
  • Fix Storefront cost calculation: multiple appointment forms on one page no longer share one AJAX slot via `form.index()` (earlier forms were left loading while only the last form showed a price).
  • Fix CSV appointment export **Cost**: linked order lines use `WC_Order::get_line_total( $item, true )` (after discounts, incl. tax) instead of stored `_appointment_cost`; appointments without a line still use stored cost.
  • Fix Appointment export **Products*filter: `woocommerce_json_search_appointable_products` returns plain-text labels (fixes raw HTML in Select2); admin product lists keep HTML labels.
  • Fix All-day civil dates: `WC_Appointment::get_start_date()` / `get_end_date()` and all-day email branches use `wp_date()` so local-midnight UTC storage does not show the wrong calendar day vs other `wp_date()`-based flows.
  • Fix All-day **reschedule*(`WC_Appointment_Form_Handler`): persists posted `_start_date` / `_end_date`, sets `all_day`, clears `local_timezone`, skips form timezone metadata. **New bookings*(`WC_Appointment_Booking_Handler`): all-day day/month products skip the legacy `strtotime()` pass so instants match the posted-data pipeline (night bookings unchanged).
  • Fix **Settings → Appointments*global availability: synced Google Calendar rows (`#availability_rows_synced`) merge into submit JSON with site rules so reorder/`ordering` persist; `rrule` rows expose `data-wca-rrule` and include `rrule` for `is_rule_valid` on save.
  • Fix Admin appointment panel **create**: manual price override when **prices are entered inclusive of tax*no longer double-applies tax-inclusive→net conversion; saved order line matches the edited gross price.
  • Fix Admin day slots: with `woocommerce_appointments_slots_display_pricing`, `price.display` matches storefront `serialize_slots()` (staff-aware default; ``/`` only when `WC_Appointment_Slots_Pricing::is_slot_price_discounted()`).
  • Fix **Restrict start days:*`WC_Product_Appointment::is_appointable()` weekday uses the civil posted `_date` with **UTC noon + `gmdate( ‘w’ )`*(Gregorian, TZ-agnostic; matches day slot / Fake UTC digits); falls back to `gmdate( ‘w’, _start_date )` if `_date` is missing or unparsable. Avoids `date( ‘w’, … )` under PHP default UTC wrongly rejecting allowed starts.
  • Fix Completed appointments now persist customer status as `arrived`, so `_appointment_customer_status` and CSV appointment exports no longer remain `expected` after automatic completion.
  • Fix Admin panel **create*billing: restored **Country / Region*and **State / County*(`wcaPanel.billingCountries` / `billingStates`); country, state, and payment `

DISCLAIMER

All items contained within this site are developed by third party developers and redistributed under the terms of the GNU General Public Licence (GPL). ClubWPress.net is not affiliated with any third party developers or their plugins and themes. The WordPress® trademark is the intellectual property of the WordPress Foundation, and the Woo® and WooCommerce® trademarks are the intellectual property of WooCommerce, Inc. Uses of the WordPress®, Woo®, and WooCommerce® names in this website are for identification purposes only and do not imply an endorsement by WordPress Foundation or WooCommerce, Inc. Uses of all other trademarks in this website are for identification purposes only and do not imply an endorsement by the respective trademark owners. ClubWPress.net is not endorsed or owned by, or affiliated with, the WordPress Foundation, WooCommerce, Inc, or any other developer or company whose products we redistribute.