In order for users to schedule appointments, you will need to create an appointable product. To do this, go to Products > Add Product. Here you’ll see the familiar WooCommerce interface for product creation. Give your product a title and description before moving on to product data. In the product type dropdown you need to select ‘Appointable Product‘:
By default ‘Virtual’ should be selected if this isn’t a physical product, so no shipping costs are applied. After making these selections, the fields will change to reflect appointable products options.
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.
Price
Price for the appointment is defined the same way as for any WooCommerce product. Regular Price applies at all times, whereas Sale Price applies at a time when customer is scheduling an appointment and not at a time when appointment is taking place.
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.
If you feel really adventurous and want to set price based on date/time or any other availability rule, you can do that as well. Custom pricing rules are very straightforward and you set them up the same way as your availability rules. Base cost is applied to the appointment as a whole, whereas Slot cost is applied to each appointment slot separately. When appointment lasts for 2 days or more, this cost applies to each day in range separately.
When using + in custom pricing rules, the add-ons are added to the price. But when using = in the custom pricing rules, the add-on costs are not being applied to the price → the custom pricing rule overrides the add-on costs and the product price.
Duration
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
Select intervals when each appointment slot is available for scheduling. If your appointment last 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
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 do 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?
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.
Once the option is enabled, customers will be able to reschedule their appointments inside their account on your site.

Customer timezones?
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).
Inventory
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.
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.
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.
There are two types of staff selection:
- Customer defined – This is where the booking form will show a dropdown list of staff which the customer can choose.
- 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 Users > Add 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 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.
See: Using Staff
Availability
Availability (what slots can be scheduled) can be controlled via the Availability tab. Availability rules can also be defined on Global level inside WooCoommerce > Settings > Appointments > Global Availability or your can define Staff Availability individually for each staff inside staff’s User edit screen.
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:
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.
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 your 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:
- Global rules (if any) are applied.
- Product rules (if any) are applied on top of that.
- Staff rules (if any) are applied on top of that.
- Global gCal rules (if any) are applied on top of that.
- 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:
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:
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.
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.
See: Using Add-ons