Skip to main content

Appointable Product

Before you begin

How it works

An Appointable product is a WooCommerce product with duration, capacity, and booking rules. Customers book it on the storefront; you manage appointments in admin.

What you need first

You are ready when

  1. ✅ Product type is Appointable, duration and interval are set
  2. Availability tab has at least one Yes rule
  3. ✅ A test booking shows slots on the product page

Create the product

  1. Go to Products → Add New.
  2. Choose Appointable Product in the Product Data dropdown.

Select Appointable Product type

  1. Mark Virtual when no shipping is required (selected by default for services so shipping is not applied).

General settings

Configure price, duration, interval, padding, lead time, scheduling window, and confirmation or cancellation rules here. Interval must be less than or equal to duration.

General product settings

  • Duration: How long each booked appointment lasts (minutes, hours, days, or months). The customer’s start time plus duration must fit inside an appointable time range on the Availability tab.
  • Interval: How often start times are offered inside an open range. This is the step between starts, not how long the service lasts.
    • Example: duration 2 hours, interval 15 minutes → starts at 09:00, 09:15, 09:30, …; each booking still blocks a full 2 hours.
    • Example: duration 270 minutes, interval 270 minutes → starts only every 4.5 hours from the first open minute (for example 08:30, then 13:00 in a continuous day). Use a smaller interval (for example 30 minutes) if you want more start choices such as 13:30.
    • Tip: for one departure per open window, set interval equal to duration and use availability rules for the window(s) you offer.
  • Padding: Time reserved around each appointment for prep, setup, or cleanup. Set Before and After on the same row (shared unit). Padding is not added to the customer-facing duration; it only keeps staff free around the booking.
    • Existing padding is treated as Before, and After starts at 0. With only Before set, the handoff gap stays the same as before (timed and day).
    • The gap between two appointments is the earlier appointment's After plus the later appointment's Before. Example: After 10 then Before 15 gives a 25-minute gap (or 25 days on a day product when the unit is days).
    • Same staff on two products: the same earlier-After + later-Before rule applies.
  • Lead time: Minimum notice before booking (for example, 1 day means no bookings within 24 hours of start).
  • Scheduling window: How far ahead customers may book (for example, 1 month).
  • Requires confirmation: When enabled, customers submit details for approval instead of paying at checkout. After you approve, they receive a confirmation email with an optional payment link.
  • Can be cancelled / Can be rescheduled: When enabled, set how long before start customers may cancel or reschedule from My Account.

Reschedule options

When reschedule is enabled, customers use My Account → Appointments.

Reschedule button in My Account

  • Timezones: Customer timezone display is site-wide (not per product). When enabled, customers pick a timezone on the booking form and in My Account. See Timezones.

Recurring packages (5.4+)

Below reschedule options, enable Can be recurring? to let customers book a series of sessions (class packs, treatment plans) with RRULE scheduling.

SettingPurpose
Repeat frequenciesDaily, weekly, and/or monthly patterns
Min / max sessionsOccurrence limits per package
Payment modelPrepaid (all sessions now), pay-first (first session now + balance order), or customer chooses

Use Pricing tab rules with Appointments in package to discount longer series. Add-ons can be marked Use once per recurring series.

Full guide: Recurring appointment packages.

Recurring product settings

note

Recurring packages are not subscriptions. For ongoing credits each billing period, use a WooCommerce Subscription product with the Appointments tab — see Membership credits.

Pricing

Set the appointment price on the General tab like any WooCommerce product.

General product settings with pricing

Price fields

  • Regular Price: Standard price unless a sale price applies.
  • Sale Price: Optional discount. The price at booking time applies, not the appointment date (December sale price applies to a January slot booked in December).
  • Cost of Goods Sold (COGs): Your cost per appointment for margin reporting. Not shown to customers and does not change the selling price.
info

COGs help track profitability. Regular Price $100 and COGs $30 means $70 margin per appointment.

You can hide the numeric price and show a custom label with Label instead of price? — checkout still uses the calculated price.

Price label option

Custom pricing rules

Use Custom pricing rules on the Pricing tab for date, time, staff, or duration-based pricing (similar structure to availability rules).

Custom pricing rules

Rule types:

  • Base cost: One-time charge for the whole appointment
  • Slot cost: Per slot; for multi-day bookings, applies to each day in the range

Cost modifiers:

  • + (Plus): Adds to base price and add-ons
  • = (Equals): Replaces base price and add-ons for matching ranges
tip

Use = when a rule should fully override product price and add-ons for specific date/time ranges.

Inventory & capacity

By default, one appointment fits each available slot. Increase Quantity for group classes or parallel bookings — set limits carefully to avoid overbooking.

When quantity is greater than 1, customers use the WooCommerce quantity field to book multiple seats in one checkout. Max order caps how many they can request (for example, max 2 for pairs).

Inventory settings

Inventory and pricing

  • Capacity (Quantity): Base seats per slot or per day (see Quantity applies).
  • Quantity applies: Per slot (default) or Per day (shared cap for all slots on the same calendar day, per staff when applicable).
  • Minimum/Maximum per booking: Clamp quantity per checkout.
  • Rules can change capacity: Availability Qty can lower capacity; staff and product caps still apply.
  • Staff quantities override: Staff quantity replaces product capacity; availability rules can only reduce after that.

With staff assigned, inventory applies per staff member, not as a shared pool across all staff:

  • Inventory 1, no staff → 1 booking per slot.
  • Inventory 10, no staff → 10 bookings per slot.
  • Inventory 10, 1 staff → 10 bookings per slot for that staff.
  • Inventory 10, 2 staff → 10 bookings per slot for each staff member.
  • Per-staff inventory can differ from the product default.

Capacity priority (most specific wins)

  1. Staff quantity (if set).
  2. Availability rule Qty.
  3. Product capacity.
  4. Per-booking min/max; the UI clamps to remaining seats.

Per-day specifics

  • Multi-day/month bookings deduct capacity from every day they cover; a slot is unavailable if any day in the span has no remaining daily capacity.
  • For "all staff" assignment, every staff member must have daily capacity for each day in the span.
  • With no staff preselected, summed daily capacity is capped by the product's per-day quantity.

Staff

Assign staff who can be booked for this product. Staff availability is global — booking a staff member for one product blocks that staff for the same date/time on all other appointable products.

Product staff settings

Selection mode:

  1. Customer defined — booking form shows a staff dropdown for the customer to choose.
  2. Automatically defined — the plugin assigns an available staff member.

Add staff under Users → Add New with the Shop staff role. Optional label text appears on the booking form instead of the display name.

Additional cost — extra charge per staff member, added to the appointment total.

Inventory — per-staff seat limit on this product; falls back to product inventory when unset.

Staff edit screen

Staff edit screen

Staff can update their own profile under Users → Profile:

  • Connect a personal Google Calendar.
  • Set availability rules and view synced Google Calendar blocks.
  • Opt in or out of this product.

Availability (product tab)

Use the Availability tab to open bookable slots for this product. Rules layer on global and staff rules — see Availability rules for range types, priority, and examples.

Availability settings

Product-only options:

OptionWhat it does
Availability checkCheck only the starting slot, or every slot across the booked range
Auto-select?Pick the first available slot automatically
Restrict start days?Limit which weekdays an appointment may start on

Add rules with Add Rule. Each row sets range, optional Qty override, Priority (lower number wins), and Appointable yes/no.

Availability rules example

Mon–Fri 9–5?

Use time rules, not range of days Yes on Mon–Fri alone. See Works vs does not work.

Add-ons

Product add-ons appear on the booking form. On a new or existing appointable product, open the add-ons panel and click Add Field:

Product add-ons

Choose Type and Display as to define the field:

Add-on type selection

Common options:

  • Hide duration label for customers / Hide price label for customers — hide labels on the storefront only.
  • Show before appointment form — render add-ons above the calendar.

Per option:

  • Option — label shown to customers.
  • Price — added to total (flat or per quantity; can be negative).
  • Duration — added to appointment length (flat or per quantity; can be negative).

See Add-ons for global add-ons and recurring-series options.