Skip to main content

Appointable Product

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 if no shipping is required (by default this should be selected for non-physical products, so no shipping costs are applied).

General Settings

The first settings you'll see include most of the configuration you will need to make your appointable product ready to work as planned: the price, inventory, duration, padding time, lead time, scheduling window and confirmation / cancellation requirement. Interval needs to be smaller or equal to duration.

General product settings

  • Duration: Length of the appointment (minutes, hours, days). This determines how long an appointment lasts. The actual duration units can be Months, Days, Hours or Minutes. You can delegate exactly what time the appointments can start inside Availability product options.
  • Interval: Step between slots (e.g., 15 minutes for hourly services). Select intervals when each appointment slot is available for scheduling. If your appointment lasts for 2 hours, you can set the interval of available slots on 15 minutes. This way, your customers will have option to schedule appointment every 15 minutes. When they do schedule it, 2 hours will be booked out and slot intervals of 15 minutes will start after that.
  • Padding time: Buffer before/after each appointment. If you need time to prepare for your appointment before / after the appointment, you should use padding time. This time is not calculated into duration and visible to customer and only applies before / after scheduled appointments.
  • Lead time: Choose how much in advance you need before customer schedules an appointment. For instance, if you choose 1 day, customers will not be able to schedule an appointment within 24 hours before it takes place.
  • Scheduling window: Choose how far in advance are customers allowed to schedule an appointment. For instance, if you choose 1 month, customers will not be able to schedule an appointment more than 1 month before it takes place.
  • Requires confirmation: Admin approval needed before payment. Check this option if the appointment requires to be approved by an admin / staff before being confirmed. Rather than take payment at checkout, the user will input their details and submit it for your approval. After you approve it, customer will receive an email with an optional payment link inside.
  • Can be cancelled: Check this option if you want the user to have the ability to cancel their appointment. After selecting the option, you will see two fields that allow you to choose how many Minutes/Hours/Days/Months before the start date your customers are allowed to cancel their appointment.
  • Can be rescheduled: Check this option if you want the user to have the ability to reschedule their appointment. After selecting the option, you will see two fields that allow you to choose how many Minutes/Hours/Days/Months before the start date your customers are allowed to reschedule their appointment.

Reschedule options

Once the option is enabled, customers will be able to reschedule their appointments inside their account on your site.

Reschedule button in My Account

  • Customer timezones: Show times in the customer's local zone. Check this option if you want to adjust appointable product times to customer's timezone. Customer can also manually change their automatically detected timezone (in case they are travelling) and their set timezone is displayed throughout the booking process. Times are also displayed in their timezone in emails sent to them (confirmation, cancellation, reminder, … emails).

Customer timezones setting

Availability

  • Availability check: All slots available by default or not available.
  • Rules: Add date/time rules (inherit global availability as needed).
  • Global availability: Use site-level rules as a baseline.

Pricing

Price for the appointment is defined the same way as for any WooCommerce product in the General tab.

General product settings with pricing

Price Fields

  • Regular Price: The standard price for the appointment. This applies at all times unless a sale price is set.
  • Sale Price: Optional discounted price. The sale price applies at the time when the customer is scheduling the appointment, not at the time when the appointment is taking place. If a customer books in December for a January appointment, the December sale price applies.
  • Cost of Goods Sold (COGs): The cost to you for providing this appointment. This is used for profit calculations and reporting. COGs are not visible to customers and don't affect the selling price. Useful for tracking margins and profitability per appointment type.
info

COGs help you understand profitability. If your Regular Price is $100 and COGs is $30, your profit margin is $70 per appointment.

You can also choose to hide the price and show custom text label instead by choosing Label instead of price? Prices will still apply and the calculated price will be applied during the checkout.

Price label option

Custom Pricing Rules

For advanced pricing based on date, time, staff, or other factors, use Custom pricing rules in the Pricing tab. These rules work similarly to availability rules.

Custom pricing rules

Rule Types:

  • Base cost: Applied to the appointment as a whole (one-time charge)
  • Slot cost: Applied to each appointment slot separately. For multi-day appointments, this cost applies to each day in the range

Cost Modifiers:

  • + (Plus): Adds the rule cost to the base price and add-ons
  • = (Equals): Replaces the base price and add-ons with the rule cost (overrides everything)
tip

Use = in custom pricing rules when you want the rule to completely override the product price and add-ons for specific date/time ranges.

Inventory & Capacity

By default, only 1 appointment per available time slot is possible. With increasing inventory, you can take more appointments at one time. Use this with precaution so you don't over-schedule yourself. This option is also useful if you want to take group appointments / classes, where you can limit number of attendants to selected capacity. When inventory is set to more than 1 appointment per slot, customer has option to schedule multiple appointments by increasing the number of appointments in standard WooCommerce quantity field. If you want to allow 2 slots to be booked at once, you should set the Max order to 2. Same goes for Min order option.

Inventory settings

Inventory and pricing

  • Capacity (Quantity): Base seats per slot or per day (choose in "Quantity applies").
  • Quantity applies: Pick 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 the quantity customers can request.
  • 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.

If you're using staff, take into account that inventory applies to each staff separately and does not apply overall for all staff combined.

  • If you have the Inventory of 1 and no staff, then 1 appointment can be booked at any time slot.
  • If you have the Inventory of 10 and no staff, then 10 appointments can be booked at any time slot.
  • If you have the Inventory of 10 and 1 staff, then 10 appointments can be booked at any time slot.
  • If you have the Inventory of 10 and 2 staff, then 10 appointments can be booked for EACH staff at any time slot.
  • You can set individual staff Inventory to be different from product Inventory as well.

Capacity Priority (most specific wins)

  1. Staff quantity (if set).
  2. Availability rule Qty.
  3. Product capacity.
  4. Per-booking min/max still apply; 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 its 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, the summed daily capacity is capped by the product's per-day quantity so totals can't exceed the product cap.

Staff

You can assign staff to each appointable product. Staff availability is global, which means scheduling appointment with staff for one appointable product will make same staff unavailable for all appointable products for the scheduled date/time.

Product staff settings

There are two types of staff selection:

  1. Customer defined – This is where the booking form will show a dropdown list of staff which the customer can choose.
  2. Automatically defined – This is where a staff will be automatically assigned to a customer appointment if available.

After linking staff to your appointable product, you can also give your staff a custom 'label'. This will be shown on the frontend booking form. Staff is added via default UsersAdd New screen. Make sure to assign Shop Staff role for newly added staff.

Additional Cost
You can define additional cost for each staff at product level, which will be calculated into overall product cost.

Inventory
You can set staff Inventory at product level. If Inventory is not set, it will take product inventory by default.

Staff Edit Screen

Staff edit screen

Staff can also edit their options under their dedicated edit screen inside Users → Your Profile menu. They can:

  • Sync their profile with their own Google Calendar.
  • Set their own availability rules. View synced rules from Google Calendar.
  • Assign/remove themselves from the appointable products.

Availability

Availability (what slots can be scheduled) can be controlled via the Availability tab. Availability rules can also be defined on Global level inside WooCommerce → Settings → Appointments → Global Availability or you can define Staff Availability individually for each staff inside staff's User edit screen.

Availability settings

Availability Check

If you choose to check availability per starting slot only, you can set any date/time rules you want and your customer will be shown available slots no matter which slot they schedule, as long as starting date/time is available at the time of booking. Otherwise, availability is checked against all slots in booked range.

Auto-select?

Check this option if you want the plugin to automatically select first available slot for the customer. This way customer doesn't need to first pick the date/time as it is auto-selected for them.

Restrict start days?

If you check this option you can select the days of the week when appointments can start. This does not affect availability and appointments will still be available on week days that are not checked, but they will start only on days checked.

Custom Availability

You can setup specific availability rules, such as availability for:

  • months
  • day of the week
  • recurring time
  • specific date

To add a rule, click the Add Rule button:

Add availability rule

A new row will be created in which you can choose a Range type, Range (from/to), Inventory, Priority and Appointable (yes or no) options. Inventory allows you to override product inventory for scheduling on specific date/time.

Availability rules

The from/to values differ based on the range type:

  • Date range – [from / to] will show a datepicker fields. All available slots between selected dates are affected.
  • Date range with time – [from / to] times will affect all available slots between the start time on [from] date and end time on the [end] date.
  • Range of months – [from / to] will show a dropdown of months (January to December). All available slots between selected months are affected.
  • Range of weeks – [from / to] will show a dropdown of weeks (1 to 52). All available slots between selected weeks are affected.
  • Range of days – [from / to] will show a dropdown of weekdays (Monday to Sunday). All available slots between selected weekdays are affected.
  • Time Ranges – [from / to] will show an input of times (00:00 to 24:00). All available slots between selected times are affected.
    • Recurring Time (all week): all available slots between selected times for each day are affected.
    • Recurring Time (date range): all available slots between selected times for each date in date range are affected.
    • Monday through Sunday: all available slots between selected times for each day rule selected are affected.

Range Type
Select which rule type you would like to use. Take into account that time rules will also affect date range, unless defined otherwise. Same goes for date rules, they will affect time rules as well.

Range
Select the range for your rule type. Ranges are defined from certain point to another, where starting range is included, whereas ending range is not included.

Inventory
Optionally override product inventory for selected rule. Inventory defines the maximum number of appointments per slot.

Priority
Optionally define priority number. Rules with lower priority number will override rules with a higher priority (e.g. 9 overrides 10). By using priority numbers you can execute rules in different orders for all three levels: Global, Product and Staff rules. This means you can override rules set on Global level or rules set on Staff level. You can do the same on all levels.

The rule hierarchy goes like this (assuming you are not changing the Priority number and leaving it at default. Default is 10 for all rules created in WP and 5 for events created via gCal) for a specific product:

  1. Global rules (if any) are applied.
  2. Product rules (if any) are applied on top of that.
  3. Staff rules (if any) are applied on top of that.
  4. Global gCal rules (if any) are applied on top of that.
  5. Staff gCal rules (if any) are applied on top of that.

Appointable
Select if rule adds to availability or not. If not appointable, users won't be able to choose slots in this range for their appointment. Take into account that products are not appointable by default and you have to define the appointable rules, when products are available for scheduling.

Delete/Move
Rows can be removed by clicking the X on the far right, or dragged and dropped to sort using the handle on the far left. If multiple rows match the product being scheduled, the furthest down the list will take priority.

Example
If you want the product to be available from Monday to Friday from 08:00 am to 01:00 pm, set 2 rules in this order:

Availability rules example

Add-ons

Add-ons are integrated with the plugin and are added the same way for both per-product and global add-ons. This panel is found on a new or existing products. To add your first add-on, click the "Add Field" button on your new product settings. This will insert a blank add-on:

Product add-ons

To start, select a field "Type" and "Display as" from the top-most select box. The combination of both will select the exact field you want.

Add-on type selection

Created add-on has several options:

  • Hide duration label for customers – Hide everywhere for customers only.
  • Hide price label for customers – Hide everywhere for customers only.
  • Show before appointment form – Move add-on on top of the appointment form.

Each selected field has several options:

  • Option – name of the option field. Displayed as label.
  • Price – field price (optional) – added to overall appointment price. Price can be added as flat fee or can be tied to quantity purchased. Price can also be negative to reduce the overall appointment cost.
  • Duration – field duration (optional) – added to overall appointment duration. Duration can be added as flat time or can be tied to quantity purchased. Duration can also be negative to reduce the overall appointment duration.