Skip to main content

Appointments Changelog

A comprehensive record of all changes, improvements, and fixes made to the WooCommerce Appointments plugin across all versions.

Badges:LatestCurrent stable releasePre-releaseBeta, RC, or alpha version

[5.3.1.2] - April 8, 2026

Latest

Fixes

  • Admin panel: resolved "Call to unknown method: WC_Product::get_staff_ids()" by ensuring it is only called on valid appointment products with the missing method check.
  • Product Add-Ons duration + padding: storefront cost/availability checks for time-based products now include padding in extended-range slot coverage, preventing false "Sorry, the selected slot is not available." when add-ons extend duration across slot boundaries.

[5.3.1.1] - April 8, 2026

Fixes

  • Storefront time slots: full selected calendar day in the customer timezone as UTC bounds, not server-default strtotime(Y-m-d); interval padding uses minutes, not seconds.
  • Slots provider: store-local range via wp_date / DateTimeImmutable, with ±1 day widening for timezone hour/minute products and a higher widen cap so boundary-crossing slots are not clipped.
  • Storefront time-slot list: day filter uses wp_date in the display timezone (anchored on from) so widened slot queries do not show adjacent calendar days.
  • Multi-day day-unit products: picker reads bottleneck capacity from the start date only, matching checkout instead of treating continuation days as fully unavailable.

[5.3.1] - April 7, 2026

Fixes

  • WooCommerce Deposits: paying the balance on a follow-up order no longer forces the original (parent) appointable order to Processing; order status is left to the deposits extension, matching simple-product behavior.
  • Product Add-Ons (duration): add-on minutes extending past the last full grid step no longer invalidate the slot when the booking still fits before close; engine clips to appointable hours and grouped time-slot lists omit partial starts.
  • Multi-day day-unit products: storefront and admin pickers no longer allow starts that span into a fully blocked day; slot capacity, day_data merge rules, and multi-day calendar checks align with checkout validation.
  • “Per day” quantity (hour/minute products): after daily capacity is reached, the rest of that calendar day is unavailable in storefront slots and admin get-slots AJAX, without changing core overlap math.
  • “Per day” + multiple staff: staff-assigned appointments are no longer duplicated into the aggregate (no-staff) day bucket, so one staff hitting daily capacity does not clear the whole day for every other staff.
  • Admin panel: WooCommerce admin.css is now enqueued on every panel load so WC form/select styling is present on non-WooCommerce admin screens.

[5.3.0] - April 7, 2026

Improvements

  • Admin panel: integrated WordPress admin color schemes for consistent styling across management interfaces.
  • Code quality: expanded static analysis coverage to resolve linting warnings, translation placeholder clarifications, and PHP 8.1+ deprecation notices.

Fixes

  • Admin panel: editing an appointment no longer marks its own date/time as unavailable; AJAX now passes appointment ID and excludes it from overlap/booked counts when editable and product-matched.
  • Admin panel browse slots (edit mode): selected-date slots now include the current appointment's own slot (editing_appointment_id passed to day-slots AJAX with overlap exclusion).
  • Month duration products: month iteration now uses store timezone via wp_date() instead of UTC DateTime('@timestamp'), and uses end_ts - 1 for exclusive-end month boundary alignment.
  • Storefront timezone picker: timezone changes now update wc_appointments_timezone user meta for logged-in staff/managers too; booking form prioritizes user meta over cookie to prevent stale zone reloads.
  • Frontend calendar (hour/minute products): wc_appointments_find_scheduled_day_slots now resolves customer timezone from product timezone and display_timezone POST before cookie fallback.
  • Frontend date picker: customer timezone now resolves from #wc_appointments_field_timezone first, then cookie; calendar AJAX sends display_timezone and month cache key includes it.
  • Slots collection / legacy adapter: offset-shifted hour/minute customer-day bucketing now uses site-timezone wp_date() and site-local midnight anchors (not UTC/strtotime('Y-m-d')) with stable legacy keys.
  • Admin panel: Product Add-Ons file upload in create flow now sends real FormData file ($_FILES) instead of fake input path (C:\fakepath\...).
  • Admin panel: product AJAX search now stores plain labels for React/options while Select2 templates render styled product ID and assigned-to-you hints with shared CSS classes.
  • Admin panel (create/edit, timed products): when display timezone differs from site timezone, get_day_slots no longer includes prior-day slots for selected date; filtering aligns with admin_time/admin_date conversion path.
  • Appointment slots: resolved future-date (e.g., Aug 2026) 2-hour timezone shift by aligning engine time-snapping anchor with plugin Fake UTC architecture.
  • Appointment slots: aligned slot indexer and engine handling so UTC timestamps are treated as neutral wall-clock hours, preventing DST drift.
  • Availability rules: corrected RRule boundary calculations to use site-local timezone context, fixing false-unavailable future slots.
  • Admin panel: resolved PHP 8.1+ "Using null as an array offset" deprecation warning in order item table via targeted interception around internal WooCommerce templates.
  • SCSS: resolved "Unknown property: 'speak'" linter warning in admin management styles.
  • Admin management: resolved all-day appointment end-date saving issues where durations were incorrectly adjusted by site offsets.
  • Day-unit appointments: overlap indexing now aligns multi-day bookings to site-local midnights for whole-day durations, preventing next-day false full-booked state.
  • Admin panel browse (timed products): when display timezone differs from site timezone, get_month_availability now rebuckets day summaries in that timezone and mini-calendar day selection follows hasDifferentTz key space.
  • Admin panel: get_day_slots now returns time matching displayed wall clock in admin timezone mode; live preview uses selected slot start_ts when available.
  • Admin panel: availability timezone helpers no longer call string methods on missing dates; date-range availability uses a consistent end-range anchor date.
  • Admin panel: browse opening no longer causes slow height motion; shell transitions only opacity/transform, inline top/max-height updates apply immediately, and ResizeObserver delta is fixed.
  • Admin panel: bottom-anchored contextual panel no longer clips footer actions when browse opens; max-height/min-height/scroll floor constraints now keep full panel visible.
  • Admin panel (outside admin calendar): view panel no longer opens with tiny max-height near viewport bottom; anchored shells now use viewport-capped max-height and preserve anchor-relative positioning.
  • Admin calendar: drag-drop/resize now sync saved start/end into event extendedProps and open panel data (wcaPanel.updateApptData) without full event refetch.
  • Admin panel (day/all-day edit): end-date input now normalizes both stored end formats (exclusive midnight and inclusive 23:59:59) to consistent inclusive display.
  • Admin calendar toast messages: all-day updates now render date-only schedule text with semantic all-day dates (no timezone-adjusted clock/day shift) for cross-timezone staff edits/moves.

[5.3.0-rc3] - April 3, 2026

Pre-release

Improvements

  • Admin panel: optimized vertical space with increased maximum height (800px) and smart adaptive positioning that maintains header stability when browsing availability.
  • Admin panel: smoother expansion/contraction animations with removed vertical shifting and scaling for a cleaner initial opening experience.
  • WordPress 7.0 compatibility fixes, mainly UI changes.
  • Admin panel: renamed the "Find available slot" browse button to "Pick from a calendar" and updated its icon to a calendar with a clock face for better clarity of its toggle functionality.
  • Admin calendar: optimized real-time toast notifications with a 3-toast display limit and smart grouping of similar, rapid-fire events into translatable bulk messages to reduce UI clutter.

Fixes

  • Admin panel: edit panel for overnight/multi-day timed appointments (e.g. 12h base + 12h addon = 24h) now correctly shows [startDate] [startTime] → [endDate] [endTime] layout instead of hiding time inputs. Browse availability now loads and displays time slot chips for these appointments. Fixed BrowsePanel day click handler that skipped slot loading when showDateRange was true.
  • Admin panel: time slots were incorrectly shifted by 2 hours on non-UTC sites due to double timezone conversion of site-local timestamps.
  • Admin panel: available slots now correctly converted to staff member's local timezone in the day picker by utilizing the centralized timestamp converter.
  • Admin panel: month availability dots now correctly reflect shifts when slots cross day boundaries in staff/admin timezones; expanded query range to capture boundary-crossing slots.
  • Admin panel: fixed input height and vertical alignment in appointment edit panel CSS to prevent layout shifting.
  • Addon duration not applied correctly on frontend: product with 12h duration + addon for extra 12h (720h) would only have the base 12h duration after checkout. Availability now checked against full addon-extended duration by default; _end_date uses duration_total (includes addons via appointment_form_posted_total_duration filter). New get_extended_range_available_capacity() validates ranges spanning multiple consecutive slots. Respects availability_span product setting ('start' checks only starting slot as before).
  • Admin panel: addon duration not applied when creating appointments. Addon duration was not passed to wc_appointments_get_posted_data(), so _end_date only reflected base product duration. Also fixed: staff slot validation now handles extended ranges spanning multiple slots; JS now sends addon duration in availability check AJAX and force-recomputes end time when addons change.
  • Admin panel: overnight appointments (duration extending past midnight via addons or late slots) now display a "+Nd" badge next to the end time, show correct multi-day calendar preview, and no longer trigger a false "Start and end times cannot be the same" validation error. Server correctly computes end timestamp using explicit days offset.
  • Admin panel: Missing Order note when making changes in the new "edit appointment" view. Note formatting now matches calendar drag-and-drop actions.
  • Admin panel: Added option to change end date for all-day appointments in admin edit panel.
  • Admin calendar: dragging or resizing overnight appointments (timed events spanning multiple days) in Month view now correctly preserves original start and end times instead of altering them to midnight.
  • Midnight (00:00) time slot missing when product is configured for 24/7 availability due to timezone mismatch in slot generation engine.
  • Frontend slot renderer: disabled mandatory in-memory caching to ensure real-time accuracy. The renderer now respects the disable_slots_cache parameter (true by default), ensuring fresh availability is fetched on every day/month navigation.
  • Use of undefined constant 'MINUTE_IN_SECONDS' in new AJAX handler: added safety-net definitions for all standard WordPress time constants in the main plugin file to ensure compatibility across all environments.
  • Static analysis: resolved "void" assignment error with absint() core function by using explicit (int) abs() casts for product and staff IDs in AJAX requests.
  • Admin panel: resolved "Call to unknown method: WC_Product::get_staff_ids()" by ensuring all appointable product objects are correctly instantiated via get_wc_product_appointment(); also fixed incorrect esc_html() usage in AJAX handlers.
  • Admin panel: resolved "Argument '1' passed to set_taxes() must be of type array, bool given" TypeError in AJAX handler.
  • SCSS: removed redundant 'vertical-align' properties from block-level elements across admin and frontend styles to resolve linter warnings.
  • Admin panel: removed redundant 'float' from date and week selectors in the calendar navigation header.
  • Admin calendar: added translators comments to clarify %d placeholders in toast notification strings.

[5.3.0-rc2] - March 28, 2026

Pre-release

Improvements

  • Admin panel: Staff members can now view appointments they created in the admin calendar, even when no staff is assigned. This allows creators to track their own administrative work while maintaining restricted access to others' appointments.
  • Admin panel: Product selection switched to AJAX-based search with infinite scrolling (perfect for sites with many products).
  • Admin panel: Products without assigned staff are now visible to restricted staff users.
  • Admin panel: "Create as a Customer" dropdown option added to the create panel header (enabled via Screen Options).
  • Admin panel: Enabled by default. Use wc_appointments_admin_panel_enabled filter to disable it.

Fixes

  • Admin panel: staff-less product availability now correctly ignores admin-selected staff filters (e.g., from a previously viewed calendar). Added server-side validation and React-side state synchronization.
  • Admin panel: robust timezone synchronization for daily slots and availability check.
  • Admin panel: prioritized Unix timestamps for server-side validation to avoid timezone drift.
  • Admin panel: improved day boundary filtering for non-UTC site timezones.
  • Admin panel: time slots incorrectly spanned into adjacent days on non-UTC sites. Slots V3 engine and AJAX handlers now consistently use site-timezone midnight for snapping, indexing, and display.
  • Admin panel: "To" time input failed to auto-populate upon slot selection or manual start-time change when staff timezone differed from site timezone. Refactored duration calculators with robust time parsing and switched to atomic React state updates.
  • Admin panel: staff users were incorrectly blocked from fetching product details for items they could select, causing synchronization failures.
  • All-day appointments: availability check incorrectly reported "unavailable" for multi-day ranges. Slots V3 engine and Data Normalizer now anchor to site-local midnight instead of UTC, ensuring accurate slot generation and indexing on non-UTC sites.
  • Admin panel: appointment edit preview incorrectly removed one day from multi-day all-day durations due to DST-unsafe millisecond arithmetic. Refactored to use robust date-component incrementing.

[5.3.0-rc1] - March 26, 2026

Pre-release

Improvement

  • PHP 8.6 compatibility fully tested.

Fixes

  • PHP 8.3+: prevent fatal TypeError when WP passes null to admin_footer_text filter.
  • Admin panel: prevent panelStatus is not defined console error on sites that concatenate scripts into a wrapper scope (read panel sub-modules from window.* and ensure extracted modules expose window.panelStatus / window.panelBrowse).
  • Day/month duration products: slots showed as available but returned "unavailable" on non-UTC sites — slot engine was anchoring day slots to UTC midnight instead of site-timezone midnight, causing a timestamp mismatch with the form submission.
  • Day/month duration products: admin panel browse calendar showed no available dates and availability check always returned unavailable — get_month_availability and check_availability were building timestamps with strtotime() (UTC midnight) instead of site-timezone midnight, mismatching the engine-generated slots.
  • Day/month duration products: checkout availability validation blocked bookings due to form _end_date diverging from the slot generator's end date by an hour when the timezone spanned across a Daylight Saving Time shift. Replaced strtotime() with timezone-aware DateTime modifiers.
  • Month duration products: past months were unconditionally generated and showed on the frontend calendar instead of being skipped.
  • Month duration products: controller aggressively overwrote end_date with strtotime('+1 month') breaking custom duration selections and causing UTC drift.
  • Timezone display: Replaced static Australia/Oceania timezone abbreviation map to allow PHP's native, DST-aware timezone display labels (e.g. AEDT instead of AEST during Daylight Saving Time).
  • Order emails showed appointment status as "Unpaid" instead of "Paid" for full-payment orders. WooCommerce fires customer emails during order save() (inside payment_complete), before the woocommerce_payment_complete action where appointments were previously marked as paid. Fixed by running publish_appointments at hook priority 1 on woocommerce_order_status_processing/completed, ensuring appointments are marked paid before WooCommerce dispatches emails at priority 10.
  • Frontend: selecting an unavailable date showed empty time columns with dashes instead of the "No slots available" notice. This happened when the slot collection included adjacent-day slots (due to timezone range widening) which were correctly filtered out by date, but left the outer HTML structure intact. Controller now returns an empty string if no slots match the requested day.

[5.3.0-beta6] - March 24, 2026

Pre-release

✨ Feature

  • Indexing staleness tracking - we need to track index at all times, even when disabled so it works fine, backfill the stale indexes.

Improvements

  • Admin calendar: week/day time grid uses 30-minute default selection and preview (matches slot hover); create preview and FC select mirror styled like the slot hover overlay for less visual jump.
  • Admin panel: customer, order, billing, and status row/section icons use the same SVG assets as WooCommerce Blocks (customer-account, bag, check-payment, product-filter-status in plugins/woocommerce/client/blocks/assets/js/icons/library/), not generic Dashicons-style substitutes.
  • Admin panel: product icon SVG aligned with WooCommerce core Product Collection block (product-collection/icon.tsx), not @wordpress/icons box.
  • Admin panel: staff row uses person silhouette (comment-author-avatar from @wordpress/icons); duration uses clock (scheduled). Replaces institution building + post-date glyph.
  • Admin panel: Dashicons replaced with WordPress Icons–style SVGs (same 24×24 system as the block editor) for a minimal, modern look; new panel/wp-icons.js bundle and .wca-wp-icon styling.
  • Admin panel: modularized into sub-modules (panel-helpers, panel-status, panel-browse, panel-form) with proper script dependencies for better maintainability and caching.
  • Admin panel: unified header across view/edit/create modes with timezone abbreviation always visible.
  • Admin panel: edit and view mode-switch buttons promoted from dropdown to icon-only header buttons (before the more icon) with title tooltips for quicker access.
  • Admin panel: "Edit in WordPress" link in more menu opens WP edit screen.
  • Admin panel: inline price override editing in create footer with excl-tax flag for correct base cost calculation.
  • Admin panel: SCSS refactored with shared mixins (cal-day-states, wp-icon-size, skeleton-bg) to eliminate duplicated calendar day state styles.
  • Admin panel: create success step — no footer; centered checkmark; "Appointment created successfully." heading; product / schedule / IDs on separate lines; single header-style pencil button loads the new appointment into panel edit mode (REST).
  • Admin panel: new i18n keys for date/month range unavailability messages, slot selection prompts, and info-level slot notices.
  • Admin panel: addons read-only display (wca-addons-list) in view/edit modes.
  • Admin panel: collapsible section toggle arrow sizing matched to select2 dropdown arrows for visual consistency.
  • PHP 8.5 compatibility fully tested.

Fixes

  • Bundled php-rrule (rlanvin/php-rrule, already at latest v2.6.0 on Packagist): patched RRule.php to assign return values from setTimezone / setTimeZone so DateTimeImmutable is handled correctly (fixes PHP 8.x “return value should be used” warnings and ensures timezone conversion actually applies).
  • Admin panel: calendar live preview title for create/edit now shows the customer display name only (WooCommerce customer search labels often append email and user id).
  • Admin calendar + panel: changing appointment time/date scrolls every relevant vertical scroll container (not only the first .fc-scroller) and the document when needed, so the live preview event stays in view and the panel repositions next to it; panel updateTrigger runs after layout via requestAnimationFrame instead of waiting on smooth scroll. Preview scroll keeps ~100px viewport padding and centers the event vertically in the viewport when page scroll is needed (aligned with the panel, which is centered on the event).
  • Admin panel: day-based and month-based products — browse calendar now highlights the selected start date/month from dateFrom/monthFrom (not a stale date field), keeps date in sync when picking days, recenters the strip on the correct day, and reloads availability when the product changes so dots/cells match the selected product.
  • Admin panel: day/month-range create — calendar prefill often sets start and end to the same day/month; multi-day/month products now recompute the inclusive end when that happens, and cost/availability checks are skipped until the range matches duration (avoids a false “date range is not available” until re-selecting dates).
  • Admin panel: globe and info SVG paths in wp-icons.js were invalid (React console errors on <path d>); replaced with paths from @wordpress/icons v12.
  • Admin panel: tax handling for price override — panel sends appointment_override_price_excl_tax flag so override is used as base cost directly, while modal path retains existing tax-display-aware logic.
  • Admin panel: SelectWoo/Select2 labels showed raw HTML entities (e.g. –) for customer/order AJAX search and static enhanced selects — labels are now stripped of tags and entity-decoded for display.
  • Admin panel: Product Add-Ons duration options now update end time / end date (and hidden PAO qty stays in sync with appointment quantity), matching the create appointment modal.
  • Admin panel + create modal: unselecting add-ons that added day/month duration no longer leaves the extended end date in place; time-based end time also updates when clearing add-on minutes (modal previously skipped recalculation when addon duration was 0).
  • Admin panel: create panel not opening from WP submenu "Add New" link on non-calendar admin pages — panel JS now enqueued globally when the panel feature is enabled, so its click interceptors are available on all admin pages.
  • Corrected @since version tags (5.4.0/5.5.0 → 5.3.0) across panel JS, AutomateWoo integration, and timezone helper files.
  • Frontend date picker: calendar AJAX now uses dataType: 'json' and normalizes string or double-encoded JSON payloads before merging, avoiding jQuery $.each TypeError when proxies or misconfigured responses leave the body unparsed.
  • Make sure date picker ajax calls define json output to avoid server-side caching issues.
  • Frontend date picker: multi-day and multi-month products no longer treat later span days' "fully scheduled" (as booking starts) as blocking the day before a booking; calendar matches server day-slot logic (e.g. 2-day product with a Wed start blocks Wed–Thu, not Tue–Thu).
  • Slots engine (dynamic / non-indexed path): overlap index for existing day/month appointments no longer extends get_end() by an extra day; that matched indexed-cache behavior and frees the first calendar day after the booking (exclusive end is already correct).
  • Add to cart redirect should server product permalink by default.
  • Timezone change spanning to prev/next day should show include slots for that day. Issue #1320.
  • Guard against 'wc_appointments_sync_with_padding' $product type, so it does not return fatal error. Issue #1323.
  • Pricing rules need array check to prevent fatal error when not defined correctly.
  • gCal recurring event that ends on date bug. Issue #1322.
  • gCal allday event syncs extra day in 5.3.0-beta-5. Issue #1321.
  • Add missing rrule to ICS export generation. Issue #1317.
  • Date should not be translated inside admin metabox page for editing appointments.
  • React warning for appointment-admin-panel.js: mountPanel() always called wp.element.render(), which in React 18 still goes through the legacy ReactDOM.render() path and triggers that console message.

[5.3.0-beta5] - March 16, 2026

Pre-release

Improvements

  • Admin calendar: dedicated side panel assets (appointment-admin-panel CSS/JS) and build integration for the create/view/edit panel.
  • Updated translations for all shipped locales (de_DE, es_ES, fr_FR, he_IL, it_IT, nl_NL, sl_SI).

Fixes

  • Multi-day duration not working in 5.3.0-beta4. Issue #1312.
  • Google Calendar sync for staff deactivating: OAuth access token was not renewed automatically because no cron ran to refresh it. Added recurring Action Scheduler job (every 50 minutes by default) to refresh GCal tokens for global and all staff with a stored refresh token. Interval is filterable via woocommerce_appointments_gcal_token_refresh_interval.
  • Indexer did not save days rules where start and end are the same correctly, but should have bound it to midnight. Issue #1246.

[5.3.0-beta4] - March 11, 2026

Pre-release

✨ Feature

  • Admin calendar: new side panel (create/view/edit appointments, filters), disabled by default; enable via wc_appointments_admin_panel_enabled filter.

Improvements

  • Added acquire_refresh_lock() / release_refresh_lock() + lock logic around the refresh path.
  • Rewrote increment_auth_strikes() / reset_auth_strikes() to use wp_options with a 30s cooldown.
  • Added $payload['refresh_token'] persistence in the refresh path.
  • Added store_access_token() / get_durable_access_token() using wp_options + user_meta.
  • handle_deauthorize() no longer deletes calendar_id / twoway for staff.
  • Added $access_token_cache instance property.
  • Compatibility with WooCommerce 10.6.
  • Snippet for shared capacity between products doesn't work in 5.x.
  • Updated Product Add-ons to 8.2.0.

Fixes

  • Use the same end convention as the slots engine (midnight of the next day) when building posted data for day/month products. Issue #1312.
  • Validation issue in admin modal and the new panel returns error, but should not.
  • Unavailable slots can be clicked (but not booked) in 5.x, reintroduced with 5.3.0-beta1. Issue #1246.
  • Overnight rules not respected for dynamic minute mask extension before data normalization, works fine for indexed rules. Issue #1083.
  • Missing slots in 5.2.8 - can only be reproduced on old products. Issue #1307.

[5.3.0-beta3] - March 9, 2026

Pre-release

Improvements

  • REST API v2 slots endpoint (get_items) always uses Provider; legacy use_legacy code path and duplicate slot-generation logic removed. Category filtering moved into get_items_via_provider().
  • Admin AJAX: time-slot and day-slot handlers use WC_Appointment_Slots_Provider only; legacy Controller fallbacks removed. On Provider failure, time-slot request returns user-facing error message; month summary returns empty array.
  • Admin create/edit appointment: staff slot validation and max-quantity-for-selection use Provider::get_time_slots_collection() directly instead of get_cached_slots_in_range + get_cached_time_slots.
  • Cart manager checkout overbooking check uses Provider::get_time_slots_collection() instead of Controller cached-slot pipeline.
  • WC_Product_Appointment::get_available_slots() and get_first_available_slot() use Provider::get_time_slots_collection() as primary path; indexed/horizon branch removed in favor of Provider.
  • Month picker get_appointment_slots() uses Provider::get_slots() with summary level directly instead of Controller::get_cached_slots_in_range().
  • Controller legacy slot methods and debug helpers: find_scheduled_day_slots_orig(), dbg_enabled(), dbg_log(), and remaining deprecated cached-slot/rule methods (merge_rules_for_staff, derive_availability_ranges_from_rules, get_cached_slots_in_range variants, get_cached_time_slots, get_cached_available_slots, get_cached_time_slots_html, etc.). Provider is the single source of truth for slot generation.
  • Ajax date picker check should not run indefinitely when an exception occurs; the response is no longer empty and has the expected keys.

Fix

  • Same-day all-day (day-based) appointments were incorrectly removed from the cart when loading from session: past-date check now compares all-day appointments against the start of the current day instead of the current time, so bookings for today remain in cart.

[5.3.0-beta2] - March 8, 2026

Pre-release

✨ Features

  • Inline slot pricing: discounted prices displayed on date picker and time slots when pricing rules apply. New WC_Appointment_Slots_Pricing engine computes per-slot preview prices during generation with multi-layer caching (rule compile cache, staff cost cache, format dedupe cache).
  • Rule Resolver (WC_Appointment_Slots_Rule_Resolver): builds per-day minute-mask from parsed in-memory availability rules, replacing per-slot check_availability_rules_against_time() calls for the Dynamic Engine path.
  • Rule Minutes helper (WC_Appointment_Slots_Rule_Minutes): self-contained rule-to-minute computation extracted from Rule Manager, handles all rule types (days, weeks, months, custom, rrule, time ranges including overnight).
  • Performance logger (WC_Appointment_Slots_Perf_Logger): toggleable zero-overhead timing instrumentation via WCA_SLOTS_PERF_LOG constant for pipeline profiling.
  • Upgrade routine (WC_Appointment_Slots_Upgrade): one-time covering index optimization for the Index Engine's 2-query pattern on the availability cache table.
  • Native time-slots HTML renderer (WC_Appointments_Controller::render_time_slots_html): consumes WC_Appointment_Slot objects directly from Collection — no legacy format conversion needed.

Improvements

  • Data Normalizer 3-phase staff merge: index path minute-mask now mirrors Rule Resolver's staff mask accumulation and union semantics for consistent results across Index and Dynamic engines.
  • Collection grouping for time-slot display (get_grouped_for_time_slots_display): multi-staff "no preference" aggregates capacity across all staff per unique start_ts, with pre-computed availability messages and price badges.
  • Admin AJAX time-slot handler now uses Provider → Collection → render_time_slots_html as primary path, with legacy get_cached_time_slots_html as emergency fallback only.
  • Slot price preview shows WooCommerce-style sale price format (strikethrough original + discounted) only when slot is actually discounted below base price.
  • Legacy Filter Bridge register_hooks() intentionally disabled — documented rationale for avoiding circular shadow pipeline. Legacy filters now fire within Provider pipeline via apply_available_slots_filter() and apply_time_slots_filter().
  • Controller::find_scheduled_day_slots_orig() — emergency fallback only, Provider handles day-slot generation.
  • Controller::merge_rules_for_staff() — only used by deprecated cached slot methods; engine handles internally.
  • Controller::derive_availability_ranges_from_rules() — only used by deprecated cached slot methods; engine minute-mask replaces this.

[5.3.0-beta1] - March 6, 2026

Pre-release

✨ Features

  • Slots V3 architecture: new slot generation pipeline with WC_Appointment_Slots_Provider as the single source of truth.
  • Unified Slots Engine (WC_Appointment_Slots_Engine): single engine replaces separate Index and Dynamic engines. Data Normalizer (WC_Appointment_Slots_Data_Normalizer) abstracts the data source (SQL cache table vs in-memory rules) so the algorithm is identical regardless of path.
  • Rule Resolver (WC_Appointment_Slots_Rule_Resolver): builds per-day minute-mask from parsed availability rules, replacing per-slot check_availability_rules_against_time calls.
  • Engine Helpers trait (WC_Appointment_Slots_Engine_Helpers): shared algorithms (cap_end_date, minute_mask_to_ranges, count_overlapping, should_skip_slot, compute_slot_count).
  • Immutable WC_Appointment_Slot value objects with capacity tracking (total, booked, available, occupancy percentage).
  • WC_Appointment_Slots_Collection with hierarchical day/month summaries and per-staff breakdowns.
  • Modern day_data format: pre-computed per-day availability data (status, occupancy_pct, remaining_bucket, per_staff breakdown) sent alongside legacy format in AJAX responses for declarative date picker rendering.
  • Date picker occupancy indicators: days with bookings display visual occupancy bars via partial_scheduled + remaining_scheduled_N CSS classes driven by day_data.
  • REST API v3 endpoint: GET /wc-appointments/v3/slots with product_id, start_date, end_date, staff_id, level params.
  • New AJAX endpoint wc_appointments_get_slots for modern slot queries with summary/days/slots/full response levels.
  • Legacy filter bridge: deprecated filters (wc_appointments_product_get_available_slots, woocommerce_appointments_time_slots) applied externally for backward compatibility.
  • Future-proof WC_Appointment_Slot with nullable location_id, resource_id, recurrence_id properties for upcoming features.

Improvements

  • Beta release for 5.3.0 slots architecture. API and code versioning remain 5.3.0.
  • Controller delegation: find_scheduled_day_slots(), get_cached_time_slots(), get_cached_slots_in_range(), get_cached_available_slots() all delegate to Provider.
  • Simplified AJAX handlers: eliminated redundant Provider + Controller dual-path fallbacks.
  • Cache warmup wired directly to Provider for faster slot pre-generation.
  • Centralized index availability check: WC_Appointment_Slots_Provider::is_index_available() replaces duplicated checks.
  • Occupancy display fix: uses slot counts instead of cumulative capacity sums for accurate day-level occupancy.
  • Timezone-aware restricted_days check in date picker: adjacent-day check prevents days from being incorrectly disabled when customer timezone differs from site timezone.
  • Cleaned up debug artifacts (timing vars, counters) from active code paths.
  • Controller::cache_horizon_ts() — Provider handles horizon checks internally.
  • Controller::should_use_indexed_availability() — Provider routes to engine internally.
  • Controller::get_cached_slots_in_range_for_month/day/hour_or_minutes() — Provider generates slots directly.
  • Controller::get_cached_appointments() — Provider engine fetches appointment data via own queries.
  • Controller::dbg_log()/dbg_enabled() — only used by deprecated methods.
  • WC_Product_Appointment::get_slots_in_range() — use WC_Appointment_Slots_Provider::get_slots() instead.
  • WC_Product_Appointment::get_slots_in_range_lazy() — use WC_Appointment_Slots_Provider::get_slots() instead.
  • WC_Product_Appointment::get_slots_in_range_for_hour_or_minutes() — engine generates time slots directly.
  • WC_Product_Appointment::get_slots_in_range_for_day() — engine generates day slots directly.
  • WC_Product_Appointment::get_slots_in_range_for_month() — engine generates month slots directly.
  • WC_Product_Appointment::get_appointable_minute_start_and_end() — use minute_mask_to_ranges() trait method.
  • WC_Product_Appointment::get_appointable_minute_slots_for_date() — engine slot-chunking loop replaces this.
  • WC_Product_Appointment::get_unavailable_minutes() — overlap index in engine handles capacity deduction.
  • WC_Appointment_Slots_Index_Engine — merged into unified WC_Appointment_Slots_Engine.
  • WC_Appointment_Slots_Dynamic_Engine — merged into unified WC_Appointment_Slots_Engine.

[5.2.8] - March 3, 2026

Improvements

  • Clear date, time, addons and cost on month/year switching on the date picker.
  • Remove all transient caching from the slot generation, actually slows down loading with indexing enabled.
  • Add a fail-safe approach to "woocommerce_appointments_time_slots" filter by adding back the 10th arg.

Fixes

  • all-day appointments are timezone agnostic, treat them like that in admin calendar and elsewhere.
  • edge case when indexing is disabled, indexing rules and appointments should not add them to the cache table.
  • Failed Schedule Action wc-appointment-reminder (Twilio SMS connection). Issue #1305.
  • Rule priority order should be respected from DB query. Issue #1306.
  • When timezones are disabled for frontend do not account for the timezone cookie, which might remain from previous state.
  • Admin datepicker header navigation SCSS is slightly off.
  • Recurring time rule lasting till midnight does not show day as available on the calendar.

[5.2.7] - February 28, 2026

Fixes

  • Staff availability rules are now indexed to the availability cache during save (synchronously), same as global rules, so availability is correct immediately after saving.
  • Staff rule indexing was previously deferred to async jobs and could result in corrupted or missing cache entries; indexing now runs in the same request after the transaction commit.

[5.2.6] - February 28, 2026

Improvement

  • Clear the date selection when switching months, so users start fresh in the new month without a confusing half-selected state.

Fixes

  • Google Calendar sync is not converting to timezone properly when syncing back from the calendar in utc time zone.
  • When main calendar is disconnected, leave staff sync intact, should work uninterrupted.

[5.2.5] - February 26, 2026

✨ Features

  • Add timezone enable/disable setting, not just the filter. Filter overrides the setting.
  • Add much more context to admin/staff when customer books in different timezone.
  • Add timezone context to admin and staff separately, when in different timezone for all involved: admin, staff and customer.

Improvements

  • Remove "—" before time selection in date-time form.
  • Gcal sync should not deuthorize instantly and should deuthorize only after 3 failed attempts.
  • Stale appointments shown from cache briefly and then hidden. Issue #1301.
  • Add a setting to disable the timezones inside Appointment WooCommerce settings.
  • Updated all translations. Added translations for the General product settings.
  • FOUC fixes applied to availability rule settings, which did not render nice from initial load.
  • Show uploaded files in addon fields as links in appointment viewing modal in admin.
  • Centralize cart simulation for testing, so any plugin can hook in, woocommerce default factored in.
  • Snippet to show month/year dropdown on frontend booking form doesn't work. Issue #1300.

Fixes

  • date and time format should never use localize version for internal checking. 3-layer fix applied.
  • gcal_availability_rules() calls set_sync_token() without user context.
  • sync_from_gcal should return after the staff loop to avoid re-running the global sync with a potentially corrupted context.
  • date and time format should never use localize version for internal checking. 3-layer fix applied.
  • When staff disconnects the sync with gcal, it disconnects the main calendar sync. clear local tokens only. Issue #1298.
  • When staff disconnects the sync with gcal, it should clear their calendar as well as gcal config to avoid stale data.
  • PayPal sandbox testing can cause overbooking. Not a live example, but still should not do that.
  • Fix already_indexed_in_request guard to track status — allow re-index on status change.
  • Count of synced rules includes expired rules, but shouldn't.
  • Yellow background highlighting availability rows should be removed when out of input focus.
  • Timezones strtching to other days when switched do not open those days for certain availability rule types.

[5.2.4] - February 21, 2026

✨ Feature

  • Added a 'woocommerce_appointments_show_timezone' filter that allows disabling timezone coversions plugin-wide. More in developer docs.

Improvements

  • Disable datepicker caching, can lead to false date disabling and doesn't add much to rendering speed.
  • Also show timezone shortname and description for product and global availability rules.
  • Show customer's timezone in their admin profile and in staff shown Customers admin page.
  • Updated all translations. Merged some almost the same strings for translation.

Fixes

  • Double-counting in booked_qty_per_day_by_staff where specific-staff appointments are incorrectly pushed into the [0] aggregate bucket.
  • Staff selection in product edit screen needs CSS fix.

[5.2.3] - February 21, 2026

Fixes

  • Appointments with month duration not showing slots.
  • Display error earlier in slot generation so it does not get caught in loading loop.
  • No preference availability should not be overwritten with empty array.
  • Handle overnight rules better, availability rule with same start and end should apply 24/7 availability.

[5.2.2] - February 20, 2026

✨ Feature

  • Staff permissions: Rules set by staff now sectioned into minimal, standard and full, staff doesn't need that many options.

Improvements

  • ICS export not working for other calendars (only works for gCal). Issue #970.
  • Updated all translations. Staff permission settings missing translations.
  • Appointments edited in admin calendar should instantly sync to the Google calendar, when connected.
  • Appointment creation modal now has slightly polised UX, less autoclosing/autoopening, better timing and spacing.
  • Appointment creation modal and viewing modal should have a simple link to appointment edit page, no fancy redirects.

Fixes

  • Staff permission for editing and creating products not working, but should grant staff access to all products.
  • Automatically assigned staff together issue when no staff assigned. Issue #1292.
  • Patch non-indexed path where showing sold out slots could trigger fatal error through filter.
  • Minimal CSS patch to prevent transition effect (added elsewhere) on datepicker back/forward buttons.
  • Patch to show status drodown correctly on appointment viewing modal when statuses have long translations.
  • Timezone change to UTC on frontend not working. Issue #1294.
  • Timezone text on frontend not changing when selecting default. Issue #1295.
  • Timezone overnight change not reflected on the calendar date picker. Issue #438.
  • Appointment vierwing modal shows wrong duration for daily or monthly duration types. Issue #1296.
  • Timezone should also be added to daily and monthly durations during creation or editing in admin calendar. Issue #1296.
  • When product is selected in modal, end date/time is not adjusted based on product duration.
  • When staff creates appointment in modal, they should be assigned to the product, not any other staff member.
  • When staff is logged in, admin calendar should server preload appointment for the staff, but loads the via API (slower).
  • Fix get_slots_availability to expand DB query range by padding. Issue #1256.
  • Fix indexed path to include padded range more strictly. Issue #1256.

[5.2.1] - February 17, 2026

Improvements

  • Remove JS hover effect for back/forward buttons on the frontend date picker, CSS styling only. Issue #1276.
  • Add back option for Add as customer in modal for creating appointment, needs Screen options enabling. Issue #1290.
  • Add better error feedback notice for quantity in admin modal for creating appointments.
  • Refactored responsiveness and mobile UX for viewing and creating appointment modals in admin.
  • Admin modal for viewing appointments status changing for more statuses, moved into conntent from modal footer.
  • Updated all translations.

Fixes

  • Admin modal for creating appointments should refresh mini date picker when quantity or staff chanage. Issue #1289.
  • Staff dashboard link to availability section in their profile is broken.

[5.2.0] - February 16, 2026

✨ Features

  • Staff dashboard: Migrated from custom submenu page to native WordPress dashboard widgets using wp_add_dashboard_widget().
  • Staff dashboard: 8 individual widgets — Overview, Appointment Trends, Upcoming Appointments, Insights, This Week, Monthly Schedule, Top Products, Quick Actions.
  • Staff dashboard: 3-column layout with automatic widget placement for staff users on first visit.
  • Staff dashboard: Pending appointments alert rendered as native WP admin notice at the top of the dashboard.
  • Refactored email timezone approach so each recipient will receive appointment times in separate email in their own timezone.
  • Refactored admin calendar filtering system to work much better.

Improvements

  • Staff dashboard: Removed forced redirect from WP dashboard (index.php) to custom page — staff now land on the native dashboard.
  • Staff dashboard: WordPress Dashboard menu item now visible for staff users.
  • Staff dashboard: Admin bar "Dashboard" link points to WP dashboard instead of old custom page.
  • Staff dashboard: Default WP/WooCommerce widgets removed for staff to keep dashboard focused on appointments.
  • Staff dashboard: Split monolithic template into 8 widget partials in views/dashboard-widgets/.
  • Remove extra week addded to month view in admin as it adds confusion.
  • Missed cached/indexed path are now patched: slots API, availability widget and block, finding default date.
  • Add timezone in my-account, so customer always know which timezone appointment time is displayed in.
  • Update all translations. Fixed mistranslated strings.
  • When panel in admin modal for creating appointments is toggled gently scroll to the content if outside the viewport.
  • Make past appointments faded, but not semi-transparent.
  • Faster product preload for appointment creation modal.
  • Add a legend to the footer of admin calendar, indicating stripped background meaning.
  • Timezone setting for staff should include current timezone suggestion, same as customer setting does in my-account on frontend.
  • Add appointment ID to toast messages in admin calendar.
  • Staff dashboard should align more with the profile color scheme staff selects.
  • Staff dashboard: Removed old html-staff-dashboard.php template, add_dashboard_page(), render_dashboard(), and redirect_staff_dashboard() methods.
  • Staff dashboard: Updated all references from old page slug (wca-staff-dashboard) to admin_url('index.php').

Fixes

  • Staff can create appointments with any product if permission allows it, otherwise not.
  • Staff control panel live update/refresh does not work.
  • Availability check in modal wrongly allowed manually entered time that wasn't available with selected staff.
  • Are you sure not translatable in admin modal prompt.
  • When product is selected in admin calendar filter, preselect it when creating appointment from calendar with name set, not just ID.
  • Current week widget for staff did not account for timezone.
  • Admin modal for creating appointments has slightly bigger font now, 13->14px.
  • DST adjustments on all levels, use wall-clock-based conversion instead of offset, time conversion should follow exact date as well.
  • Email order summary timezone conversion not working for admin and staff and still shows times in customers timezone.
  • Some email templates are falsely flagged as not-admin email types, but they are, timezone conversion suffers in some cases.
  • "appointment_time_from" validates input incorrectly inside modal for creating appointments.
  • Toast message in admin calendar should only appear once for single action.
  • Current time and day in week and day view should also be timezone aware in admin calendar.
  • Invalidate cache selectively in admin calendar when appointments change to update stale cache and prevent double rendering.
  • Recurring rules display also needs to account for the timezone of user.
  • When admin is editing staff profile, edit in admin's timezone, but still show what timezone staff has set.

[5.2.0-beta5] - February 12, 2026

Pre-release

✨ Features

  • Admin modal: Month-duration products now show a 4×3 month-picker grid in the mini calendar with per-month availability.
  • Admin modal: New "Browse availability" toggle button for on-demand calendar/slots display instead of always-visible. Issue #1278.
  • Admin modal: Progressive disclosure — details, staff, and calendar sections hidden until product is selected, with reveal animation.
  • Admin calendar: Semantic Dashicons (calendar, clock, user, staff) replace text labels in the viewing modal.
  • Admin calendar: Product color dot indicator shown next to product name in the viewing modal.

Improvements

  • Admin modal: Replaced WooCommerce Backbone modal shell with custom wca-appointment-modal (own positioning, backdrop, header, footer).
  • Admin modal: All event selectors scoped to .wca-appointment-modal--create to prevent bleeding into React viewing modal.
  • Admin modal: Staff field moved to its own section row, shown/hidden based on whether product has staff.
  • Admin modal: Select2 dropdowns restyled with underline inputs, custom arrow icon, and minimalist dropdown via wca-modal-dropdown class.
  • Admin modal: Billing and add-ons sections use border-top separator with dashicon icons instead of grey background.
  • Admin modal: Billing fields switched to placeholder-based inputs with screen-reader-text labels.
  • Admin modal: Human-readable duration label returned from get_product_data AJAX endpoint.
  • Admin modal: Month-based products navigate by year in mini calendar (prev/next year arrows).
  • Admin modal: Removed showPriceLoading/hidePriceLoading functions and price spinner element.
  • Admin modal: Removed dead initOrderSearch(), initCustomerSearch(), and onCustomerTypeChange() functions.
  • Admin modal: Deduplicated customer-row and order-row flex layout into shared selector.
  • Admin modal: Addons validation notice styling consolidated with shared notice design.
  • Admin calendar: Viewing modal narrowed from 500px to 420px with auto-width key column grid.
  • Admin calendar: Product calColor stored in extendedProps for consistent color propagation.

Fix

  • Admin modal: get_month_availability endpoint now returns actual per-month availability for month-duration products instead of marking all unavailable.

[5.2.0-beta4] - February 9, 2026

Pre-release

✨ Features

  • Admin modal: Availability-first UX with inline mini calendar showing day-level availability indicators.
  • Admin modal: Slot chips panel displaying available time slots with capacity badges and staff counts.
  • Admin modal: New get_day_slots AJAX endpoint returning per-slot availability with capacity and staff data.
  • Admin modal: New get_month_availability AJAX endpoint returning lightweight day-level availability summary.

Improvements

  • Admin modal: Selecting a date now proactively loads and displays available time slots.
  • Admin modal: Mini calendar navigates months with prev/next arrows and highlights today, selected date, and availability dots.
  • Admin modal: Clicking a slot chip auto-fills the from/to time inputs with correct duration.
  • Admin modal: Staff and quantity changes refresh the availability-first UI in real time.
  • Admin modal: Shimmer loading animations for calendar and slot panel during AJAX requests.
  • Admin modal: Client-side caching for month availability (60s TTL) and day slots (30s TTL) to reduce server load.
  • Admin modal: Add locale to mini calendar in modal for creating appointments.
  • Admin calendar: Do not add timezone conversion in month view to avoid rendering issue when staf is in different timezone.
  • Admin calendar: Truncate very long rule title displayed inside unavailable rule tooltip.
  • Staff should be redirected to their dashboard when they log in.

Fix

  • Product default color should be #0073aa, not black.

[5.2.0-beta3] - February 9, 2026

Pre-release

Improvements

  • Compatibility with WooCommerce 10.5.
  • Managing rules in admin should work great on mobile.
  • Increase same-time stacked appointments to 10 from 4. Issue #1288.
  • UNavailable rule shown in admin caledar should show more context. Issue #1285.
  • Remove cancelled appointments from admin calendar. Issue #1287.
  • Removed double indexing run on every rule when re-index is selected.

Fixes

  • JS error appears due to invalid recurring rule, which should be handled better. Issue #1280.
  • Bug with default Addon checkbox. Issue #1277.
  • Old "show sold out times" snippet causes Internal server error in 5.x. Issue #1284.
  • Create order for past date on frontend. Issue #1274.
  • Overbooking could occur if inventory changes or sold out option is enabled in final checkout. Issue #1275.
  • Include sold out was hardcoded to false, show them with a filter "woocommerce_appointments_include_sold_out" set to true.

[5.2.0-beta2] - February 6, 2026

Pre-release

✨ Features

  • Staff Portal: Comprehensive staff permissions system with granular permissions across multiple categories.
  • Staff Portal: Dedicated staff dashboard with appointment stats, quick actions, and upcoming appointments.
  • Staff Portal: Permission presets (Minimal, Standard, Advanced) for quick staff permission setup.
  • Staff Portal: Simplified admin menu for staff users showing only relevant items.
  • Staff Portal: New "Staff Permissions" settings section under WooCommerce > Settings > Appointments.

Improvements

  • Performance optimization. Patched the slow calendar query.
  • Admin calendar displays gray stripes for past days in month and week views.
  • Admin calendar should only show toast messages for approved status changes.
  • Admin calendar should use staff members selected language for all translatable strings, including date_i18n.
  • Admin calendar should batch together messages for multiple same-rule updates.
  • Admin calendar bg events (unavailable slots) should be more apparent.
  • Rebuild new js files to vanilla js if jquery is not required.
  • When staff is logged in, preselect the staff in admin calendar and show their rules as unavailability striped bg events.
  • Do not show account creation checkbox if selected customer is already registered.
  • Permission for staff to export their appointments, when enabled.
  • Update all translations. Added more than 150 new strings for each language.

Fixes

  • Several languages had wrongly translated strings, broken HTML and singular/plural nouns mistranslated.
  • Admin calendar does not show staff "custom" rule type.
  • Admin calendar does not show staff availability rules in staff members timezone.
  • Order notes api not working when staff is logged in admin calendar, permission issue.
  • Admin calendar, switching from month to week view does not load unavailable rules.

[5.2.0-beta1] - January 30, 2026

Pre-release

✨ Features

  • Timezone displays now use short abbreviations (CET, PT, JST, EAT, etc.) for standalone display.
  • New WC_Appointments_Rate_Limiter class for centralized rate limiting with IP detection and whitelist support.
  • New WC_Appointments_Timezone_Helper class for centralized timezone handling.
  • Customer timezone preference in My Account > Account Details with browser detection prompt.
  • Staff timezone preference in admin user profile for staff members.
  • Appointments now tagged with creation timezone metadata (_creation_tz) for accurate DST handling.
  • Timezone selector now includes "Default" option that dynamically reflects site timezone.

Improvements

  • BREAKING: Timezone support now always enabled site-wide (product-level "Customer Timezones?" setting deprecated).
  • Timezone dropdown shows city names with short abbreviations appended (e.g., "Berlin — CET (UTC+1)").
  • Hover on timezone options shows full timezone identifier with short name.
  • All timezone indicators across admin and frontend use short names with UTC offsets.
  • Booking form auto-populates timezone from user preference (Priority: User preference > Cookie > Default/site timezone).
  • Enhanced email timezone display with fallback to customer's account timezone preference.
  • Timezone cookie now also saves to user meta for logged-in users (persistent preference).
  • Added more email hooks for timezone display (woocommerce_email_before_order_table, woocommerce_email_order_details).
  • Discrete timezone indicator shown next to dates in admin when timezone differs from site timezone.
  • Admin appointment list shows timezone indicator in "When" column for cross-timezone appointments.
  • Admin appointment details meta box shows timezone indicator with site timezone reference.
  • Admin calendar modal shows timezone indicator when customer timezone differs from site timezone.
  • Staff availability rules editor shows timezone indicator confirming what timezone rules are edited in.
  • Appointment edit screen Date/Time section shows timezone indicator confirming editing timezone.
  • Timezone dropdown now properly shows "Default (City)" as selected when no preference is saved..
  • Rate limiter defaults increased to 60 requests/minute for moderate traffic handling (filterable via hooks).
  • Rate limiter now supports IP whitelist filter and context-specific limit overrides.
  • Empty timezone preference now correctly uses site timezone dynamically (follows site changes).
  • Cart/checkout shows timezone indicator on date/time fields when customer timezone differs from site.
  • Browser timezone auto-detection always active with timezone selector shown on all appointment products.
  • Browser auto-detection no longer overrides logged-in user's saved timezone preference.

Fixes

  • Added legacy fallback timezone conversion when timestamp field not available.
  • Fixed double timezone conversion bug: slots now store original timestamp to prevent conversion on both display AND submission.
  • Popover with lots of appointments displayed needs limited max height to prevent spilling outside viewport in admin calendar.
  • Optimize saving of hundreds or rules at a time in staff profile page.

Securitys

  • Added rate limiting to public AJAX endpoints (calculate_costs, get_time_slots_for_date, find_scheduled_day_slots) to prevent abuse.
  • Removed unnecessary nopriv hook from SSE endpoint (admin capability already required).
  • Improved input sanitization in AJAX handlers with consistent use of wp_unslash() and sanitization functions.
  • Added conditional nonce verification for find_scheduled_day_slots with stricter rate limiting on failure.

[5.1.2] - January 26, 2026

✨ Feature

  • Admin calendar toast notifications: Real-time updates when appointments are created, updated, cancelled, or rescheduled via SSE.

Improvements

  • Customer contact icons in appointment modal: Email and phone icons appear on hover with click-to-action (mailto/tel).
  • Appointment needs to use staff_ids as single source of truth, added comprehensive checks to ensure this.
  • Guest appointment that leaves name/surname should display it in admin calendar even if not registered.
  • Update all translations.
  • Show Guest name in Calendar view + change default calendar view. Issue #1271.
  • Appointment modal has all content filterable through React/JS.
  • Ensure plugin installation does not happen too early and everything hooks after 'init' call to avoid potential issues.
  • Deposits with one full and one part payment appointment in the same order. Issue #1270.

Fixes

  • Resolved double notification issue when cancelling appointments by improving SSE event deduplication.
  • SSE not updating admin calendar for appointments created via shortcode checkout (deduplication was blocking status change events in same request).
  • Fix NL translation.
  • Staff 2-way sync doesn't work fine with multiple calendars sync (staff + global). Issue #1268.
  • Sync issue: when parent recurring event was deleted, modified instance availability rules remained orphaned. Issue #1216.

[5.1.1] - January 22, 2026

Fixes

  • Staff permissions in admin calendar: Staff members without 'manage_others_appointments' capability can now only see their own appointments. Issue #1265.
  • Add-on price not calculated correctly with product quantity (flat fee, quantity-based, percentage-based). Issue #1266.
  • WCML 5.5.x compatibility: Restored version checking logic for WCML_Product_Addons constructor. Issue #1264.
  • Google Calendar 2-way sync: Changes made in gCal were not reflecting in WP due to overly aggressive date comparison check blocking updates. Issue #1263.

[5.1.0] - January 21, 2026

Improvements

  • Updated What's New admin page with better styling and to include clear roadmap, updates with improved release notes.
  • Refining admin calendar hover effects, turn past appointments grayscale and unavailable time ranges into stripes.

Fixes

  • Non-recurring rules could expire same day, before the 30 days grace period. Issue #1261.
  • Cart persistence: Rewrote cart_loaded_from_session with whitelist approach to prevent premature cart clearing with any payment plugin.
  • Only removes items from cart when order is definitively paid (processing/completed/partial-payment).
  • Removed delete_in_cart_appointments_before_empty method as it was too unpredictable.

[5.1.0-rc2] - January 19, 2026

Pre-release

✨ Feature

  • Create new Calendar API, used internally to power the new admin calendar.

Improvements

  • Instantly load appointment modal and all data when selected in admin calendar.
  • Show hover effects in admin calendar.
  • Show admin calendar times in WordPress time format set by user.
  • Remove automatic redirect to what's new admin page after update/installation. Issue #1260.
  • Update all translations.

Fixes

  • Error with "autoselect first slot" in 5.1.0-rc1. Issue #1259.
  • Appointments sync back as availability rules in 5.1.0-rc1. Issue #1258.
  • When syncing back from google calendar, make sure modified date is processed correctly. Issue #1253.
  • PayPal Payments plugin compatibility: Disable smart buttons on appointment product pages to prevent cart issues.
  • "Requires confirmation" with 100% discount coupon now correctly completes order after confirmation. Issue #1254.
  • Make sure 'checkout-draft' doesn't clear appointments from cart/checkout with persistent sessions.

[5.1.0-rc1] - January 15, 2026

Pre-release

✨ Feature

  • Export system refactoring: Implemented unified exporter interface for CSV and ICS formats.

Improvements

  • Added Export Manager class to centralize exporter registration and routing.
  • Reorganized all exporter files under includes/admin/export/ for better organization.
  • Added format selection (CSV/ICS) to admin export page.
  • ICS export now respects all filter options (date range, products, staff, add-ons).
  • Renamed WC_Appointment_CSV_Exporter to WC_Appointments_CSV_Exporter for consistency.
  • Update all translations to account for updated and new strings.
  • Interval should start from first available slot. Issue #1214.

Fixes

  • Staff with gCal sync issue 5.1.0-beta2.
  • WooCommerce Deposits not working ok on any more. Issue #1250.
  • Do not mark global calendar unavailable, when availability rule doesn't cover all days.
  • Indexing turned on makes produce Interval start from midnight instead of inside each available range. Issue #1252.
  • When there are available gaps but not long enough for the whole appointment, the day is clickable, still not available. Issue #1252.
  • Appointment remains in cart as order is created too late in some cases.

[5.1.0-beta3] - January 9, 2026

Pre-release

Improvements

  • Optimized slow appointment queries by adding composite index on (post_id, meta_key) to postmeta table.
  • Query optimization: Use INNER JOIN instead of LEFT JOIN when meta values are required (used in WHERE or ORDER BY).
  • Query optimization: Use EXISTS subqueries for filtering conditions instead of JOINs when meta is not used in ORDER BY (significantly faster).
  • Query optimization: Only JOIN meta keys that are needed for ORDER BY, use EXISTS for pure filtering (reduces JOIN overhead).
  • Optimized get_qty_input_max() query: Replaced OR conditions with UNION for better index usage and performance.
  • Added composite index on availability_cache table (source, qty, appointable, scope, product_id, staff_id, source_id) for get_qty_input_max() queries.
  • Added automatic index creation for appointment postmeta queries on plugin activation/update.
  • Added index verification and logging to ensure indexes are created successfully.
  • Phase 3: Single Responsibility Refactoring - Extracted booking logic into dedicated classes.
  • Created WC_Appointment_Booking_Lock class with exponential backoff retry mechanism.
  • Created WC_Appointment_Booking_Handler class to centralize booking operations.
  • Refactored create_wc_appointment() and add_appointment_from_cart_data() to use booking handler.
  • Updated booking lock functions to use WC_Appointment_Booking_Lock class with backward compatibility.
  • Admin modal customer creation now saves all billing fields to user account, matching checkout.
  • Admin modal now saves billing data for existing customers when provided.
  • Admin modal staff selection properly handles multiple staff scenarios and "No preference" option.
  • Admin modal "Create account" checkbox automatically hides when customer is selected.
  • Added comprehensive timezone architecture documentation across codebase. See docs/TIMEZONE_ARCHITECTURE.md.
  • Significantly improved performance of get_appointment_ids_by() queries, especially for customer appointment lookups with date filters. Reduced from 3 JOINs to 1 JOIN + 2 EXISTS subqueries for typical queries.
  • Improved get_qty_input_max() query performance by using UNION instead of OR conditions, allowing MySQL to use indexes more efficiently.

Fixes

  • Fixed staff selection field not being enabled when multiple staff available.
  • Fixed array to string conversion warning when creating appointments in admin modal.
  • Admin modal staff selection only disables when "all staff assigned together", not when staff data is temporarily empty.
  • Admin modal now randomly selects staff when "no preference" is selected, matching frontend behavior.
  • Fixed timezone handling where selecting a day showed 23:00 for previous day. Changed to local methods in timestamp extraction.

[5.1.0-beta2] - January 8, 2026

Pre-release

Improvements

  • Document the whole code base properly. PHPDoc was missing or wasn't done correctly for a lot of cases.
  • Querystring date/month/time selections now use direct function calls instead of triggering click events.
  • Optimized WC_Appointments_Cache::set() to avoid unnecessary database writes when values haven't changed.
  • License activation, when limit is reached now displays the notice that reflects this.

Fixes

  • REST API v2 slots endpoint now correctly returns WP_REST_Response instead of array.
  • REST API v2 slots endpoint date-only max_date parameter now correctly includes all slots on the day.
  • "Use legacy calendar temporarily" option does not work.
  • Programmatic clicks from date/month/time picker now stop propagation to prevent theme conflicts.
  • Unavailable slots are no longer displayed when staff rules make them unavailable.
  • Latest WooPayments (10.4.0) causes Internal server error on wc_appointments_calculate_costs.

[5.1.0-beta1] - January 5, 2026

Pre-release

Improvements

  • event.stopPropagation() on time slot click.
  • PHP modernization: Added 5 interfaces for better code contracts and type safety.
  • PHP modernization: Created 2 traits to eliminate code duplication across 8 classes.
  • PHP modernization: Refactored 3 meta box classes to use shared trait, eliminating ~45 lines.
  • PHP modernization: Implemented exporter interface in CSV and ICS exporters.
  • PHP modernization: Refactored 5 manager classes to use shared manager trait.
  • PHP modernization: Updated integration classes to implement integration interface.
  • Modernization of integrations usage and dependencies.

Fix

  • License management refresh shows notice and deactivation doesn't hide it.

[5.0.2] - January 4, 2026

Improvement

  • Speed up loading of avatar, staff and order in admin calendar appointment modal.

[5.0.1] - January 3, 2026

Improvements

  • Update documentation suggestions to the new docs.bookingwp.com site.
  • Re-index up to retention date, do not index all appointments.
  • Speed up re-indexing and avoid logging deletion, truncate instead.

Fixes

  • Re-indexing large amounts of data should not result in PHP timeout.
  • Next suggest time in admin modal for creating appointment should not use timezone conversion twice.

[5.0.0] - January 2, 2026

Improvements

  • Compatibility with WooCommerce 10.4.
  • Deprecation of wc_enqueue_js() in WooCommerce 10.4 addressed.
  • Add animation to license activation button to avoid confusion, when modal doesn't open instantly.
  • Updated all translations.
  • Abandoned cart should not send the cancelation email.

Fix

  • WooCommerce Payments multicurrency functionality now correctly converts currency in cart/checkout.

[5.0.0-rc3] - December 12, 2025

Pre-release

Improvements

  • Add option to apply/limit inventory/quantity per day instead of per slot (default).
  • Add back the deprecated/misspelled hook for BC 'wc_apointments_check_appointment_product'.
  • Add Billing option to create new account for a Guest customer in modal for adding new appointments.
  • Make What's New page under Appointments in admin permanent, hide it in later smaller updates.
  • Hide notice after the license is successfully activated for the plugin.
  • Initial admin calendar view is for the week, preload appointments for the whole month regardless.
  • Appointments API v2 should load faster by reducing meta queries and eliminating N+1 queries.

Fixes

  • Force open "Product data" tab that in some cases always stays collapsed.
  • WP 6.9 Command Palette doesn't work - creates empty appointment.
  • Appointment not saved in final checkout step. Add comprehensive logging and fallbacks to prevent this.
  • Pagination for Appointments in My Account page broken after WooCommerce update.

[5.0.0-rc2] - December 10, 2025

Pre-release

Improvements

  • Create internal rest api to cover all plugin aspects from a single source of truth.
  • When appointment is edited in admin, add detailed changes to order note.
  • Add Screen Options for admin calendar, where user can switch to legacy calendar temporarily.
  • Make all API text strings not translatable to reduce translation workload, end user does not see them.
  • Speed up front calendar loading.
  • Use same loading animation for the new admin calendar and front-end calendar.
  • Complete front calendar ajax call quick with daily buckets.
  • Front calendar staff in querystring now performs only 1 ajax call.
  • Updated Product Add-ons to 8.1.2
  • Add what's new page for the 5.0.0 release in admin when user updates to 5.0.0 or activates it.
  • Inventory maximum will be enforced through validation with cost calculations.
  • Update license key activation process.
  • Updated all translations.
  • Apply user selected color scheme in admin across appointment pages

Fixes

  • Front calendar does not have product ID properly set on init.
  • Do not show notice to add appointable product on plugin activation if any already exist.
  • All staff assigned together issue fix applied to multiple levels for future reference.

[5.0.0-rc1] - December 4, 2025

Pre-release

Improvements

  • Adding a function to ensure postmeta indexes exist for appointment date queries. Plugin reactivation/update needed.
  • Add daily fail check for the appointments indexed health to make sure they are in check at all times.
  • Make backfill for indexing fail proof by saving progress by each batch processed.
  • Update readme file in root with new build instructions.
  • Add warning in admin calendar when REST API is disabled for the site.
  • Make front-end calendar resilient to errors in external scripts so it loads at all times.

Fixes

  • ESbuild corrupts JS during minification and removes dependencies so minified JS files are not working as expected.
  • Indexed path does not consider global rules correctly.
  • Generate slots for days that are booked out, to avoid skipping days when checking for availability.
  • Backwards compatibility with PHP 7.4 to ensure compatibility with older configurations.
  • Admin calendar not rendering unavailability for date based rules.
  • Hide normal dropdown before select2 dropdown renders for staff selection.

[5.0.0-beta9] - December 2, 2025

Pre-release

✨ Feature

  • Updated and modernized build process, pure NPM without Grunt and complexities, no compiles from crap like Webpack.

Improvements

  • Named constants over magic values, created WC_Appointments_Constants.
  • Make sure NPM does not execute git commands without approval.
  • Added plugin hook validation for all hooks so we do not push broken actions/filters.
  • Added PHPUnit test to run tests on functionality automatically.
  • Load appointments to admin calendar instantly and preload all views dynamically.
  • Structure code with better semantics for input/output expectations.
  • Document main code functions better with better explanations.
  • Linted all translation strings and translations comments and fixed all remaining issues.
  • Linted all CSS and JS files with updated rules and fixed the remaining issues.
  • Add better fail checks and validation so rules reach horizon at all times.
  • Make sure SSE works on multisite installations fine and resets last event ID correctly.
  • Reduced plugin delivery code size by 20% due to optimizations and removal of redundancy.

Fixes

  • Fixed all hooks with own script that validates them automatically during build process now.
  • Make sure appointment status is not null at any point.

[5.0.0-beta8] - November 27, 2025

Pre-release

✨ Feature

  • Atomic reservation operations that handle race conditions and prevents double appointments at high traffic.

Improvements

  • Updated v2/appointments and v2/availabilities API to use indexed path when within horizon and enabled.
  • Updated v2/appointments and v2/availabilities API to use scope(s) to return available/unavailable range.
  • Admin calendar should not only show unavailability from rrules, but also consider exceptions.
  • Admin calendar filters should sort product and staff alphabetically.
  • Admin calendar filter for staff should show avatar/gravatar.
  • Admin calendar appointment view modal should show avatar/gravatar for customer.
  • Admin calendar has ability to confirm/cancel appointment instantly.
  • Admin calendar loads appointments slightly faster on initial load.
  • Admin calendar appointment view popup should show skeleton until elements are loaded inside.
  • Admin calendar Should load appointments and availabilities once and avoid double fetching.
  • Admin calendar should show reload button when 403 API error is shown.
  • Admin calendar should follow the same rules hierarchy server side uses.
  • Integrate WooPayments multi-currency with new appointment creation modal in admin.
  • Use indexed results for the appointments API when in range and enabled.
  • Updated all translations.
  • Admin modal for creating appointments should use formatted dates that are easily readable.

Fixes

  • Bug fix #1014, Admin calendar not showing rules in the background.
  • Unavailability not showing ok in admin calendar when switching views.
  • Do not update duration in appointment creation modal, when selecting add-on that has no duration.
  • Unavailability not showing ok in admin calendar in month view.
  • Bug fix #839, Appointment card in the calendar doesn't show the discounted price of the appointment.
  • SSE should reconnect after errors and work reliably at all times.
  • Bug fix #1225, Admin calendar should not duplicate appointments/rules when they are updated.
  • Account for tax when creating appointments in admin modal and make sure to calculate order totals correctly.
  • Appointments API should return appointments that overlap with the requested date range, not just those completely within it.

[5.0.0-beta7] - November 22, 2025

Pre-release

✨ Features

  • Live real-time Admin Calendar where user can create/move/cancel appointments from the calendar.
  • Live real-time Admin Calendar works 2-ways and shows appointments/rules instantly after being created/edited anywhere.
  • Introducing WebHooks, initially for appointments and availabilities.
  • Introducing SSE, used for live stream of updated appointment and availabilities.

Improvements

  • Add order note when editing appointment in admin calendar.
  • Admin calendar appointment should be represented with the set appointable product color.
  • Admin calendar should load appointments as first paint and availabilities concurrently.
  • Admin calendar changes should add order note for every change.
  • Cancelled appointment in admin calendar have reduced opacity, same as past appointments.
  • Updated all translations.
  • Move external scripts to /vendor folder and only registere minimized versions.

Fixes

  • Make sure appointment does not stay in cart, status transitions and order ID is queried after DB cache.
  • Add availability rule validation to block empty availability saves.
  • Add guards to prevent multiple same-time openings of appointment creation modal in admin.
  • Price calculations with add-ons selected is off in some cases, negative price must be properly included.
  • Fix translations in file templates\order\admin\appointment-display.php, escaping dropped translations.

[5.0.0-beta6] - November 17, 2025

Pre-release

Improvements

  • Compatibility with WordPress 6.9.
  • Added downloadable items to the confirmation email.
  • Compatibility with WooCommerce Twilio SMS Notifications 1.19.3.
  • Updated Product Add-ons to 8.1.1.
  • Time zone calculations fallback to UTC when timezone is not set.
  • Make indexed path very fast and avoid appointment-day bucketing.
  • Make Rest API /slots indexed path very fast with option to combine staff and pagination.
  • Rest API for /slots can be used as paged_stream with fast track to slots.
  • Rest API for /staff show show all staff, when product isn't set.

Fixes

  • Modal for creating appointment price editing styling issue.
  • Modal for creating appointment not loading correctly on some pages in admin.
  • REST API /appointments cancelled status doesn't work.
  • Staff assignment not working, when all staff are assigned together.
  • Some slots for staff are shown, but are not available.
  • When changing the appointment quantity, it doesn't update it in the order.
  • Memcached might cause multiple new order email. Prevent same status set multiple times.
  • Memcached might cause appointments to not be tied to order.
  • Memcached might revert changes in 2-way gcal sync.
  • Memcached might cause appointments to not go to 'paid' status.

[5.0.0-beta5] - November 13, 2025

Pre-release

✨ Feature

  • REST API v2 added with full support for GET, POST, PUT, DELETE and PATCH.

Improvements

  • REST API uses WooCommerce’s permission check in public read endpoints.
  • Do not duplicate Confirmation email if sent at the same time to same email address (customer and admin).
  • All API calls fully documented in code.
  • Appointments API returns start_utc and end_utc in ISO 8601 format.
  • Updated all translations.

Fixes

  • Add include_sold_out option to indexed path.
  • Product with no staff does not show occupancy indicators in calendar correctly.
  • Undefined variable $is_next_day in rule manager.

[5.0.0-beta4] - November 10, 2025

Pre-release

✨ Feature

  • Add COGs for appointment edit screen (WC 10.3 feature). Internal price of goods/services to monitor.

Improvements

  • Modal for creating appointments should only use time dropdown instead of html5 time selection.
  • Use date_i18n() instead of date() when editing appointment in admin.
  • Compatibility with WooCommerce 10.3.
  • Creating appointment in modal includes simple actions after appointment has been created.
  • Modal for creating appointments now includes payment methods.
  • Modal for creating appointments should trigger actions selectively and only when needed.
  • Modal for creating appointments opens product search instantly after being opened.
  • Appointment form block change/edit/view buttons moved to block toolbar.
  • When manual re-indexing, first flush all the cache and drop the indexed results, do not overwrite.
  • When manual re-indexing, finish in one go until your reach the horizon.

Fixes

  • Modal not saving day and month duration appointments correctly.
  • Re-index untrashed appointments.
  • Add-ons image swatch does not keep preselected value.
  • Add-ons called twice which corrupted the output in some cases.
  • Confirmed appointments trigger multiple actions unnecessarily.
  • Bug fix #1021, overnight appointment not checking availability for next day.
  • Bug fix #1218, multiple appointment forms not working with auto-select on same page.
  • Bug fix #1203, same staff on different products not working ok with hour/minute duration.
  • Bug Fix #1215, shows non-bookable slots and end is not enforced in rules correctly.
  • Bug Fix #1194, added safeguards to prevent scheduled notifications being sent in a loop.
  • Bug Fix #1212, padding from product in the appointment not taken into account.
  • Bug Fix #1195, was-in-cart appointments created and added to order .
  • Stop Sync same multievent creation by combining a short-lived atomic lock and an idempotent preflight search.
  • When no staff selected, slots do not have correct quantity computed or are missing.
  • Deleting availability rules does not delete them from index instantly.
  • Product auto-select skips current day.

[5.0.0-beta3] - October 30, 2025

Pre-release

✨ Feature

  • Creating appointments in admin through modal.

Improvements

  • Custom pricing rules: base cost applies if appointment is within rule range by part or as a whole.
  • Custom pricing rules: slot cost applies for each slot calculated by intervals.
  • Allow creating new appointments in admin that are not available.
  • Manual re-indexing shows gradual progress and runs in small chunks of 50 items per run.

Fixes

  • Fixed issue #1208, where showing slots that are not available.
  • When interval is longer than available time, it shows no slots for that day.
  • Indexing custom:daterange rules might add additional day.
  • time:range and custom:daterange overnight rules not working fine.
  • Default add-on header text in product edit screen wrongly wrapped with <p></p>.
  • Indexing could skip current time if start date/time was in the past.
  • custom:daterange rule until midnight blocks the whole next day.
  • Add 30 days grace period for rules to be :expired and hidden from admin.

[5.0.0-beta2] - October 18, 2025

Pre-release

✨ Features

  • Introduce Availability Filter block.
  • Introduce Appointment Form block.

Improvements

  • Max quantity available normalization across product/staff/rules.
  • Re-indexing indicators should be more apparent.
  • Manually saving lots of availability rules is now possible without server adjustments.
  • Updated all translations and added strings for new features.
  • Updated analytics code rendering for Staff selection.

Fixes

  • Staff sync not working correctly for new users.
  • Normalize hooks with typos and make sure it works both ways.

[5.0.0-beta1] - October 15, 2025

Pre-release

✨ Feature

  • Introduce indexing or availability rules and appointments.

Improvements

  • Improved default date selection when you opt for first available slot selection.
  • Updated Product Add-ons to 8.1.0.
  • Product Add-ons display control over heading for each section.
  • Compatibility with WooCommerce 10.2.
  • Google Calendar sync now works with better logic.
  • Sync cancelled instances or recurring events as exceptions.

Fixes

  • Automatically assigned (all staff together) doesnt check all staff's availability.
  • WP update handling metaboxes collapses whole product edit screen on staff toggle.
  • Remove persistent notice when appointment has been removed from cart.
  • Month picker querystring not updating.
  • RRule should block the whole days with time range for daily duration products.
  • Availability from not working ok with daily duration for custom:daterange rules.
  • Products that go overnight can be overbooked - no check for actual availability.
  • Google Sync is slowing down Appointments and Check out process.
  • Padding not working fine in some occasions, when duration and intervals are different.
  • Fixed Cart Coupon not working ok when canceling an appointment.
  • interval larger than duration might cause issues.
  • Monthly duration doesn't jump to the first available month.
  • Make sure get_cart is not called before wp_loaded action.

[4.26.4] - August 23, 2025

Fix

  • Return $appointments to filters to avoid breaks with custom code.

[4.26.3] - August 22, 2025

Fix

  • Exclude expired availability and cost rules.

[4.26.2] - August 22, 2025

Improvement

  • Compatibility with WooCommerce 10.1.

Fixes

  • Updated compatibility with WooCommerce Sequential Order Numbers Pro.
  • Make sure expired availability rules are not included.

[4.26.1] - August 21, 2025

Fix

  • Caching start/end times breaks capacity rules.

[4.26.0] - August 20, 2025

Improvements

  • Avoid multiple appointments query and cache the query.
  • Updated php rrule to 2.6.0.
  • Clean up old availability rules. Old rules have '%:expired' added to 'range_type'.
  • RRules loading times are faster.
  • Optimize function get_appointment_ids_by for better performance.

Fixes

  • Make sure appointments query skips false objects from DB (caching issue).
  • Mislabeled months availability rule with week count (52) instead of month count (12).
  • 'jquery-tiptip' script missing 'dompurify' dependency.
  • Syncing custom statuses to Google Calendar not working.

[4.25.2] - July 20, 2025

Improvements

  • Compatibility with WooCommerce 10.0.
  • Updated Product Add-ons to 7.9.1.

Fix

  • Clear appointments from cart even ifWooCommerce hold stock options are set to zero.

[4.25.1] - June 16, 2025

Fix

  • Filter typo 'wc_apointments_sync_with_padding' is written as 'wc_appointments_sync_with_padding'.

[4.25.0] - June 15, 2025

✨ Feature

  • Add revenue/sales by staff in WC Analytics.

Improvements

  • Option to apply product padding to synced rules with a filter 'wc_appointments_sync_with_padding'.
  • Updated Product Add-ons to 7.9.0.
  • Compatibility with WooCommerce 9.9.
  • Option to filter timezone options with filter 'woocommerce_appointments_wp_timezone_choice'.
  • Added new action hook 'woocommerce_after_' . $this->object_type . '_object_save'.
  • Added new action hook 'woocommerce_appointment_maybe_schedule_event'.
  • Added new action hook 'woocommerce_appointment_clear_cron_hooks.
  • Added new filter hook 'woocommerce_appointments_stop_order_delete'.
  • Added new filter hook 'woocommerce_appointments_stop_order_update'.
  • Added new filter hook 'wc_appointments_staff_display_name'.
  • Added product padding info to synced event.

Fixes

  • Undefined variable $wp_button_class.
  • Filtering by appointment product type in WC Analytics not working correctly.
  • Navigation compatibility with WC 9.9.
  • Missing param in woocommerce_appointments_gcal_sync_order_meta.
  • Addons with Images are missing the "none" option.

[4.24.0] - April 26, 2025

Improvements

  • Compatibility with WordPress 6.8.
  • Privacy compatibility with WooCommerce.
  • Updated compatibility with Polylang for WooCommerce 2.1.4.
  • Added duration variable for AutomateWoo.
  • Add order related variables to AutomateWoo.
  • PHP 8.4 compatibility for implicitly defined variables.
  • Updated all translations.
  • Minimum PHP requirement bumped to 7.4.

Fixes

  • Some translations loading too early since WordPress 6.8.
  • Fatal error when removing staff from appointment.
  • Time slots not available for staff, when they should be.

[4.23.1] - April 14, 2025

✨ Feature

  • WooCommerce Email Preview full integration.

Improvements

  • Make sure email classes are not redeclared with external extensions.
  • Updated Product Add-ons to 7.8.1.

Fix

  • Missing $product object for WooCommerce Payments extension.

[4.23.0] - April 12, 2025

Improvements

  • Compatibility with WooCommerce 9.8.
  • WooCommerce minimum supported is 9.6.
  • Updated integration with WooCommerce Deposits 2.3.7.
  • Updated integration with WooCommerce Deposits by Webtomizer 4.6.9.
  • Updated integration with WooCommerce Payments 9.2.0.

[4.22.8] - March 13, 2025

Improvements

  • Updated Product Add-ons to 7.7.0.
  • Max capacity can now be defined above inventory limit to suit availability rules defined capacity.

Fix

  • Cancelled appointments do not get deleted for staff in synced calendar.

[4.22.7] - March 10, 2025

Improvements

  • Product add-ons CSS fixes.
  • Updated php rrule to 2.5.2.

Fix

  • Custom pricing rules not saving correctly.

[4.22.6] - March 8, 2025

Improvements

  • Updated Product Add-ons to 7.6.0.
  • Hide appointment add-on options in admin different product types.
  • Make sure 'require confirmation' payment method is always available.
  • Updated all translations.
  • Added missing plural forms for Hebrew translations.
  • PHP 8.4 compatibility for custom pricing fields.

Fix

  • Cancelled appointments do not get deleted in sync in some cases.

[4.22.5] - March 5, 2025

Improvement

  • Deprecated 'wc_appointment_get_timezone_string' in favor of 'wc_timezone_string'.

Fix

  • Cancelled appointments do not get deleted in sync in some cases.

[4.22.4] - February 27, 2025

Improvements

  • Backwards compatiblity with WooCommerce Twilio SMS Notifications extension.
  • Make sure appointment quantity cannot be set as zero in admin.

Fixes

  • WCML not working if multicurrency is disabled.
  • Ensure that the 'WooCommerce Appointments' gateway remains hidden on the new WooCommerce Payments settings page.
  • Do not run sync of cancelled appointment twice.
  • Canceling an appointment doesn't remove it from staff's synced gCal.

[4.22.3] - February 19, 2025

Improvement

  • WooCommerce Twilio SMS Notifications 1.19.0 not calling get_cart() correctly.

[4.22.2] - February 19, 2025

Improvements

  • Reset selected time slots when switching months or years on the calendar.
  • Compatibility with WooCommerce Twilio SMS Notifications 1.19.0.
  • Updated all translations and improved plural forms for Hebrew.

Fix

  • Error with WooCommerce Multilingual & Multicurrency (5.4.0).

[4.22.1] - February 16, 2025

Improvements

  • Compatibility with WooCommerce 9.7.
  • WooCommerce Multilingual 5.4.0 compatibility.
  • Updated Product Add-ons to 7.5.0.
  • All formated order meta data now synced with Google calendar event.

Fix

  • Deleting synced event in staff's gCal doesn't cancel it on the site.

[4.22.0] - February 13, 2025

Improvements

  • Updated Product Add-ons to 7.4.0.
  • Remove additional unnecessary strings for gcal event sync.
  • Log errors on appointment / appointable product query.
  • Compatibility with WooCommerce 9.6.
  • Compatibility with AutomateWoo 6.1.5.
  • Compatibility with WooCommerce Multilingual 5.3.9.
  • WPML multicurrency for addons not working.
  • Compatibility with WPML Multilingual CMS 4.6.15.
  • Updated code build process to match PHP 8.3.
  • Updated all translations and added new add-ons strings.
  • Better file loading structure.

Fixes

  • Analytics translation for filtering by Appointable products.
  • TM Extra Product Options not syncing to gCal.
  • Removed redundant 'notranslate' class as it is added on fields directly.
  • Google calendar sync can offset time for 1 hour unintentionally.
  • iOS and Firefox issue with too many addons.
  • Changing time of synced app in gCal syncs it back with wrong time.
  • Changing staff won’t syn to Gcal.
  • Staff 2-way sync for multiple staff doesn't work properly.
  • Make sure different time zones on website and Google calendar work ok together in all cases.
  • Reminder email before send checking uses UTC instead of local time.

[4.21.8] - December 3, 2024

Improvements

  • Updated Product Add-ons to 7.2.1.
  • Compatibility with WooCommerce 9.5.

Fix

  • Product Add-ons quantity field not updating price.

[4.21.7] - December 2, 2024

Improvements

  • Move core plugin functions to load earlier.
  • Add-ons plugin activation loading for both admin/frontend.
  • Updated moment-timezone-with-data.js lib to v0.5.45.
  • Updated moment-with-locales.js lib to v2.30.1.

Fixes

  • PHP 7.4 error correction. Though PHP 8.2+ is required.
  • REST API: usort fix for PHP 8.0+.

[4.21.6] - November 29, 2024

Fix

  • Final correction in 4.21.+ saga.

[4.21.5] - November 28, 2024

Improvements

  • Load integrations early after plugins are loaded.
  • Remove Select2 scripts and styles and only use Select2 from WooCommerce.

Fix

  • Google calendar sync PHP error.

[4.21.4] - November 27, 2024

Improvements

  • Filter ‘get_appointment_products_args’ includes all args.
  • Move $qrey_vars in get_appointments_for_user function.

Fix

  • Appointable product edit screen broken.

[4.21.3] - November 26, 2024

Improvements

  • Updated Product Add-ons to 7.2.0.
  • Updated Slovenian translation.

Fixes

  • Google calendar sync not working.
  • Exporting appointments not working.
  • Email notifications not working.
  • Appointments permalink in my-account not working.
  • Requiring confirmations not working.

[4.21.2] - November 22, 2024

Improvement

  • Remove 2 metadata fields in synced gCal.

Fix

  • Appointments shortcodes not working.

[4.21.1] - November 20, 2024

Improvements

  • Remove deprecated WooCommerce Admin plugin menus.
  • Updated Product Add-ons to 7.1.2.
  • Compatibility with WordPress 6.7.
  • Compatibility with WooCommerce 9.4.
  • Added additional 'notranslate' class to prevent plugin from transating fields.
  • Filter ‘get_appointment_products_args’ should include ‘author’.

Fix

  • Translations not working (for non English sites).

[4.21.0] - October 7, 2024

Improvements

  • Clear cache only when post object is defined for the appointments.
  • Improved compatibility with Polylang for WooCommerce.
  • Fixed strings to Hebrew translation.
  • Updated Product Add-ons to 7.1.0.
  • Updated all translations and adjusted add-ons strings.
  • Compatibility with WooCommerce 9.3.
  • Use pretty uniform pretty time duration display.
  • SMS "Customer Confirmation message" missing info.
  • Removed option to edit order inside appointment edit screen in admin.
  • Added filter to allow not updating gCal description on appointment update.
  • Updated php rrule to 2.5.1.

Fixes

  • PHP 8.2 error when empty array present.
  • Recurring events in gCal not blocking out times.
  • gCal recurring event blocking out the wrong time.

[4.20.0] - June 29, 2024

✨ Features

  • Added WC Payments multicurrency support.
  • Added Appointable product to Analytics for filtering.

Improvements

  • Better integration with WooCommerce Payments gateway.
  • Add-ons integration added earlier, better compatibility with external plugins.
  • Updated Product Add-ons to 6.8.4.
  • Handling failed orders with appointments added back with additional validations.
  • Bump "WC requires at least" to version 8.7.
  • Compatibility with WooCommerce 9.0.

Fixes

  • Add-ons work with WC Payments for appointable products.
  • Updating manually added Appointment in Order can create critical error.
  • Timezone visible in admin for non-timezone appointments.

[4.19.1] - May 22, 2024

✨ Feature

  • Integration with Official WooCommerce Stripe Gateway.

Improvements

  • List WooCommerce plugin as a requirement for Appointments to work properly.
  • Updated Product Add-ons to 6.8.3.
  • Compatibility with WordPress 6.5.
  • Compatibility with WooCommerce 8.9.

Fixes

  • Uncaught Error: Class ‘WC_PAO_Admin_Notices’ not found.
  • Report dashboard count translation error.

[4.19.0] - March 26, 2024

✨ Features

  • Add a DATE add-on custom field.
  • Appointments saved with a site's timezone and customer's set timezone (optional).
  • Integration with AutomateWoo extension.

Improvements

  • Updated all translations.
  • Updated and added strings to Hebrew translation.
  • Updated Product Add-ons to 6.8.0.
  • Revert Appointment status to "in-cart" when order fails to enable re-payment.
  • Compatibility with WooCommerce 8.7.

Fixes

  • Importing addons globally does not work.
  • Missing View cart button on individually sold appointments.
  • Clear cache when appointment is trashed/untrashed.
  • Can't reorder addons.

[4.18.2] - February 22, 2024

Improvement

  • Simplified each order item ID call to speed the query.

Fixes

  • Blocks for appointments not loading, remove version checking as core supports it.
  • Exporting admin created appointments with tax is wrong.

[4.18.1] - February 16, 2024

Improvements

  • Updated Product Add-ons to 6.6.0.
  • PHP 8.3 compatibility.
  • Updated all translations.
  • Compatibility with WooCommerce Deposits 2.2.5.
  • Compatibility with WooCommerce 8.6.
  • DB length of the calendar event ID in availability rules set from 100 to 255.
  • Improved loading times for the time slots.

Fixes

  • Product Add-ons import not working.
  • Manual appointment with customer not working.
  • WooCommerce Deposits stutus set as paid for non-deposit appointments.
  • Adding appointments in admin with WooCommerce 8.6+.

[4.18.0] - November 10, 2023

Improvements

  • Compatibility with WordPress 6.4.
  • Include quantity field as hidden even when customer cannot choose the qty.
  • Removed excessive caching that could cause query issues.
  • gCal additonal staff ID checks when syncing.
  • Updated all translations.

Fixes

  • Free products status stays in-cart instead of paid.
  • Big issue when booking multiple appointments in one order with 100% discount.
  • Addons add a + sign even if the value is negative - fix it.
  • Skip staff ID's on sync attempt when empty.
  • Cannot assign appointments to existing orders with COT enabled.
  • WooCommerce TM Extra Product Options not working, when product quantity is missing.

[4.17.4] - November 7, 2023

Improvements

  • Compatibility check with WooCommerce TM Extra Product Options 6.3.2.
  • Compatibility with WooCommerce 8.2.
  • Updated Product Add-ons to 6.5.0.
  • Better integration with Product Add-ons blocks.
  • Updated all translations. Added lots on new strings.
  • Compatibility with WordPress 6.3.
  • PHP 8.2.8 compatibility.
  • Updated Product Add-ons to 6.4.5.
  • Radio Addons add a "none" feature people don't want.
  • Updated php rrule to 2.4.1.
  • Compatibility with WooCommerce 8.0.
  • Hidden input forms don't need a label.
  • Prevent quantity editing for appointable products.
  • Unnecessary call to constructor of extended WC_Appointment_CSV_Exporter class.
  • Do not cancel appointments with failed payments, unpaid status is sufficient.
  • Added filter 'woocommerce_appointments_gcal_remove_from_gcal'.
  • Updated php rrule to 2.3.2.
  • Updated rrule.js to v2.7.1.
  • Updated Product Add-ons to 6.4.3.
  • Compatible with PHP 8.1.9.
  • Removed Action Scheduler library since it is included with WooCommerce since 3.0.
  • Compatibility with WordPress 6.2.
  • Compatibility with WooCommerce 7.8.
  • Updated all translations. Added lots on new strings.
  • Updated Moment.js timezone lib to v0.5.43.

Fixes

  • Additional checks to make sure only appointments are rendered in templates.
  • Some addons missing closing DIV element - breaks layout of the site.
  • gCal for staff not working.
  • Addons checkbox missing closing DIV element - breaks layout of the site.
  • Adding appointment in admin to existing order not working.
  • Adding appointment in admin redirect is wrong.
  • Customer cancelled appointment does not cancel the TAX.
  • Cart block product quantity editing disabled.
  • Bug with untrash_post.
  • unneccessary pao_ids in gCal event after.
  • FUE (Follow Ups) integration update.
  • Fix Hebrew translation.
  • Restore trashed Appointment triggers FATAL ERROR.

[4.16.1] - November 28, 2022

Fix

  • Do not cancel unpaid orders.

[4.16.0] - November 28, 2022

✨ Features

  • Support for High-performance Order Storage ("HPOS"), also known as Custom Order Tables, "COT".
  • Structure to support WooCommerce blocks.
  • Ability to checkout appointments that require confirmation with the new WooCommerce blocks.

Improvements

  • Simplified appointment page for customer accounts.
  • Pricing override slot rule redundant.
  • Updated Product Add-ons to 5.0.2.
  • Set minimum PHP version to 7.0.
  • Set minimum WordPress version to 5.6.
  • Set minimum WooCommerce version to 6.0.
  • Compatibility with WooCommerce 7.1.
  • Remove redundant cost calculation for overrides.
  • Hide appointments payment gateway in the admin as it has no configuration.
  • Mark the confirmed appointments order as complete if the total is zero.
  • Removed legacy code for appointable product setup.
  • Option to register scripts as the type of 'module'.
  • Renamed gateway name/ID from 'wc-appointment-gateway' to 'wcappointmentsgateway'.
  • Updated all translations.

Fixes

  • Avoid PHP warnings when adding appointment manually.
  • Delete transient of appointment removed from cart to free up the product slots.
  • Do not change a failed order to "pending" when the appointment goes to "unpaid".
  • Appointments list API results count inconsistent.
  • Show category in API only if it has a appointable product.
  • REST API returns days that are not appointable.
  • Hide products from the /slot endpoint if their catalog visibility is set to hidden.

[4.15.0] - October 21, 2022

Improvements

  • Beginning the switch to ES6 in JS files.
  • Remaining chars in add-on fields duplicated.
  • Compatibility with WooCommerce 7.0.
  • Compatibility with WordPress 6.0.
  • Updated Product Add-ons to 5.0.0.
  • Filtered statuses for the Follow up emails.

Fixes

  • Inventory not taken into account when rescheduling in frontend - overbookings possible.
  • The tax string on single product page is displayed twice for Appointable products.

[4.14.8] - May 3, 2022

Improvements

  • Updated Product Add-ons to 4.9.0.
  • Compatibility with WooCommerce 6.4.
  • Updated all translations.

Fixes

  • was-in-cart status not removed and can build up in the backlog.
  • German, Dutch and French translation issues.
  • WPML availability rule quantity not copied.

[4.14.7] - January 27, 2022

Fix

  • Product Add-ons Subtotal never shown in 4.14.5.

[4.14.6] - January 27, 2022

Improvements

  • Replaced all dashicons for the calendar with HTML character.
  • Appointment number can now also accept strings from external plugins.

Fixes

  • Product Add-ons Subtotal never shown in 4.14.5.
  • TM Product Extra Product Options plugin and Add-ons positioning issue in cart.

[4.14.5] - January 26, 2022

Improvements

  • Compatibility with WordPress 5.9.
  • Updated compatibility with Polylang for WooCommerce 1.6.2.
  • Updated Product Add-ons to 4.5.0.

Fixes

  • Polylang staff costs and quantity erased on translated products.
  • Datepicker in admin shows html instead of icon from WP 5.9.
  • WC product Addons translation not working.

[4.14.4] - January 2, 2022

Improvements

  • Added 'woocommerce_appointments_product_defaults' to filter product defaults.
  • Added better compatibility with the Square payment plugin.
  • Compatibility with WooCommerce 6.1.
  • Updated Product Add-ons to 4.4.0.

Fix

  • Pagination at My Appointments account section.

[4.14.3] - October 8, 2021

Improvements

  • Replaced more array() instances with shorthand [] instance.
  • Updated Spanish translations.
  • Added new translated strings to all languages.
  • WooCommerce Payments multicurrency support for add-on fields.

Fixes

  • Some strings in "appointment-summary-list.php" are not translatable since 4.14.1.
  • Admin calendar should include the tax amount for listed appointments.
  • All new products (even simple) have the 'Virtual' option checked.
  • Saved customer ID for the appointment not shown.
  • Multi-day duration does not highlight selected days on disabled dates.
  • Pagination at My Appointments account section.

[4.14.2] - October 2, 2021

Improvements

  • Updated Product Add-ons to 4.2.0.
  • Products sold individually now work the same as default WC functionality.
  • Updated all translations.
  • WooCommerce Payments integration support.

Fixes

  • Heading for confirmation emails might be empty with external plugins.
  • WPML multicurrency does not work ok for appointments created in admin.
  • Reminder emails not always sent, when they should be.
  • Wrong time zone auto selected due to caching.

[4.14.1] - September 26, 2021

Fixes

  • md5() has array instead of string.
  • When more slots are scheduled than available, the slot should not be visible.

[4.14.0] - September 17, 2021

✨ Features

  • Send email to admin/staff when customer reschedules the appointment.
  • Add the 'sold individually' option for appointable products.

Improvements

  • Compatibility with WooCommerce 5.7.
  • Simplified echos to esc_html_e and esc_url_e.
  • Updated all translations.
  • Added 'woocommerce_appointments_cancel_appointment_redirect' &

Fixes

  • Properly escaped appointment name and status.
  • Wrong Appointment Duration on Reschedule.
  • Added robust appointment validation in admin as well.
  • REST API visible to everyone with a link - should not be.
  • http_build_query() PHP8 warning.

[4.13.1] - July 6, 2021

Improvements

  • Send customer email notification when unpaid appointments are canceled.
  • Updated Product Add-ons to 4.1.0.
  • Percentage based fee for add-ons for NON Appointable products.
  • Better sanitization for the appointment ID display.
  • Removed "WooCommerce Create Customer on Order" integration.
  • Updated all translations.

Fix

  • Reschedule button does not work outside My account pages.

[4.13.0] - June 15, 2021

✨ Feature

  • Phone orders: add customer (billing) data, when adding appointments in admin.

Improvements

  • Compatibility with WooCommerce 5.4.
  • Compatibility with WordPress 5.8.
  • Updated all translations.
  • Option to skip cache for the "get_appointment_ids_from_order_item_id" method.
  • Updated Product Add-ons to 4.0.0.

Fixes

  • Add-ons console error when required fields are selected.
  • Availability filter widget not counting for the start day.
  • Missing closing <div> on the appointment edit screen.
  • Select add-ons do not show selected options on page reload.
  • When using radio select add-ons, the providers selection is reset on page reload.
  • Cart adding appointments twice.
  • Staff all together not working ok.
  • Selecting staff can result in rendering HTML instead of staff images.

[4.12.0] - April 16, 2021

Improvements

  • Compatibility with WooCommerce 5.2.
  • Updated Product Add-ons to 3.7.0.
  • Updated all translations.
  • Only add appointment status in 'view-order' endpoint, order already has this.
  • REST-API filter appointments by customer_id.
  • Availability widget filter should include the end date.
  • Added 'wc_appointments_before_find_scheduled_day_slots' for filtering posted data.

Fixes

  • Default date not working correctly.
  • Auto updater not working.
  • Staff selection now only loads slots for the selected staff.
  • Cancel and Reschedule buttons now have nowrap style to prevent letter breaking.

[4.11.9] - March 22, 2021

Improvements

  • Add filter 'woocommerce_appointments_gcal_sync_twoway_enabled' for two way sync.
  • Add filter 'woocommerce_appointments_sync_from_gcal_event_start' for event sync.
  • Removed Select2 override classes for the admin fields.
  • WooCommerce Follow Up Emails appointment statuses trigger error.

[4.11.8] - March 20, 2021

Improvements

  • Attach user to appointment status changes.
  • Additional check for $product object (better compatibility with other plugins).
  • Re-tested compatibility with WooCommerce Follow Up Emails 4.9.13.

Fixes

  • Availability filter not formatted correctly as yyyy-mm-dd.
  • User not queried correctly after the product import.
  • Appointment customer not showing correctly.
  • Exporting/importing add-ons not importing duration.
  • Added was-in-cart appointment status to the list of all statuses.

[4.11.7] - March 14, 2021

Improvement

  • Removed code for very old WooCommerce versions not supported any more.

Fix

  • Payments can remain unpaid when payment gateways complete orders early.

[4.11.6] - March 12, 2021

Improvements

  • Prioritize WC_Customer data over pulling customer info from orders.
  • Updated French translation.
  • Cached WC_Order and WC_Customer queries for the appointment object.
  • Better code standards (phase 1).
  • Updated Product Add-ons to 3.5.0.

Fixes

  • Flush cache for products with single staff.
  • Don't cancel already cancelled appointment during sync.
  • Recurring events can sync with 1 hour difference (DST issue).

[4.11.5] - March 1, 2021

Improvement

  • Add 'woocommerce_appointments_gcal_sync_order_meta' filter for order meta sync.

Fixes

  • Make compatibility check for navigation work correctly in older WC versions.
  • Updating appointment changes from the synced gcal event can break time.
  • Sync appointment changes to the calendar event's description.

[4.11.4] - February 27, 2021

Improvements

  • Register menu items with WC Admin Navigation feature (deactivated by default).
  • Integration with WooCommerce PDF Invoices & Packing Slips plugin.
  • Compatibility with WooCommerce 5.1. Beta tested.
  • Compatibility with WordPress 5.7. Beta tested.
  • Updated Product Add-ons to 3.4.0.
  • Do not include addons.js when no addons are set for the product.

Fixes

  • Bug with gCal sync, typo.
  • Pretty timestamp not calculated correctly for long duration in months/days.
  • Google Calendar not updating when appointment is rescheduled.

[4.11.3] - February 13, 2021

Improvements

  • Compatibility with WooCommerce 5.0.
  • Compatibility with WooCommerce Multilingual 4.11.2.
  • Updated Product Add-ons to 3.3.1.
  • Added 'woocommerce_appointment_status_changed' hook, when status transition changed.
  • Replaced empty array() instances with shorthand [] instance.
  • When billing data is empty, try getting it from shipping data.
  • Removed duplicate appointment ID queries in admin.

Fixes

  • PHP 8 notices for required parameters after optional ones.
  • PHP 8 notices with WPML activated.
  • Syncing staff and global sync for the same appointment.

[4.11.2] - January 24, 2021

Improvements

  • Faster shop page rendering by caching global addon query.
  • Always add search for staff selection.
  • Filter 'woocommerce_product_is_in_stock' reinstated.
  • Updated php rrule to 2.2.2.

Fixes

  • PHP 8 issue with get_price_html() method.
  • Fixed filter 'woocommerce_email_confirmed_recipients'.
  • Fixed filter 'woocommerce_email_reminder_recipients'.
  • Fixed filter 'woocommerce_email_follow_up_recipients'.
  • Uploading files as add-on fields not working, when appointment added in admin.

[4.11.1] - January 10, 2021

Improvement

  • Added 'woocommerce_appointments_get_addons' filter.

Fix

  • PHP 8 issue with single '&' operator for comparison.

[4.11.0] - December 29, 2020

Improvements

  • Add filter 'woocommerce_appointments_before_rescheduled_appointment'.
  • Also export custom appointment statuses.
  • Also export customer status.
  • Include product ID instead of object inside appointment form template.

Fixes

  • Rescheduling duration not always taken into account.
  • Make sure quantity added to cart is never zero.

[4.10.9] - December 23, 2020

Improvements

  • Added full Slovenian translation.
  • Compatibility with WooCommerce 4.9.
  • Integration with WooCommerce Multi Currency plugin.

[4.10.8] - December 18, 2020

Improvements

  • Add filter 'wc_appointments_find_scheduled_day_slots' for filtering ajax call for slots.
  • Escape JS text strings.
  • Confirmation dialog for “cancel appointment” (customer side).
  • Updated all translations.
  • Admin calendar now lists customer name before the appointment time.
  • Updated Product Add-ons to 3.3.0.
  • Updated Select2 library to 4.0.13.
  • Compatibility with WooCommerce 4.8.
  • Added partial Slovenian translation.

Fixes

  • Translate calendars in admin through $wp_locale.
  • Add missing placeholders to appointment emails.
  • Only send out a reminder and follow up emails if the appointment is active.
  • Availability widget not working for same day from/to dates.
  • Availability widget showing unavailable products after the first available product.

[4.10.7] - November 12, 2020

Improvements

  • Enqueue "Select2" script above "selectWoo" in admin due to html rendering issues.
  • Make sure get_current_screen() function exists to avoid errors.
  • Do not auto-select same time slot on time zone change.

Fixes

  • Check if availability object exists before attempting to delete it.
  • Undefined variable: pre_wc_30 for confirmation email template.
  • Overriding rrules from Google calendar not working.
  • Flushing cache for products when staff profile is updated or deleted.
  • Flushing cache for products when appointment is updated or deleted.

[4.10.6] - November 3, 2020

Improvements

  • Updated all translations.
  • Refactored meta-boxes file structure.
  • Cleaned customer meta-box html.

Fixes

  • Week numbers for the availability not correct for following years.
  • Follow up variables not working.
  • Show current appointments in My-account instead of Today's.

[4.10.5] - November 1, 2020

Improvements

  • Added filters to include sold out time slots.
  • Removed deprecated "jQuery( document ).ready" method to prevent late script execution.
  • Remove useless "slug" meta box for appointments edit screen.
  • Updated moment-timezone.js lib to v0.5.31.
  • Updated moment-with-locales.js lib to v2.29.1.

Fixes

  • Padding duration filter name duplicated.
  • Showing slots that are unavailable due to padding.
  • Overbooking - padding not taken into account.
  • Slots left not working ok with padding.

[4.10.4] - October 28, 2020

Improvements

  • Compatibility with WooCommerce 4.7.
  • Integration with WooCommerce Deposits - Partial Payments Plugin v3.0.
  • Add filter for Follow up emails variables: 'fue_appointments_variable_replacements'.
  • Add customer details to admin/staff email types.
  • Add order details to cancellation email sent to admin/staff.
  • Update rrule.js to v2.6.6.

Fixes

  • Exporting only 50 appointments and excluding cancelled appointments.
  • Available slots visible from previously selected staff (if new staff has no availability).

[4.10.3] - October 23, 2020

Improvements

  • Add end date/time to Admin Calendar View.
  • Added action attribute to appointment form for better compatibility with external plugins.

Fixes

  • Reduce appointment quantity for partial refunds.
  • Reminder email is sent even if there is not enough time.

[4.10.2] - October 21, 2020

Improvements

  • Compatibility with WordPress 5.6.
  • Ensure cache expires.
  • Replace WC date and time formats with function to avoid empty strings.
  • Searching for appointments in admin not working ok without orders.
  • Hiding addon price and/or duration label across board (emails, orders,...).
  • Updated all translations.

Fixes

  • Pagination for appointments in My account not working correctly.
  • Remove deprecated jQuery methods.
  • When retrieving ICS file, Use get_site_url instead of home_url for multisite installs.

[4.10.1] - October 20, 2020

Improvements

  • Harden the compatibility with product add-ons extension.
  • Cleaned the onboarding screen from unnecessary extensions.

Fixes

  • When creating new account, add customer from created order.
  • Follow Ups not working ok with v4.10.0.

[4.10.0] - October 9, 2020

Improvements

  • Compatibility with WooCommerce 4.6.
  • Possibility to change all arguments for appointment export functionality.
  • Add-ons trigger admin-ajax on every char typed - only trigger on cost/duration change.
  • Hide appointment status on thank you page, since it is not relevant there.
  • Send a note to customer, when they have rescheduled their appointment.
  • Option to send a note to customer, when appointment is manually updated by admin or staff.
  • Added $appointment object to filters:
  • Datepicker in the availability widget needs to use local WP date format.
  • Updated Product Add-ons to 3.1.0.
  • Updated all translations.
  • Compatibility with WooCommerce Box Office extension.
  • Added hooks before and after quantity field for better compatibility with external plugins.

Fixes

  • Free appointments that require confirmation should not ask the client for payment.
  • Current appointments not showing in customer account.
  • Fix SQL query filtering for availabilities.
  • Restricting days option missing Sat and Sun due to CSS bug.
  • Duration not taken into account with NOT available rules.
  • Availability widget not checking all dates in range.
  • Automatically assigned (all staff together) not working ok.
  • Product with staff members (one unavailable) and inventory more than 1 not working fine.
  • Fatal error in 4.9.9 regarding Follow Ups integration.
  • When quantity is more than the max - it shows wrong 'slots left' message.
  • Linted PHP files to prepare everything for PHP 8.
  • Slots visible from previously selected staff (if other staff has no availability).

[4.9.10] - August 19, 2020

Improvements

  • Google Calendar oAuth access set to offline to work when user is absent.
  • Compatibility with WooCommerce 4.4.
  • Lowered transient deletion to 500 at a time. Avoid timeout.
  • 'woocommerce_appointment_export_data_args' to allow changing export data arguments.
  • WordPress 5.5 metabox arrows removed from appointment info edit screen.
  • Brought back stupid Marketing menu item, since WooCommerce moved coupons there.

Fixes

  • WordPress 5.5 REST API compatibility changes.
  • Check for appointment object before looking further.
  • date_i18n bug.
  • Product Availability rule with lowest Quantity overrides all other quantities.
  • Rescheduling does not apply changes to synced gCal event.
  • Availability widget showing products that have no availability.

[4.9.9] - July 27, 2020

Improvements

  • Compatibility with WordPress 5.5.
  • Additional checks for email templates to make sure appointment object is present.
  • Updated Product Add-ons to 3.0.36.

Fixes

  • 'woocommerce_cart_emptied' can cause overbookings.
  • Appointments Export does not export add-ons.
  • Adjust for timezone when requesting available slots from the API.

[4.9.8] - July 7, 2020

✨ Feature

  • Rescheduling appointments by customers (when enabled).

Improvements

  • Updated Product Add-ons to 3.0.34.
  • Remove WooCommerce Marketing menu (again).
  • Updated all translations.

Fixes

  • Add-on images notice, when no image assigned to swatch option.
  • Multiple shortcodes on same page with autoselect don't work.
  • Using 'all staff together' shows unavailable days (without slots).
  • Twilio SMS integration: reminders not going out at the right time.
  • Input fields styling in admin misaligned.
  • Make sure staff selection is not crippled by selectWoo script.
  • Quatity add-on allows overbooking in backend.

[4.9.7] - June 23, 2020

✨ Feature

  • Export appointments to CSV.

Improvements

  • Added add-ons to appointment list and calendars in admin.
  • Compatibility with WooCommerce 4.3. Beta tested.
  • Add product pricing rules and add-on rules to standard WC import/export.
  • Updated all translations.
  • Minimum WooCommerce version requirement is now 3.1.
  • Datepickers in admin do not require jQuery UI css any more.

Fixes

  • Scheduling window defined in hours and over 24 hours not working ok.
  • Possible bug in Gmail with multiple ICS files in one email.
  • Admin calendar not linking to synced events.

[4.9.6] - June 13, 2020

Improvements

  • Improved French translation. Big thank you to Alexandre Doyen.
  • Add appointment object variable to wc_twilio_sms_appointments_token_map filter.

Fixes

  • Overlapping appointments in admin calendar over the header section.
  • Fresh installation can throw error since plugin version is not saved yet.
  • Availability rules spanning overnight not removing time slots.
  • Inventory acting weird for next day when day before goes after midnight.
  • Availability widget showing products when none have availability.

[4.9.5] - May 21, 2020

Improvements

  • Compatibility with WooCommerce Follow Up Emails 4.9.1.
  • Updated Product Add-ons to 3.0.33.
  • Flush memcahe, when external object caching is detected.

Fixes

  • Customer not attached to appointment when existing customer logs in during the checkout process.
  • WC Follow-ups 'Last status' not working.
  • Problem with Admin Calendar Day View. WP defined time zone not taken into account.
  • Availability widget showing products when none have availability.

[4.9.4] - May 9, 2020

Improvements

  • Updated Product Add-ons to 3.0.32.
  • Added filter 'wc_apointments_qty_scheduled_in_slot'.
  • Add 'data-remaining' to time slots.
  • Added filter 'woocommerce_appointments_get_padding_duration'.
  • Updated all translations.

Fixes

  • Security risk - mask Google calendar sync fields and store data securely.
  • When order is reverted to Pending Payment, mark appointments as unpaid.
  • Translators guidance for specific strings.
  • Reverse back .ics file change introduced in 4.9.2.
  • TC Extra Product Options not working with.

[4.9.3] - April 8, 2020

Improvements

  • Updated Product Add-ons to 3.0.28.
  • Disabled WC Marketing menu item.

Fixes

  • Select2 library CSS fixes in admin.
  • Need to add overflow CSS rule for availability rules in edit-product.
  • Bug with inventory allows overbooking in v4.9.2.

[4.9.2] - March 30, 2020

Improvements

  • Compatibility with WooCommerce 4.0.1+.
  • Updated Product Add-ons to 3.0.27.
  • Added filter 'wc_apointments_check_appointment_qty'.
  • Updated all translations.
  • ics for client has wrong time when using timezones.

Fixes

  • Fix issue with quotes translations on default email subjects.
  • Reminder email not sent on partially paid appointments with deposits.

[4.9.1] - March 9, 2020

Fix

  • Use Action Scheduler 3.0+ only with WooCommerce 4.0+.

[4.9.0] - March 9, 2020

Improvements

  • Compatibility with WooCommerce 4.0.
  • Compatibility with WordPress 5.4.
  • Updated Action Scheduler to 3.1.1.
  • Highlight appointment data instead of labels in appointment summary list.
  • Updated Product Add-ons to 3.0.25.
  • Updated all translations.

Fixes

  • Duplicated messages when removing inactive appointments from cart.
  • Fix integration with Deposits when the order is manually set to partially paid.
  • Missing time slot at 00:00 when overnight availability rules are set.
  • Overnight availability rules not working correctly.
  • Time zones missing time slots.
  • Problem with availability when automatically selecting staff.

[4.8.20] - February 21, 2020

Improvements

  • Updated compatibility with Polylang for WooCommerce 1.3.2.
  • Appointment providers label in emails should reflect staff label set in product edit screen.
  • Sanitize all tooltips.
  • Sanitize all recurring rule errors.
  • Updated all translations.

Fixes

  • On page reload with selected addon the addon price is not taken into account.
  • Confirmation required product gives fatal error when non-appointable product is added to cart.
  • Combine admin notices on appointments removed due to inactivity.

[4.8.19] - February 18, 2020

Improvements

  • Updated Product Add-ons to 3.0.24.
  • Order with free and paying product should set the free appointment as 'paid'.
  • Added "autocomplete=off" to appointment form to prevent browser issues with add-ons.

Fixes

  • Product import/export doesn't import everything.
  • Changing product of booked appointent doesn't reflect the change in order.

[4.8.18] - January 31, 2020

Improvements

  • Grey out all unavailable days.
  • Make Addons integration global through $GLOBALS['Appointments_Integration_Addons'].

[4.8.17] - January 31, 2020

Improvement

  • Updated all translations.

Fixes

  • Staff ID missing.
  • gCal rule that ends at the same time the slot should start doesn't work.

[4.8.16] - January 30, 2020

Fixes

  • Make sure staff quantity cannot be zero by default.
  • Appointments break manual subscription renewal for Woocommerce subscriptions.

[4.8.15] - January 28, 2020

Improvement

  • Cache calendar data once and remove duplicate day attributes.

Fixes

  • Availability widget not showing all products.
  • Follow Up email being cancelled.
  • On page reload with selected addon the addon price is not taken into account.

[4.8.14] - January 26, 2020

Improvements

  • Updated Product Add-ons to 3.0.21.
  • Prevent browser auto-complete to fill calendar date/time inputs.
  • For monthly appointable products, made it more clear with a 4-digit year instead of 2-digit.
  • New filter woocommerce_appointments_apply_multiple_rules_per_slot to allow rule cost calculation logic to be modified.

Fixes

  • Follow up emails extension: does not load individual product.
  • Restrict start/end days CSS issue (Saturday not available).
  • Product calendar styling sometimes incorrect on first page load.
  • Repeating gCal events blocking out too much time.

[4.8.13] - January 9, 2020

Improvements

  • Add $appointments to all slot filters.
  • Removed unnecessary styling for appointment summary in my-account orders.

Fixes

  • Recurring rules can break the availability, when not structured properly.
  • Sending time for the Follow Up email is not taken from the Email settings.

[4.8.12] - December 28, 2019

Fixes

  • When staff syncs to the same Google calendar as site, always sync to site's global rules.
  • Date range with time rule not working correctly.

[4.8.11] - December 27, 2019

Improvements

  • Add add-ons in the edit-appontment for Appointments with status ‘in-cart’ or ‘was-in-cart’.
  • Add the order details to the 'New Appointment admin' email.
  • Filter for .ics file 'wc_appointments_ics_appointment' has been refactored.

Fix

  • Staff view calendar in admin is off.

[4.8.10] - December 25, 2019

Improvements

  • Full error log for gcal sync errors.
  • WooCommerce 3.9.0 compatibility.

Fixes

  • Do not sync back cancelled events as cancelled appointments.
  • Staff can sync to same google calendar, even if it doesn't make any sense.
  • No preference shows no availability when staff has no rules.
  • No preference does not show rules correctly, when not all staff have rules.

[4.8.9] - December 24, 2019

Improvements

  • Updated all translations.
  • Improved German translation.
  • More info in calendar header in admin, when scrolling.
  • Updated compatibility with WooCommerce Multilingual 4.7.5.

Fixes

  • WPML related error in latest version of WC and Appointments.
  • 'Date Range with time' not working when duration spans to next day.
  • Automatically Completing orders sends out the New Appointment email twice.

[4.8.8] - November 25, 2019

Fix

  • No preference does not show available dates for staff.

[4.8.7] - November 23, 2019

Fix

  • Revert back availability check change.

[4.8.6] - November 22, 2019

Improvements

  • Updated compatibility with WooCommerce Multilingual 4.7.3.
  • Required image swatches don't show error wih JS but reload the page.
  • Updated Product Add-ons to 3.0.20.

Fixes

  • Datepicker not working with Google Translate.
  • Addon quantity does not store minimum number 0.
  • Quantity add-on field does not respect min/max limits range.
  • Unavailable minutes should not be appointable.

[4.8.5] - November 14, 2019

Fix

  • Rendering of rules not working correctly.

[4.8.4] - November 14, 2019

Improvement

  • Better processing of staff rules, faster loading with lots of staff.

Fix

  • Requesting specific staff availability resulted in error.

[4.8.3] - November 13, 2019

Improvements

  • Updated German translation.
  • WordPress 5.3 styling compatibility.
  • Multiple themes font size compatibility.
  • Much faster loading with lots of synced events.

[4.8.2] - November 7, 2019

Improvements

  • Separate availability rules from Gcal rules for better overview.
  • Highlighted rows in admin that are currently being edited.
  • Updated all translations.
  • Required checkbox Add-ons don't show error with JS but reload the page.

Fixes

  • Admin UI borders were not collapsed correctly on Chrome browser.
  • Prevent rendering scheduled day slots when provided product ID is empty string.

[4.8.1] - November 4, 2019

Improvements

  • Compact appointments list template inside my-account.
  • Updated RRULE to v2.2.0.
  • Forced block styling for appointment form to prevent spilling with some themes.
  • Appointments tables in my-account are not responsive.
  • Updated Product Add-ons to 3.0.18.
  • Updated all translations.

Fix

  • RRULE uses locale, where datetime string is defined as 'en'.

[4.8.0] - October 26, 2019

✨ Features

  • Added follow-up email option.
  • Added additional content to all customer emails.

Improvements

  • Admin Calendar - border radius on calendar events.
  • Simplified email content and headings.
  • Code cleanup.
  • Updated all translations.

Fixes

  • Admin Calendar - Adding Product Filter with No Appointments changes date range to 1969 :)
  • REST API Slots were missing staff ID and scheduled count was not working.

[4.7.6] - October 21, 2019

Improvements

  • Introduced 'woocommerce_appointments_slots_availability' filter.
  • Updated menu icon from 'dashicons-backup' to 'dashicons-clock'.
  • Simplified menu name for adding new appointment.
  • Moved customer name from separate column to ID column in appointments list in admin.
  • Updated all translations.
  • Updated Product Add-ons to 3.0.17.
  • Do not load add-ons when post is not a product type.
  • Set new default availability rule to 'No', not 'Yes'.

Fixes

  • Admin/staff emails may be duplicated, send to unique addresses only.
  • When multiple appointment forms are displayed, only set time slot selected.
  • When multiple appointment forms are displayed, cache add-ons by product ID.

[4.7.5] - October 9, 2019

Improvement

  • Compatibility with WooCommerce 3.8.

Fixes

  • WPML Multilingual CMS 4.2.9 compatibility fixes.
  • WooCommerce Multilingual 4.6.7 compatibility fixes.

[4.7.4] - October 4, 2019

Fix

  • Global availability rules not saving correctly with recurring rules from Google calendar.

[4.7.3] - October 3, 2019

Fix

  • Memberships integration. Price set to 1, when product price is zero.

[4.7.2] - October 2, 2019

Improvement

  • Added attributes to Appointments REST API controller.

Fix

  • Memberships integration.

[4.7.1] - October 1, 2019

Improvement

  • Custom pricing rule for duration.

Fix

  • Staff costs not calculated.

[4.7.0] - October 1, 2019

Improvements

  • Much faster loading of appointment pages in admin with thousands of products.
  • Updated Product Add-ons to 3.0.16.
  • Appointment list in admin now renders through WC_Admin_List_Table.
  • Consolidated cache logic into a single class.
  • Cache is disabled when WC_APPOINTMENTS_DEBUG is true.
  • Consolidated appointment cost caluclation into asingle class.
  • Minimum height for calendar events in admin not set.
  • Updated all translations.
  • Customer billing data is display preferably if available.
  • Soft deprecated WC_Appointments_Form::convert_to_moment_format() replaced with wc_appointments_convert_to_moment_format().
  • Soft deprecated WC_Appointments_Form::get_posted_data() replaced with wc_appointments_get_posted_data().
  • Soft deprecated WC_Appointments_Form::is_appointable() replaced with WC_Product_Appointment::is_appointable().
  • Soft deprecated WC_Appointments_Form::get_formatted_times() replaced with wc_appointments_get_formatted_times().
  • Soft deprecated WC_Appointments_Form::calculate_appointment_cost() replaced with WC_Appointments_Cost_Calculation::calculate_appointment_cost().
  • Soft deprecated WC_Appointments_Controller::get_appointments_in_date_range() replaced with WC_Appointment_Data_Store::get_appointments_in_date_range().
  • Soft deprecated WC_Appointments_Controller::get_appointments_in_date_range_query() replaced with WC_Appointment_Data_Store::get_appointments_in_date_range_query().
  • Soft deprecated WC_Appointments_Controller::get_events_in_date_range() replaced with WC_Appointments_Availability_Data_Store::get_events_in_date_range().
  • Soft deprecated WC_Appointments_Controller::get_global_availability_in_date_range() replaced with WC_Appointments_Availability_Data_Store::get_global_availability_in_date_range().
  • Soft deprecated WC_Appointments_Controller::get_all_existing_appointments() replaced with WC_Appointment_Data_Store::get_all_existing_appointments().
  • Soft deprecated WC_Appointments_Controller::get_appointments_for_objects() replaced with WC_Appointment_Data_Store::get_appointments_for_objects().
  • Soft deprecated WC_Appointments_Controller::get_appointments_for_objects_query() replaced with WC_Appointment_Data_Store::get_appointments_for_objects_query().
  • Soft deprecated WC_Appointments_Controller::get_appointments_for_product() replaced with WC_Appointment_Data_Store::get_appointments_for_product().
  • Soft deprecated WC_Appointments_Controller::get_appointments_for_user() replaced with WC_Appointment_Data_Store::get_appointments_for_user().
  • Soft deprecated WC_Appointments_Controller::get_latest_appointments(). Not used in Appointments.
  • Soft deprecated wc_appointments_get_time_slots() replaced with WC_Product_Appointment::get_time_slots().
  • Soft deprecated wc_appointments_get_time_slots_html() replaced with WC_Product_Appointment::get_time_slots_html().
  • Soft deprecated wc_appointments_get_global_availability() replaced with WC_Appointments_Availability_Data_Store::get_global_availability().
  • Soft deprecated wc_appointments_get_staff_availability() replaced with WC_Appointments_Availability_Data_Store::wc_appointments_get_staff_availability().
  • Soft deprecated delete_appointment_slots_transient() replaced with WC_Appointments_Cache::delete_appointment_slots_transient().

Fixes

  • Filtering product and staff in admin calendar were not strict.
  • Add-ons and membership plugin not working ok - add-ons being discounted when they shouldn't.
  • WC POS seems to not be compatible - throwing error.
  • Availability for staff shown unavailable (blocked) when padding days are used.
  • Inclusive/exclusive inconsistency in logic for blocking Google Events' times.
  • Some Google Calendar events hidden in admin calendar.
  • Addons query duplicated and slows down loading with a lot of addons.

[4.6.2] - September 9, 2019

Improvement

  • Clear time slots transients.

Fixes

  • Saving any product type saves it as 'Appointable product'.
  • Lead Time - Weeks interpreted as Months.

[4.6.1] - September 8, 2019

Fix

  • Cart item removal error.

[4.6.0] - September 7, 2019

✨ Feature

  • Full integration with Kadence WooCommerce Email Designer plugin.

Improvements

  • Updated Product Add-ons to 3.0.15.
  • Simplified the email templates.
  • Simplified the email templates styling to conform with external email editing plugins.
  • [appointment_form] shortcode loads without parameters on a product page.
  • Added RTL support to all email templates.
  • Revert to default duration, when duration is zero or negative.
  • Deposits compatibility when adding apointment in admin.
  • Make the custom pricing rules accept 5 decimal places so that it can be rounded properly.
  • Updated all translations.

Fixes

  • Fatal error in admin calendar – Invalid UNTIL property for RRULE.
  • Conflict with Free products and Memeberships plugin.
  • Lead time hours not working ok - adds 1 hour too much.
  • Wrong duration when more than 24 hours.
  • Renamed filters back:
  • Multiple appointments with add-ons in 1 order add add-on options prom prev appointments.

[4.5.14] - July 25, 2019

Improvements

  • Dropped support for WooCommerce 2.6 (3 years old) for security issues.
  • Compatibility with WooCommerce Twilio SMS Notifications 1.12.3.
  • Attch .ics to Customer order emails.
  • Updated all translations.
  • Replaced method_exists with is_callable to prevent private methods from showing up.

Fix

  • Fatal error – Invalid UNTIL property for RRULE.

[4.5.13] - July 23, 2019

Improvements

  • Removal of all plugin data on un-installation. Constant 'WC_REMOVE_ALL_DATA' must be true.
  • Added filter 'woocommerce_appointments_stop_recalculate_order' customers can use
  • Compatibility with WooCommerce 3.7.

Fixes

  • Hold stock (minutes) used for holding appointments in cart. Stock time not respected.
  • empty_cart empties customer cart, but does not clear the Appointment cart.
  • Qty was set for appointment on each appointment load.
  • Change reminder scheduled action, when start time changes.
  • Editing appointment that was added through admin could cancel the reminder.
  • Editing appointment that was paid with COD could cancel the reminder.
  • Stop plugin from rendering, when WooCommerce isn't installed correctly.

[4.5.12] - July 18, 2019

Improvements

  • Updated @build dependencies for more efficient compressions.
  • Used advanced ESlink rules to tidy the JS code.

Fix

  • In Calendar guest name is not displayed anymore.

[4.5.11] - July 15, 2019

Improvements

  • Moved Availability filtering widget to /includes folder.
  • Moved Customize controls to /includes folder.
  • Merged product import and export class to remove duplicated default properties.

Fix

  • Fixed integration with plugin WooCommerce Price Based on Country.

[4.5.10] - July 14, 2019

Improvements

  • Updated Add-Fons to 3.0.13.
  • Updated all translations.

Fix

  • Admin calendar events overlapping.

[4.5.9] - July 13, 2019

Improvement

  • Mark unavailable times synced from gCal in WP admin calendar.

Fixes

  • Recurring events from Google calendar not synced to correct time zone.
  • Appointments in Trash sending appt reminders.

[4.5.8] - July 5, 2019

Improvements

  • Updated Add-ons to 3.0.12.
  • Updated RRULE to 2.1.0. PHP 5.6 is now required as minimum.
  • Improved integration with plugin WooCommerce Price Based on Country 1.8.9.

[4.5.7] - July 5, 2019

Improvement

  • Prepared appointment form to support rescheduling in future updates.

Fixes

  • Product Time zone not working in shortcode.
  • Product Availability auto-select not working in shortcode.

[4.5.6] - July 4, 2019

Improvements

  • Remove appointments filtering by created date in admin list table.
  • Option to filter appointments in admin with Start/End date filters.
  • Updated all translations.

[4.5.5] - July 2, 2019

Improvements

  • Appointment customer details now read from WC_Customer class.
  • Filter 'appointments_cancel_appointment_url' now includes the appointment class as parameter.
  • Fixed customer phone display in calendar dialog in admin.
  • Updated Hebrew translation.

[4.5.4] - July 1, 2019

Improvement

  • Checking if product is 'appointment' type is simplified.

Fix

  • Removed $order_parent_id that was not in use and caused plugin compatibility issues.

[4.5.3] - June 28, 2019

Improvements

  • Added 'calendar-data-loaded' trigger that allows hooking into calendar after it is loaded.
  • Updated moment.js libraries.
  • Performance optimization for generation of appointment slots.
  • Staff - No preference - selection is now disabled by default.
  • REST API permissions were not set correctly.

Fixes

  • Compatibility issue with API hook timing.
  • When multiple staff assigned and one is unavailable, the 'no preference' shows no slots.
  • Product with multiple staff 'No pref' not working ok.

[4.5.2] - May 24, 2019

Fixes

  • gCal sync from WP to gCal does not work on 4.5.1.
  • Duplicating an appointable product resulted in an error.
  • Duplicating an appointable product did not duplicate availability.

[4.5.1] - May 20, 2019

Improvements

  • New Appointable products do not have the 'Virtual' option selected by default anymore.
  • Sync appointments to gcal payed with a Deposit.
  • Sync schedule now hooked to 'action_scheduler_after_process_queue'. Prevents crowding the DB.
  • Sync schedule can now be disabled through 'action_scheduler_after_process_queue' action.
  • 'availability_autoselect', 'customer_timezones' possible attributes for [appointment_form] shortcode.

Fixes

  • Missing appointment ID from /appointments REST API.
  • Add-on error when product price is empty.
  • Add-on price could not be hidden with a filter.
  • Unable to view Global Availability issue.
  • Appointment reminder email seems to be timing on GMT not local time.
  • gCal too many action_schedulers even when there are no events in gCal.

[4.5.0] - April 26, 2019

✨ Feature

  • REST API support to GET: /appointments, /availabilities, /products, /slots.

Improvements

  • Updated Action scheduler library to 2.2.5.
  • Transients caching issues for availability rules and GCal sync.
  • Updated all translations.
  • Past Google events displayed as availability rules. Hide them.

Fixes

  • Added missing $product object to 'woocommerce_before_add_to_cart_button' hook.
  • Twilio appointment confirmation and follow up SMS not sending.

[4.4.9.4] - April 22, 2019

Improvements

  • Updated Product Add-ons to 3.0.11.
  • Caching plugin (probably W3TC) asks us to call to wp_cache_flush once the sync of is finished.

Fixes

  • Appointment card shows the Cost of the order instead of the appointment.
  • Adding new date rules on staff profile page bug.

[4.4.9.3] - April 18, 2019

Fixes

  • Don't sync when access token is empty.
  • Add-on duration defined in minutes, when product duration is either hours or minutes.
  • Unwanted element at the bottom of the single appointable product page.
  • WPML not syncing availability rules across products.

[4.4.9.2] - April 16, 2019

Improvements

  • Compatibility check with WooCommerce TM Extra Product Options 4.8.4.
  • Duration not prettified for hours.

Fixes

  • Add-on checkbox pre-selected, but empty after adding product to cart.
  • Can't add appointment to existing order.
  • Reset all appointment card details data on each selection.

[4.4.9.1] - April 12, 2019

Fix

  • Add-on duration error displayed.

[4.4.9] - April 12, 2019

Improvements

  • Moment Timezone JS library only included, when product supports time zones.
  • Availability and Pricing rule validation with smarter inputs.
  • Added more options to extend the calendar appearance.

Fixes

  • Availability between different products and same staff not showing correctly in calendar.
  • Add-ons not hiding price on radio buttons.
  • Add-on duration and didn't accept negative price and duration.

[4.4.8] - April 10, 2019

Fixes

  • $wp_locale not defined.
  • Recurring events failed to parse RFC string, unsupported property: EXDATE.

[4.4.7] - April 9, 2019

Improvement

  • Send reminders for appointments, created in admin.

Fixes

  • Staff price not counted when multiple staff automatically assigned
  • Removed duplicated product property "get_padding_duration_minutes()".
  • Padding not working.
  • Recurring events not working when timezone for UNTIL is not specified.
  • Reminders not going out at the right time.
  • Addon duration display when adding appointment in admin.

[4.4.6] - April 5, 2019

Improvements

  • Big Performance improvement with large number of appointments scheduled.
  • Add note to settings for Appointment Confirmed email.
  • Updated all translations.
  • Add the option to filter 'without staff' by selecting '–' in appointments list.
  • Backend Calendar for staff members optimizations.

Fixes

  • Addons with value below 1 are not being added to the total.
  • WooCommerce Twilio SMS Notifications 1.12.0 compatibility check.
  • Added back support for WooCommerce Twilio SMS Notifications below version 1.12.0.
  • Automatically assigned staff shows unavailable days as clickable.
  • Staff assigned together not working.

[4.4.5] - April 3, 2019

Fix

  • Performance issues.

[4.4.4] - April 3, 2019

Fix

  • Fatal error: after changing Gcal function name in version 4.4.3.

[4.4.3] - April 2, 2019

Fix

  • Fatal error: "class-wc-appointments-init.php" file had $this called wrong.

[4.4.2] - April 2, 2019

Improvements

  • Introduced 'woocommerce_appointments_calendar_single_card_data' filter.
  • Simplified admin calendar dialog for appointments.

Fix

  • Fatal error during update.

[4.4.1] - April 2, 2019

Fixes

  • Disallow zero as availability priority. Possibly set during upgrade to 4.4.0.
  • Spanish translation had some off strings.

[4.4.0] - April 1, 2019

✨ Features

  • Full/extended integration with Twilio SMS Notification extension.
  • Added CRUD for all availability rules.
  • Added "Date range with time" availability rule.
  • Ability for staff to sync 2-way or 1-way with their Google Calendar.

Improvements

  • Appointable product pre-selected when creating new product for the first time.
  • Updated Action scheduler library to 2.2.1.
  • Updated Product Add-ons to 3.0.10.
  • Updated all translations.
  • Simplified Add Appointment screen in admin. Removed No order option.
  • Global availability is not set by default any more.
  • Better compatibility with external email customization plugins.
  • Disable marketplace suggestions to remove confusion.
  • Sync from Google now operates on 1 minute intervals for both staff and globally.
  • Sync cash on delivery appointments to Google.

Fixes

  • Cannot add appointments in the backend.
  • Staff cannot select a calendar after initial calendar ID selection.
  • Gcal manual update shows last synced timestamp even if no events are synced.
  • PHP 7.3.2 compatibility.
  • Date picker not showing blocked dates correctly.
  • Padding calculations.
  • WPML compatibility re-check.
  • No preference showing unavailable days.

[4.3.4] - March 2, 2019

✨ Feature

  • Added today's appointments to My account page.

Improvements

  • WordPress 5.1 compatibility.
  • Moved installation and initialization functions into a separate class.
  • Increased JS standard to ES6.
  • Expanded compatibility for DateTime in older PHP versions and WC Ajax.
  • Added libraries from "Google PHP Client" and "RRule" for both PHP and JS.
  • Updated all translations.

Fixes

  • My account appointments show "Appointment" instead of "Appointments".
  • Addon duration for time slots not transferred when switching days.
  • .ics missing for admin email notification.
  • All assigned staff have available slots, when there should be none.

[4.3.3] - February 14, 2019

Fix

  • Availability rules not showing up.

[4.3.2] - February 13, 2019

Improvements

  • Updated Product Add-ons to 3.0.8.
  • Removed all 'dashicons' dependencies on frontend.
  • Better RTL syntax.
  • Admin Calendar now has split product and staff filter.

Fix

  • Timezone auto detection not working when multiple appointment shortcodes are used on same page.

[4.3.1] - February 9, 2019

Fix

  • Availability filter calendar not displayed correctly.

[4.3.0] - February 8, 2019

✨ Features

  • Added Availability filter widget.
  • Added full Italian translation. Many thanks to Giuseppe S. for the contribution.

Improvements

  • Add warning when adding Appointment to cart that requires confirmation and simple product is already in.
  • Updated all translations.
  • Updated Action scheduler library to 2.2.0.
  • Updated Product Add-ons to 3.0.7.
  • Decluttered appointment list UX and unified status label UI with WooCommerce order label UI.
  • Incompatibility with Elementor plugin.

Fixes

  • All users see staff fields in user edit screen.
  • Availability calculation for additional products is wrong when using WPML

[4.2.9.6] - January 20, 2019

✨ Feature

  • Added filter 'appointment_form_pricing_rules_for_start_date' for pricing rules to work on start date only.

Improvements

  • Time zone name (city by default) is added to all appointments for products with time zones enabled.
  • Time zone selection when multiple products with time zones are displayed at once.
  • Staff selection when multiple products with staff are displayed at once.
  • Additional check before running $field->validate().
  • Updated all translations.
  • Added option for month and year selection on the calendar through "wc_appointment_form_params" filter.

Fixes

  • PHP 7.3 issue with add-ons.
  • RTL adjustment for prev/next month in calendar navigation.

[4.2.9.5] - January 4, 2019

Improvements

  • Changed naming to "Admin New Appointment" to better reflect mail recipient.
  • Hardened emails for extensions send order instead of appointment object.

[4.2.9.4] - January 4, 2019

Fixes

  • Automatic time zone conversion on initial cookie setup.
  • Time zone in customer's emails not showing up.

[4.2.9.3] - January 3, 2019

Fixes


[4.2.9.2] - December 31, 2018

Fix


[4.2.9.1] - December 28, 2018

Fix


[4.2.9] - December 24, 2018

✨ Feature

  • Added reminder email time control.

Improvements

  • Decluttered email settings and made them in line with default WooCommerce email options.
  • Shorter default emails subject lines more in line with default WooCommerce email lines.
  • Updated all translations.

Fixes


[4.2.8] - December 18, 2018

Fixes

  • Add-ons not calculating duration, when quantity based.
  • Make sure translated plugin still updates automatically.

[4.2.7] - December 13, 2018

Improvements

  • Add default date / time format when empty
  • Updated Product Add-ons to 3.0.5.
  • Added WooCommerce plugin required notice after Appointments activation and no WooCommerce present.

Fixes


[4.2.6] - December 8, 2018

Improvements

  • Appointment form style as inline-block to make sure width is 100% when form is floated.
  • Better connection with WooCommerce TM Extra Product Options and Add-ons combined.

Fixes

  • Timezone picker could disable click actions on product site.
  • Select options for add-ons were missing None.

[4.2.5] - December 5, 2018

✨ Feature

  • Auto-detect customer's timezone.

Improvements

  • Timezone selection closed when clicked outside the selection box.
  • Added "Moment" JS library for better time manipulation.
  • Updated all translations.

Fix

  • Addon cart error during update.

[4.2.4] - December 3, 2018

Fix

  • Make sure appointment is displayed only on orders with products attached.

[4.2.3] - December 1, 2018

Improvements

  • Deactivate WC Product Add-ons extension if active and add a notice.
  • Better license activation notice.
  • Import/Export meta fields not translated, decluttering translation text-strings.
  • Updated all translations.
  • Updated Action scheduler library to 2.1.1.

[4.2.2] - November 30, 2018

Improvement

  • Temporarily disable None option for add-on fields (multichoice, radio button, ...)

Fixes


[4.2.1] - November 24, 2018

Improvement

  • Updated Product Add-ons to 3.0.4.

Fixes

  • Error in certain cases for the date picker.
  • Addons with no cost or duration disable "book now" button.

[4.2.0] - November 23, 2018

Improvements

  • WordPress 5.0 + Gutenberg full compatibility.
  • Updated Product Add-ons to 3.0.3.
  • Allow negative duration value in add-ons.
  • Ability to calculate add-on duration, based on quantity scheduled.
  • Switch to WooCommerce library for Select2 script.
  • Performance improvement for products that contain many appointable slots.
  • Prevent loading of availability on initial page load.
  • Added 100% Hebrew translation. Thanks yoni katz ;)
  • Updated all translations.
  • Move add-ons on orders to end of meta instead of the beginning.
  • https://bitbucket.org/bookingwp/woocommerce-appointments/issues/427/availabilty-not-syncing-with-gcal

Fixes


[4.1.8] - October 28, 2018

Improvement

  • added filter 'woocommerce_appointments_time_slot' to allow filtering single slots.

[4.1.7] - October 28, 2018

Improvements

  • Updated Action scheduler library to 2.1.0.
  • Display update notification even when license is not active.

Fixes


[4.1.6] - October 23, 2018

Improvement

  • Do not display user edit link when current user cannot edit the user.

Fixes


[4.1.5] - October 12, 2018

✨ Feature

  • Added "One Page Checkout" integration.

Improvements

Fixes


[4.1.4] - September 22, 2018

Improvements

  • Big security update, escaped all output.
  • Optimized code according to WordPress coding standards.
  • Appointments list in admin styled for mobile.
  • Updated all translations.

Fixes


[4.1.3] - September 9, 2018

Improvement

  • Removed "datepicker( 'refresh' )" after each autoselect.

[4.1.2] - September 9, 2018

Improvements

  • Faster appointment form load times by code optimization.
  • Removed double cost calculation on add-on selection.
  • Removed double cost calculation on staff selection.
  • Removed double cost calculation on date selection.
  • Reduced staff queries to $product, when call is just by staff_id.
  • Cached staff query to remove duplicates on single page load.
  • Removed duplicated add-on calls for before/after appointment form.
  • Updated WPML compatibility to WooCommerce Multilingual 4.3.5.

Fixes


[4.1.1] - August 31, 2018

Fix

  • Auto-selecting first available slot not working. Props to /Mattias F.

[4.1.0] - August 31, 2018

Improvements

Fixes


[4.0.0] - August 18, 2018

✨ Feature

  • Customers can set their own timezones.

Improvements

  • Custom pricing rules now apply to add-ons as well.
  • Updated all translations.
  • Added hook to allow bypassing slot availability checker
  • Product filters now ordered by product title for easier searching.
  • Reduced ajax cost calculation calls with time slots.
  • Added hook 'woocommerce_appointments_gcal_sync_parameters' to allow filtering all gcal parameters.

Fixes

  • Display appointments from "order ID" instead of "order item ID" as "_appointment_order_item_id" is not always unique.
  • Deprecated "btoa" function in JS for DatePicker in International Browsers.
  • Book now button is now disabled per html and per css class "disabled"

[3.9.2] - July 13, 2018

Improvement

  • Updated all translations. Thank you "Julien Lorion" for French translation.

Fixes


[3.9.1] - July 4, 2018

Fix

  • Transferred plugin license to a new BookingWP site.

[3.9.0] - July 2, 2018

Improvements

  • Rebranded plugin's author and parent to BookingWP
  • Re-tested WooCommerce Multilingual (WPML) 4.3.2.1 compatibility. No issues, added restricted days meta fields.
  • Better Polylang for WooCommerce 1.0.1 compatibility.

Fixes


[3.8.9] - May 25, 2018

Improvement

  • Updated Product Add-ons to 2.9.6

[3.8.8] - May 25, 2018

Improvements

Fixes


[3.8.7] - May 11, 2018

Improvement

  • Switched from wp_ajax to wc_ajax

Fixes


[3.8.6] - May 4, 2018

Improvements

Fixes

  • FirstDay in admin calendar picker not working, typo: fistday instead of firstday
  • Do not display empty rule for staff with no rules in admin user profile edit screen.
  • No preference doesn't count staff qty correctly, when staff is assigned through profile edit screen.

[3.8.5] - April 30, 2018

✨ Feature

Improvements

  • Add .disabled class attributes for themes that do not have it.
  • Updated all translations.
  • Refactor get_available_slots parameters.
  • Added 'woocommerce_after_appointment_form_output' hook for processing addons.
  • Moved 'woocommerce_before_add_to_cart_button' hook to default location.
  • Simplified integration with TM Extra Product options plugin.
  • Simplified integration with Gravity Forms Product Add-Ons plugin.

Fixes


[3.8.4] - April 20, 2018

Improvement

  • Temporarily disable 'find-scheduled-day-slots' nonce.

[3.8.3] - April 18, 2018

Fix

  • Padding for products messed calendar with hour/minute duration.

[3.8.2] - April 18, 2018

Improvements

  • Send new appointment notification to admin and staff for Cash on Delivery appointments.
  • Delete all gCal sync events on plugin un-installation.

Fix

  • Auto-select first available date in one of next available months.

[3.8.1] - April 17, 2018

Improvement

  • Updated Product Add-ons to 2.9.2

Fix

  • Cannot add appointments in admin.

[3.8.0] - April 16, 2018

✨ Features

  • Lazy load front-end calendar and cache the output for large number of appointments.
  • Present appointment info in WooCommerce dashboard widget in admin.

Improvements

  • Moved new email notifications for admin/staff outside WC_Emails::send_transactional_email.
  • Show when month is fully or partially scheduled.
  • Improved UI for appointment edit screen in admin.
  • Updated all translations.

Fixes

  • Don't allow last minute to be removed for global availability.
  • Slots shown as unavailable, when quantity still exists.
  • PHP Notice: Undefined variable: settings.
  • New appointment email notification to admin goes into loop.
  • Billing details overwritten when assigning new manual appointment to existing order purchased by guest.
  • Fix PHP notices by passing through the email parameter.

[3.7.3] - April 6, 2018

Fix

  • Admin calendar fixed header height span.

[3.7.2] - April 6, 2018

Improvements

  • Admin calendar now includes staff view.
  • Admin calendar improved on all levels, built with flexbox and more responsive.

Fixes


[3.7.1] - April 2, 2018

Fix

  • Fix 500 error on gCal sync with misconfigured calendar ID.

[3.7.0] - April 2, 2018

✨ Feature

Improvements

Fixes


[3.6.9] - March 20, 2018

Fixes


[3.6.8] - March 16, 2018

Improvements

  • Additional checks for empty SKU in [appointment_form] shortcode.
  • Add-ons with duration work better with appointment form.
  • Additional WPML checks for appointment email translations, which require WPML String translation service.

Fixes


[3.6.7] - March 4, 2018

✨ Feature

Improvements

Fixes

  • Additional checks for add-on field price format.
  • WPML duplicated appointment form on add-to-cart action.

[3.6.6] - February 28, 2018

Improvements

  • Reduce expensive ajax query to ""$appointment_form->get_posted_data" when possible.
  • Improved Availability settings UX to better accommodate Gutenberg editor.
  • Updated all translations.

Fixes

  • Additional checks for [appointment_form] shortcode.
  • Don't duplicate WPML appointments, when translated product doesn't exist.
  • Schedule cart removal for duplicated appointments in WPML.

[3.6.5] - February 26, 2018

✨ Feature

Improvements

  • Updated all translations to include new strings from new features.
  • Clear 'wc-appointment-remove-inactive-cart' scheduled hook on execution. Loophole when fired manually.

Fix

  • Do not calculate costs twice when add-ons selected with timeslots.

[3.6.4] - February 24, 2018

✨ Features

  • Added full Polylang integration.
  • Added integration with WooCommerce Create Customer on Order; create a customer when adding appointment in admin.
  • Option to render add-on fields before and/or after the appointment form.
  • Add-on fields duration now adjust timeslots shown.

Improvements

Fixes


[3.6.3] - February 15, 2018

Improvement

  • Improved compatibility with WooCommerce Follow Up Emails 4.6.4

Fix


[3.6.2] - February 12, 2018

Improvement

  • Updated all translations to include months feature.

Fix

  • Warning and notice for confirmation emails.

[3.6.1] - February 11, 2018

Improvements

Fixes


[3.6.0] - February 10, 2018

✨ Features

  • Added monthly duration option_name
  • Appointments data included in WooCommerce core import and export functionality.

Improvements

Fixes


[3.5.7] - December 22, 2017

Fixes


[3.5.6] - December 18, 2017

Improvements

  • Added weekday-x, with x as day number of week for each calendar day.
  • Bump tested version to WooCommerce 3.3
  • Order metadata synced with Google Calendar sync.
  • Better indication of places left, with overall number when staff is assigned.
  • Updated all translations.
  • Updated Product Add-ons to v2.9.1

Fixes


[3.5.5] - November 23, 2017

Improvement

  • Autoselect first available slot for next 12 months.

[3.5.4] - November 20, 2017

✨ Feature

Improvements

  • Added 'wc_availability_rules_priority' filter for modifying appointment rules level weight.
  • Updated translations.

Fixes


[3.5.3.1] - November 15, 2017

Improvement

  • Updated translations.

Fix


[3.5.3] - November 14, 2017

Fix


[3.5.2.1] - November 14, 2017

Fix

  • X-scroll issue with daily staff view in admin calendar

[3.5.2] - November 14, 2017

Improvements

  • Updated calendar design in admin.
  • Updated calendar design in frontend.

Fixes

  • When multiple staff is scheduled at once, use max quantity of all combined.
  • Make sure CSS classes are accounted for even for disabled days on calendar.
  • 'schedule_fo_' transient cache not working properly, missing from and to dates.
  • Google calendar events don't remove staff slots, when -- No Preference -- is selected.

[3.5.1] - November 11, 2017

Fix


[3.5.0] - November 7, 2017

✨ Feature

  • Allow price overriding for all Appointments by adding equals operator in the costs range.

Improvements

Fixes


[3.4.9] - October 28, 2017

Fixes


[3.4.8] - October 24, 2017

Improvement

  • Updated translations.

Fixes


[3.4.7] - October 21, 2017

Improvements

  • Removed compatibility for older version, where staff capacity was saved inside user edit screen.
  • Big performance improvements, especially when staff is assigned to products.

Fixes


[3.4.6] - October 19, 2017

✨ Feature

  • Allow downloadable items with appointments.

Improvements

  • Added integration with "WooCommerce Print Invoices/Packing Lists" extension.
  • To reduce confusion, replaced staff inventory placeholder with N/A.
  • Make sure Availability and Staff product admin menu tabs are place just below General and Inventory.

Fixes


[3.4.5] - October 12, 2017

Improvements

Fixes


[3.4.4] - October 9, 2017

Improvements

  • Calendar view selection in admin saved and set to default automatically.
  • Additional checks for staff existence.

Fixes


[3.4.3] - October 3, 2017

Fix

  • PHP Fatal error: Uncaught Error: Call to a member function skip_status_transition_events() on null

[3.4.2] - October 2, 2017

Improvements

  • Changed terminology from "Capacity" to "Inventory" before switching to WooCommerce default inventory system.
  • Week selection in admin calendar's week view by datepicker.
  • Updated translations.

Fixes


[3.4.1] - September 30, 2017

Improvement

  • Updated translations.

Fixes


[3.4.0] - September 29, 2017

✨ Feature

Improvements

  • Added link to staff profile inside admin calendar / appointment card.
  • Pagination of "My Appointments".
  • Switch order of operations for status_transitioned_handler.

Fixes


[3.3.3] - September 19, 2017

Fixes


[3.3.2] - September 15, 2017

Fix

  • Division by zero error.

[3.3.1] - September 14, 2017

Fix

  • Throwing JS errors for products with daily duration.

[3.3.0] - September 14, 2017

✨ Feature

  • New functionality to restrict the day an appointment can start on.

Improvements

  • Optimized loading times, much faster on all levels.
  • Added filters to allow switching to date created for My Account > Appointments.
  • Added wc_appointments_summary_list_date filter for wc_appointments_get_summary_list.
  • Moved Appointment Display to templates for orders on both front-end and admin.
  • Moved Appointment Summary list to templates for orders on both front-end and admin.
  • Send confirmation email for manually created appointments without an order.
  • Querystring for "time" now uses more readable format. Instead of "12:00", now "1200".
  • Removed "Order again" button for appointment orders.

Fixes


[3.2.9.1] - August 21, 2017

Improvement

  • Unavailable days show as available on calendar.

Fixes


[3.2.9] - August 17, 2017

Improvement

  • Book now button disabled until cost is calculated and availability checked.

Fixes


[3.2.8] - August 16, 2017

Fixes


[3.2.7] - July 31, 2017

Improvements

  • Double check if order has been created for the appointment.
  • Overnight rules for Sunday now correctly span into Monday.

Fixes


[3.2.6] - July 28, 2017

Fixes


[3.2.5] - July 26, 2017

Fixes


[3.2.4] - July 24, 2017

Improvement

  • Updated Product add-ons to version 2.9.0

Fixes

  • Update WC 3.x compatibilities when duplicating product.
  • Taxes not added when creating an appointment from admin.
  • Reminder and complete cron events not set if Appointment is created without an order from the backend.
  • Fatal error when appointments used with a cached objects.
  • Email ID was the same for customer and admin appointment cancelled email.
  • All day appointment option was being ignored on calendar after availability refactor.
  • Availability rules using Date Range calculation on the frontend.
  • "Connect with Google" does not save/update entries.
  • Availability rules with dates in the past should be ignored for performance reasons.
  • Add woocommerce_appointments_email_actions filter to allow additional Appointments emails.
  • Default price being used when price rules make price 0.
  • Incorrect date being checked when getting time slots vs availability rules.
  • Endless loop when auto completion of appointment when it has no order.

[3.2.3] - July 19, 2017

Fixes

  • Current day is not available, when lead time is less than 1 day.
  • Removed support for recurring events with Google Calendar sync, due to crashes.

[3.2.2] - July 18, 2017

✨ Feature

Improvements

  • Updated all translations.
  • Added additional get_price checks for better external plugin compatibility.
  • Updated WPML and added support for WPML multi-currency.

[3.2.1] - July 15, 2017

Fixes


[3.2.0] - July 14, 2017

Improvements

Fixes


[3.1.9] - June 29, 2017

Improvement

Fix


[3.1.8] - June 27, 2017

Improvement

  • Refactored and moved most DB queries to Data Store.

Fixes


[3.1.7] - June 22, 2017

Improvement

  • Calendar appointments in ASC order by start_date.

Fixes


[3.1.6] - June 21, 2017

Improvement

  • When customer is a registered user, show user details before billing details.

Fixes


[3.1.5] - June 7, 2017

Fixes


[3.1.4] - June 4, 2017

Fix

  • Slots that extend over midnight are not able to schedule.

[3.1.3] - June 4, 2017

Fixes

  • Availability rules for next day not working correctly.
  • Custom pricing for base cost and slot cost fixes.
  • Removed division and multiplier for custom slot cost as you can't multiply and divide zero.

[3.1.2] - June 2, 2017

Fix

  • Midnight availability rules not working correctly.

[3.1.1] - June 1, 2017

Improvements

  • All availability rules now apply for all slots
  • Global capacity now overrides product capacity for all products
  • Deprecated days global availability rule set by default in older plugin versions

Fix


[3.1.0] - May 30, 2017

✨ Features

  • Added customizer option to edit default color scheme
  • Deep WC Product Vendors integration

Improvement

  • Updated translations

Fixes


[3.0.9] - May 25, 2017

Improvement

  • .ics file now attached to all email notifications, except cancelled ones:

Fixes


[3.0.8] - May 23, 2017

Improvements

  • More CRUD queries
  • Refactored functions, controllers and rule manager
  • "Cash on delivery" payments trigger reminders and admin/staff notifications

Fixes


[3.0.7] - May 16, 2017

Fix


[3.0.6] - May 16, 2017

✨ Feature

  • Set customer status to "No Show" when appointment is past due and is not paid for

Fixes


[3.0.5] - May 12, 2017

✨ Features

  • Add-on fields inside Google Calendar sync
  • On certain cases not syncing to Google calendar

Fixes

  • Trashing an appointment will no longer trash its order if order has other items.
  • Compatibility issue with Product Add-Ons integrations.

[3.0.4] - May 9, 2017

✨ Feature

  • Added add-ons to appointment edit screen in admin

Fix

  • Fixed autoselect for date/time

[3.0.3] - May 6, 2017

Fix

  • Fixed Google calendar sync on appointments list

[3.0.2] - May 5, 2017

Fix


[3.0.1] - May 4, 2017

Improvement

  • My account page displays better appointment data

[3.0.0] - May 4, 2017

✨ Feature

  • WooCommerce 3.0 full CRUD compatibility

Improvements

  • Better date/time rendering with duration always visible
  • Update translations

Fixes


[2.6.3] - April 6, 2017

✨ Feature

  • Added Spanish translation es_ES

Improvements

Fixes


[2.6.2] - March 2, 2017

Fixes


[2.6.1] - March 1, 2017

Fix


[2.6.0] - February 26, 2017

✨ Feature

Improvements

Fixes


[2.5.2] - February 21, 2017

Fixes


[2.5.1] - January 23, 2017

Improvement

  • Linted all PHP files

Fix


[2.5.0] - January 22, 2017

Improvement

  • Better automatic updates for the plugin.

Fixes


[2.4.9] - January 20, 2017

Improvements

Fixes

  • Fixed Google Calendar response_move variable notice.
  • Google calndar events not synced into existing products correctly.

[2.4.8] - January 19, 2017

Improvement

  • Added missing appointment_id variable to Follow Ups plugin integration.

Fixes

  • Only schedule reminder for future appointments.
  • Midnight being 1 minute short is now fixed.
  • Datetime checking now works for the full appointment duration and not just intervals.
  • Added missing $minutes_not_available variable for checking scheduled out time.
  • Saving staff clears transients correctly.

[2.4.7] - January 6, 2017

Fixes

  • Notices on comflict not working correctly.
  • Clearing transients on staff deleting on product edit screen.
  • Removed unused Appointment Notification email template to reduce confusion.

[2.4.6] - January 4, 2017

✨ Feature

  • Notice on appointment conflicts in admin

Improvements

  • Deprecated 'woocommerce_appointments_appointment_cost_string' filter
  • Date/time editing for approved/confirmed appointment should reschedule reminders.
  • Better organized external integration classes

Fixes


[2.4.5] - December 26, 2016

Fixes

  • Minute slots shows not available when paired with time range with date rule type.
  • Blogname not shown when cancelling appointments via bulk order.
  • Availability rules ignored for hour duration type in certain configurations.
  • Form fields don't save due to non-indexed form arrays.
  • Fully scheduled days showing up as partially scheduled days and can be over scheduled.
  • Product add on not calculating on when the duration unit was set to day.

[2.4.4] - December 23, 2016

Improvements

  • Updated Product add-ons to version 2.7.26
  • Dropped some support for WooCommerce 2.1 or older

Fix

  • Some date format might be causing unintended message: "The earliest appointment possible is currently..."

[2.4.3] - December 14, 2016

Fixes


[2.4.2] - December 9, 2016

Improvement

  • Updated translations

Fix

  • Availability rules issues.

[2.4.1] - December 7, 2016

Fix

  • PHP error when adding appointment in admin.

[2.4.0] - December 7, 2016

✨ Features

  • Better support for Deposits partialy paid status.
  • Full compatibitily with Follow Up Emails extensions 5.0

Improvements

  • Dropped support for WooCommerce 2.2 or older
  • Improved cutomer metabox

Fixes

  • "Time Range (date range)" availability rule now works as it should
  • Different rule types couldn't be used on the same product as priorities were not respected across types.
  • Unavailable slots showed when rule time range goes beyond midnight (e.g. 9:30 PM - 06:30 AM )
  • Date with time showed days as not available when only a few hours was set is not available.
  • Multiple appointments per order cancellation emails polluted email data.

[2.3.0] - November 16, 2016

Improvements

  • Filter woocommerce_appointments_get_posted_data to filter the data within an ajax request.
  • Filter woocommerce_appointment_is_scheduled_on_day.
  • Appointment status strings can be translated.
  • Refactored appointment product query, broken into several parts
  • Better code quality
  • Updated translations

Fixes


[2.2.9] - November 2, 2016

✨ Feature

  • Set up advanced caching functions for implementation with one of next updates

Improvement

  • Updated Product add-ons to 2.7.25

Fix

  • Staff capacity re-fix

[2.2.8] - October 25, 2016

Improvement

  • Minor performance upgrade

Fixes


[2.2.7] - October 19, 2016

✨ Feature

  • Introduced staff capacity

Improvement

  • Updated all translations

Fixes


[2.2.6] - October 14, 2016

Fix


[2.2.5] - October 14, 2016

Improvement

  • Appointment filtering by staf and/or product available

Fixes

  • No more duplicates from Google Calendar sync to multiple sites
  • Appointment filtering now works for date and status inside appointment list table

[2.2.4] - October 13, 2016

✨ Feature

Improvements

  • Slightly optimized code for better performance
  • Added filter 'woocommerce_appointments_convert_to_hours'
  • Unavailable times don't show up for multiple staff assigned any more
  • Better day availability detection for multi-day duration

[2.2.3] - October 5, 2016

Fix


[2.2.2] - October 5, 2016

Fix

  • Slots scheduled on Google Calendar not greyed out on calendar

[2.2.1] - October 4, 2016

Improvement

  • Updated Product add-ons to 2.7.24

Fixes

  • Live Google Calendar sync now connects to correct resource ID
  • Syncing all statuses now possible

[2.2.0] - October 3, 2016

✨ Features

  • Calendar now has option to see all staff in columns for Day View
  • Google Calendar v2
  • Ability to define minimum and maximum quantity required for schduling

Improvements

  • Calendar dilog box has better styling and customer avatars are enabled
  • Day View has been improved and allows for better display
  • Simpler query for appointable products
  • Twilio SMS now better integrated

Fix


[2.1.6] - September 16, 2016

Improvements

  • Added filter 'woocommerce_appointments_get_staff_assignment'
  • Product Add-ons: Duration label can be hidden for customers
  • Product Add-ons: Price label can be hidden for customers

Fix

  • Better integration with plugin WooCommerce Twilio SMS Notification

[2.1.5] - September 14, 2016

Improvement

  • Updated Product add-ons to 2.7.23

Fixes


[2.1.4] - September 5, 2016

✨ Feature

Improvements

  • Added much better WPML + WooCommerce Multilingual support
  • Priority for availability is now on product level: Product < Staff < Global
  • When duration is set to multiple days, all days available for scheduling are highlighted, not just start date
  • Updated My Appointments template page under My Account !IMPORTANT Save permalinks to take into account updated structure
  • Updated all translations

Fixes

  • Renamed main plugin filename.
  • Email recipients not showing "customer" in email settings.

[2.1.3] - September 1, 2016

Fixes


[2.1.2] - August 31, 2016

Improvements

  • Updating appointment status manually now triggers events like reminder emails etc.
  • Deprecated filter 'woocommerce_appointments_remind_before_days' and replaced it with 'woocommerce_appointments_remind_before_time'
  • New filter 'woocommerce_appointments_remind_before_time' now allows you to specify '1 hour' or '1 day' etc.
  • When staff is changed and autoselected date/time is on, don't reload the whole calendar

Fixes


[2.1.1] - August 19, 2016

Fix

  • Email templates now copied to woocommerce/ folder for overriding

[2.1.0] - August 18, 2016

Improvements

  • Moved all template overrides from /woocommerce-appointments/ to core /woocommerce/ theme folder
  • Support core template overrides scan via 'woocommerce_template_overrides_scan_paths'.
  • Introduced better template versioning, baked into core WooCommerce system
  • Optimized DB query for existing appointment
  • Updated all translations

[2.0.1] - August 16, 2016

Improvement

  • Admin calendar with miultiple staff assigned

Fixes


[2.0.0] - August 12, 2016

✨ Features

Improvements

  • Updated all translations
  • Avaialbility rules and capacity now work across board without any known glitches
  • Updated all email templates !IMPORTANT if you edited email templates
  • Product and staff now separated in admin
  • Padding is now simplified and works much smoother, when padding times are evalauted for multiple product for same staff
  • Added template versioning for better future compatibility

Fixes


[1.9.15] - July 20, 2016

Improvement

  • Updated German translation

[1.9.14] - July 19, 2016

Improvement

  • Updated translations and added RTL support

[1.9.13] - July 19, 2016

✨ Feature

  • Added German translation

Improvements

  • Updated Product Add-ons to v2.7.21
  • Appointments with price set to zero are now labled as Free!
  • Transitioned to system fonts on all levels
  • Updated Hebrew translation
  • Updated Dutch translation
  • Filter to account for different country calendar formats 'woocommerce_appointments_mdy_format'.

Fixes

  • Order status not being prefixed in db.
  • Remove heavy appointment object cache from being saved to db causing performance issue.
  • When staff is not enabled, default it to customer assignment.
  • Partially scheduled days were not showing on the calendar for duration minute and hours.

[1.9.12] - July 18, 2016

Fix


[1.9.11] - July 18, 2016

Improvement

  • Fixed CRM Integration (filter instead of action) New features: display customer & order notes as tooltips.

Fixes


[1.9.10] - July 8, 2016

Improvements

  • WordPress 4.6 compatibility
  • Date picker now unified across admin interface and automatically translated for WP 4.6+
  • Theme compatibility fixes for calendar on front-end

Fixes

  • Admin scripts for datepicker now called correctly
  • Automatic staff assignment on empty staff

[1.9.9] - July 7, 2016

Improvements

  • Styled datepicker in admin
  • Styled admin calendar
  • Moved all-day appointment to top
  • Removed jQuery UI style from front-end

Fix


[1.9.8] - July 4, 2016

Improvements

  • Moved appointments in My account to separate tab (WC 2.6+ feature)
  • Increased staff avatars size to 48px for retina displays
  • Further integration with http://codecanyon.net/item/woocommerce-point-of-sale-pos/7869665
  • Better appointment editing screen
  • Better day view calendar
  • Updated Select2 library to v4.0.3
  • When staff count is less than 6, search is disabled

Fixes


[1.9.7.2] - June 23, 2016

Fix

  • Unavailable dates displayed on calendar

[1.9.7.1] - June 23, 2016

Fix

  • PHP error

[1.9.7] - June 23, 2016

Fixes

  • Staff select box now displays correctly with increased z-index
  • Edit staff link in admin is now fully clickable
  • Auto-selecting first available day doesn't trigger automatically any more
  • Availability rules work for time range with date correctly

[1.9.6] - June 22, 2016

Improvements

  • Staff availability drops to default if no availability is set up.
  • Only paid and confirmed appointments are considered for occupied date/time slots
  • Filter wc_appointments_product_get_available_slots

Fixes


[1.9.5] - June 17, 2016

Fix

  • Site crash due to unregistered is_plugin_active() function

[1.9.4.1] - June 17, 2016

Fix


[1.9.4] - June 17, 2016

✨ Feature

  • Option to Auto-select first available day

Improvements

  • Reduced staff table queries to 1 transient
  • Significant loading time reduction
  • Updated Product Add-ons to v2.7.19

Fixes


[1.9.3] - June 15, 2016

✨ Features

Improvements

  • Text "Book Appointment" is now "Book Now" and "Book Now" is now only "Book"
  • Slightly faster appointment form loading time

Fixes


[1.9.2] - June 8, 2016

Improvements

Fix

  • Integration with latest version of "WooCommerce TM Extra Product Options" plugin

[1.9.1] - June 6, 2016

Improvements

  • Updated Product Add-ons to v2.7.18
  • admin calendar works better

[1.9.0] - May 30, 2016

✨ Feature

Improvements

  • admin CSS structure
  • admin calendar time format now in line with site's time format

[1.8.9] - May 25, 2016

✨ Feature

  • Times are converted to local times of visitors

Improvement

Fix

  • Updating appointments with no orders PHP notice

[1.8.8] - May 23, 2016

Improvement

  • Admin calendar view dialog now includes appointable product title

[1.8.7] - May 21, 2016

✨ Feature

  • Admin calendar appointment can be viewed in a dialog for better overview with basic actions

Improvements

  • Improvement admin calendar view
  • Appointment reminder email now shows reminder for today if set so

Fixes


[1.8.6] - May 8, 2016

Improvements

  • Replaced all date and time format with native WooCommerce functions
  • Added current time indicator for day view, when viewing current day
  • Improvement admin calendar view

Fix


[1.8.5] - May 4, 2016

Improvement

  • Frontend calendar design looks slightly better

Fixes


[1.8.4] - April 22, 2016

Improvements

  • Cache appointment objects in appointment's controller.
  • Google calendar sync now works better for all statuses. Sync appointment when appointment is edited from edit appointment screen.
  • Use WC logging mechanism, especially when appointment is added to or removed from cart.

Fixes

  • Make sure appointment costs that span beyond end of the year are supported.
  • Staff availability is now displayed correctly.
  • Add a false value if order_ids return empty during search. This fixes issue of SQL syntax error when searching in Appointments.
  • Limit status changes to only affect qualifying appointments. This should prevents status updated to 'was-in-cart' issue.
  • Set default staff availability quantity to 1 which fixes issue of a product with staff is not appointable.
  • Construct Date-object from UTC to ignore browser's TZ and incorrect calculated duration on particular timezones.
  • Check automatic staff assignments on each date to make sure a fully scheduled date is not available instead of partially scheduled.
  • Use admin_url instead of WC()->ajax_url() for ajax_url in class-wc-appointment-form.php WC()->ajax_url() uses relative scheme that might cause if fronted site is SSL'ed.
  • Reset tags on email body before each trigger which fixes tag placeholders. were not substituted properly.
  • Removed deprecated args causing notices displayed in confirmation email.

[1.8.3] - April 19, 2016

Fix


[1.8.2] - April 18, 2016

✨ Feature

  • Added Hebrew language support

Improvements

  • Added 'woocommerce_appointments_calendar_view' filter that allows setting default calendar view to 'day'
  • Updated Product add-ons to 2.7.17

Fixes


[1.8.1] - March 30, 2016

Improvements

  • Product Add-ons intergration updated to 2.7.16
  • Select2 library updated from RC1 to 4.0.2
  • Linted all JS files

Fixes


[1.8.0] - March 25, 2016

✨ Features

  • Pricing rule for quantity scheduled
  • Added support for padding days, not just padding hours

Improvements

  • Added option for quantity inside Add appointment in admin screen
  • Localized admin calendar inside appointment edit screen
  • Appointments statuses now available for translation
  • Color palette resembles that from latest WooCommerce version
  • Show discounts for each day in calendar with 'add_theme_support( 'woocomerce-appointments-show-discounted-slots' );' added to your theme

Fix

  • Appointment with guest checkouts now list 'Guest' on the list of appointments

[1.7.9] - March 22, 2016

✨ Feature

  • Allow multiple appointments per staff at one time

Improvements

  • Appointable product page load speed increased
  • Add-on price symbol now wrapped in span with class name "amount-symbol"

Fixes

  • Undefined notice for global availability settings
  • Availability rule order now correct global > product > staff
  • Previous day was highlighted
  • Dates that are not available are now disabled

[1.7.8] - February 29, 2016

Fix


[1.7.7] - February 27, 2016

✨ Feature

  • Staff notification emails

Improvement

  • Added margin below email notification table for better styling

[1.7.6] - February 27, 2016

Improvements

  • Calendar font now inherits body font
  • Calendar day columns now have the same width
  • Select2 library updated to 4.0.2-RC1

[1.7.5] - February 24, 2016

Fixes

  • PHP Notice: Trying to get property of non-object in \includes\class-wc-appointment.php on line 566
  • PHP Notice: Undefined variable: values in \includes\integrations\class-wc-appointments-integration-addons.php on line 98

[1.7.4] - February 24, 2016

Fixes


[1.7.3] - February 17, 2016

Fix

  • Scheduled multiple quantity is now correctly calculated in

[1.7.2] - February 12, 2016

✨ Feature

  • Select custom time intervals independently from duration

Improvement

  • Cancel time is now by default 1 day prior to appointment instead of 1 month

Fix

  • Adding appointment in now shows the calculated price

[1.7.1] - February 12, 2016

Fixes

  • Sale price display error
  • Translation of remaining slots for scheduling

[1.7.0] - February 11, 2016

✨ Feature

  • Customer can now schedule multiple appointments at once

Improvements

  • Add-ons cost now displayed with a plus + sign prefix
  • jQuery: deprecated size() replaced with length()
  • Updated translations
  • Add-ons multipled with quantity scheduled

Fixes

  • gCal sync error on appointment removal fixed
  • Appointment editing in admin now correctly synced with corresponding Order

[1.6.2] - February 9, 2016

Improvements

  • Added more WPML support
  • New Appointments specific add-on section under WooCommerce > Add-ons.
  • Show a notice when viewing an appointment if it's add-on plugin no longer is installed.

Fixes

  • Prevent the Duration input field from displaying on non appointment products when using the product add-ons extension.
  • Prevent start times that end after date times from showing up when using padding times.
  • Appointment in "My Account" not created with Confirmation Requried Appointment + New User account
  • Missing ending double quotes in order note of appointment status transition
  • Use full unit 'hour' when using date/time str in strtotime
  • Removed a bug with cost calculation that resulted in PHP warning

[1.6.1] - February 4, 2016

Fix

  • Price wasn't calculated correctly for Staff, when pricing rules were empty

[1.6.0] - February 3, 2016

✨ Features

  • Custom pricing rule
  • Additional price per staff

Improvements

  • Price calculations on all product levels
  • Display FROM label before price, when additional costs are applied
  • Staff capacity overrides appointment capacity
  • Staff is set as appointment author, so you can filter capabilities correctly

Fixes

  • No preference for staff now selects only available staff
  • Changing staff on scheduling form now reloads the time slots

[1.5.4] - January 28, 2016

Improvements

  • Updated Add-ons to version 2.7.15
  • Sync appointments without orders (manually created appointments) to Google Calendar.
  • Humanized order status in order column of appointments list.

Fixes

  • If the new staff input is canceled, the staff input area will no longer be blocked.
  • Format the datetime form based on site language (matches behavior for day form).
  • Fix for possible availability problems using time range slots.
  • Prevent extra border from showing on time slots when using TwentySixteen as your theme.
  • Save the correct (appointment, not order) ID when saving appointment details on the admin screen.

[1.5.3] - January 27, 2016

✨ Feature

  • Ability to check availability rules against starting slot in range only

[1.5.2] - January 26, 2016

✨ Feature

  • Full integration with 'WooCommerce Follow Up Emails' extension

Improvement

  • Display of appointment customer in admin

[1.5.1] - January 20, 2016

Improvements

  • Updated Add-ons to version 2.7.14
  • Some WooCommerce 2.5 compatibility fixes

Fix

  • Staff access to their schedule

[1.5.0] - January 15, 2016

✨ Feature

  • Capacity can be overriden on availability rule level, great for classes

Improvements

  • When manually creating appointments that either have no order or are attached to an existing order, the status will now default to "confirmed" instead of "pending confirmation".
  • Adding staff now more stramlined
  • Deprecated time range on specific date and replaced with time range with date range
  • Highlighted all selected day if appointment lasts for more than 1 day
  • Not messing with WooCommerce pricing any more. Selecting price label doesn't set price to zero.

Fix

  • Fix ranges on non-product rules.

[1.4.6] - December 23, 2015

✨ Feature

  • Full WPML compatibility

Improvements

  • Added 'woocommerce_appointments_get_posted_data' filter
  • Added 'woocommerce_appointments_order_item_status' filter

Fix

  • Capacity is now independent from staff count

[1.4.5] - December 23, 2015

✨ Features

  • Integration with free plugin "WooCommerce Product Price Based on Countries"
  • Integration with free plugin "TM Extra Product Options"

Improvements

  • Zero total in cart should avoid cache, temporarily disabled hiding price, when zero
  • Updated Select2 script to 4.0.1

Fix

  • Price including tax displayed correctly

[1.4.4] - December 17, 2015

Improvement

  • New filter added: 'woocommerce_appointments_gcal_sync_statuses'

[1.4.3] - December 17, 2015

Improvements

  • New filter added: 'woocommerce_before_appointment_form_output'
  • WooCommerce 2.5+ compatibility

Fixes

  • Email reminders not looped any more
  • Email reminders now sent on paid appointment status only

[1.4.2] - December 8, 2015

Fix

  • Add-ons syntax error

[1.4.1] - December 8, 2015

Fixes

  • Calendar day names localization
  • Product Add-ons localization is now merged with "woocommercea-appointments" text-string

[1.4.0] - December 5, 2015

✨ Feature

  • Appointments by day - can be scheduled for multiple days at a time.

Improvements

  • Better UI for adding appointments in admin
  • Integrated product add-ons, when adding appointments in admin
  • Add-ons displayed after available time slot is selected
  • Add-ons now show extra duration next to each addon label

[1.3.1] - December 1, 2015

Improvement

  • first day of week also applies to admin calendar picker

[1.3.0] - December 1, 2015

✨ Features

  • Time based appointments can now extend into the next day.
  • Rules can now have priorities set to create custom availability schedules.

Improvements

  • New filter to change custom appointment labels.
  • Our "partially scheduled" indicator now works for day slots with multiple spots.
  • Tooltips have been added on the appointment calendar to explain what each color means.
  • New get_wc_appointment_statuses() to return an array of appointment statuses.
  • Use wc_date_format/wc_time_format instead of hard-coded format strings for default date & time formats.
  • Updated Product Add-ons to 2.7.13

Fixes

  • Rules ending at midnight will now properly be parsed.
  • Google Calendar events now properly include the correct end date.
  • Slots smaller than 30 minute chunks will no longer get cut off on the admin calendar.
  • Prevent the partial scheduled indicator from sometimes showing on a previous day to a day with appointments.
  • If there are 0 time slots left, make sure not to show the slot at all.
  • Fix a bug with hours spanning days that can potentially show (still unschedulable) slots on other days
  • Show days as available if time based rules say so.
  • Fatal error that occurs when setting an appointment's scheduled product to N/A.
  • Associate appointment details with an order, even if the appointment and order are created separately.
  • Only send appointment cancelation emails for appointments and not orders.
  • Next/Previous tooltip text can now be translated.
  • Capacity not showing correct number

[1.2.4] - November 9, 2015

✨ Feature

  • added shortcode 'appointment_form'

Improvements

  • Better price display with label instead of cost
  • Removed any cost mention, when cart/order total is zero

Fixes

  • appointment form design now more consistent
  • time range with specific date now works correctly (leading zero not added for months and days)

[1.2.3] - October 15, 2015

Fixes

  • wc_appointment_pretty_addon_duration functions definition
  • Product Add-ons assests linked correctly
  • availability error

[1.2.2] - October 15, 2015

Improvement

  • Better price display with sale price

Fix

  • Price label display

[1.2.1] - October 15, 2015

Fix

  • Availability for Time range (specific date) now works, when no other rule is active

[1.2.0] - October 14, 2015

✨ Feature

  • When duration longer than 120 minutes it gets broken into hours and minutes

Improvements

  • Updated WooCommerce Product Add-ons to 2.7.10
  • Front-end classes now fire inside $GLOBALS[] variable
  • Translations can now be handled inside WP languages directory
  • Replaced WC deprecated functions

Fixes

  • Cancelled appointment staff member
  • Select2 removed from datetime-picker.php template
  • Padding time now assinged correctly

[1.1.0] - September 7, 2015

Fixes

  • Clear transients after an order is canceled by a user
  • Show an error message if an invalid date is entered
  • Fatal error that sometimes occurs when canceling a "requires confirmation" appointment
  • Search now correctly pulls out appointments when you search for customer info
  • Correctly calculate the quantity of spots needed in create_wc_appointment if the multiplier is set to yes & multiple persons are appointment

[1.0.0] - September 1, 2015

No changes documented for this release.


This changelog is automatically generated from the plugin's changelog.txt file during the build process.