Advanced Pricing

Pricing rules allow you to dynamically change the price of your appointments based on many different factors. This allows you to implement almost any pricing construct you can think of, for example:

  • Increase prices by 50% on the weekends
  • Round to the nearest $5 and add $2 if the appointment length is less than 1 hour
  • Add an amount based on a selection from a drop-down menu or a custom form
  • Charge an upfront deposit of 10% if booked more than a month in advance
Due to the large number of possibilities offered by pricing rules they can get somewhat complex to set up. You may want to check if an easier method is available in the section Setting prices.

Set up pricing rules

  1. Setting up pricing rules differs per schedule type:

    • Resource Schedule

      On a Resource schedule, on the Resources tab, under Price, select the option: Depends on date, length or resource, and then click Save changes

    • Capacity Schedule

      In case of a Capacity schedule, on the Resources tab, under Price, select the option: Add a price field to the “create new slot” dialog, and then click Save changes

    • Service Schedule

      No additional step is needed to activate pricing rules. However, in order to show prices in the list of services, you need to explicitly check the option: Show a price column in lists near the bottom of the Services tab, and click Save changes

  2. Navigate back to the Resources (or Services) Tab. Then click Set up pricing to go to the configuration screen.
  3. Set the base price

    The base price is the starting price of a booking before any pricing rules are applied. How the base price is set differs per schedule type:

    • Resource Schedule

      At the top of the pricing rules configuration screen, you can set a base price. By default, this price is per reservation. You can also choose a base price per unit of time (minute, half hour, day, etc). For instance, you can charge $15 per half hour per reservation.

    • Capacity Schedule

      At the top of the pricing rules configuration screen, you can set the default base price for slots. This base price is per reservation. If required, you can override the default base price for a slot while creating or editing this slot.

    • Service Schedule

      For service schedules each service has its own base price. A service’s base price can be set while creating or editing the service.

  4. Add pricing rules

    On the “Edit Pricing Details” screen you can create new pricing rules in the section “Create Pricing Rule”:

    1. First select an action to perform on the price. For example, “Increase the price by”.
    2. Depending on the action you choose a field may appear where you can provide additional information. For the option “Increase the price by” a field will appear to specify the amount.
    3. Next, specify the conditions that determine when to perform this action. For example, “If … the weekday is one of, Saturday or Sunday”. The action will only be applied if all the conditions are met. If you don’t specify any conditions, the action is always applied.
    4. Click Save changes at the bottom of the page.
    5. The pricing rule will now appear at the top of the page under “Pricing rules”. The pricing rules are evaluated in order from top to bottom; the order can be changed by dragging them to the desired position in the list.
    Pricing rule creation example
After you create a price rule you will find a “Set up pricing” link on the Overview tab of the configuration page so you can reach the “Edit Pricing Details” screen more quickly.

“Price per item” versus “Total price”

Within the context of pricing rules “price” and “total” have very specific meanings:

  • If you have a Resource schedule, then “price” means price per selected unit (per reservation, per minute, per hour, etc), while the “total” is added once per booking. For example: With a price of $6 per hour, and a total of $10, for a reservation of 2 hours the final price becomes 2 × $6 + $10 = $22.
  • If you are using a Capacity schedule, then “price” is multiplied by the quantity, while the “total” is added once per booking. For example: With a price of $5 for a quantity of 3, and a total of $10, the final price becomes 3 × $5 + $10 = $25.
  • If you are using a Service schedule then there is no distinction between the two terms.

For repeating reservations, each repetition is counted as a separate booking. This means a total will be added for each repetition. This total need not be the same for each repetition if there are price rules that affect only slots on a specific date.

Time partitioning

When you use a price per time unit on a Resource schedule, price calculations can get complex if an appointment spans periods where different price rules apply. Consider, for example, a situation where weekend bookings are twice as expensive as non-weekend bookings. When making a booking that includes one weekend day and one non-weekend day, the system will correctly apply the higher price for the weekend day only. You can imagine that this can get quite complex if multiple rules apply during different overlapping periods.

When using a price per reservation, only the price of the starting time applies and no time partitioning will be used. Similarly, only the start time is taken into account for slots on a Capacity schedule and appointments on a Service schedule.

Stop evaluating rules

The action “Stop evaluating rules” allows you to skip all subsequent rules when the condition matches. This can be useful, for example, to have a set of rules only apply in the weekend and skip them for all other days.

Using a price from a custom field

To use a custom field, first ensure a custom field is enabled on the schedule so that the relevant actions will show up. Next, add one of the actions: “Add field to price” or “Add field to total” and select the custom field from which you want to add the value. For a detailed example of how to set up a drop-down field that adds to the price see the Tips and tricks section.

From the drop-down options the system will automatically try to extract a price. For example, Extra towels $5. When this option is selected by the user, $5 will be added. Percentages can be specified by adding a % sign. For example: Bring your own surfboard −20%

If you place a value between square brackets [ ], then this value will be stored in the database, and show up in email confirmations. You should make sure to repeat the price between the brackets, otherwise the price will be ignored. For example: Extra sauna time +$10 [xtr-sauna $10]

Using a price from an attached form

To use a price from an attached form add a rule with the action “Add form”. This option is only visible if a form is attached to the schedule. (See Adding custom forms).

You indicate a field contains a price by adding curly brackets { } that contain the price at the end of a field’s option. For example:
Lunch basket +$10 {$10} or Catered lunch $20[basket]{$20}
The price between { } will not be shown on the form, to display the price also add it to the text before the brackets.

Values from attached form fields are added to the total price by default. To add them to the price per item instead, you can add a # after the price.
For example: Extra blanket +$5 {$5#}
See “Price per item” versus “Total price” for an explanation of the difference between the two.

User groups

With user groups you can make some price rules only apply to specific users. The user groups documentation explains how to create groups and assign users to them. Once you created at least one user group, a new condition will appear when creating a price rule: … the user’s group is. This condition allows you to limit a pricing rule to a specific group. You can use this to reduce the price for people in a specific group, or raise the price for people not in any group.

Set to unavailable

The action “Set to unavailable” allows you to make it impossible to make a reservation under certain conditions. For example, “Set to unavailable if … the time until start is less than 1:00:00” (less than 1 day)

This can be useful, for instance, if only users in the premium user group are allowed to book on weekends. Or you can make a class unavailable if no one has signed up 2 days in advance. Keep in mind the user will only see this as “unavailable”. It is up to you to explain why it is unavailable, for instance by using a custom message above the schedule.


Pricing rules can also be used to implement deposits. This means that people are presented with the total price, but are only required to pay the deposit upfront and the remainder is collected later. Note that the system does not have support for collection the remainder, you would need to track this yourself. There are actions available to set a fixed amount or a percentage of the total as a deposit.