/settings/billing/pricing-rules).
Overview
- Percentage, fixed, or absolute - Raise or lower the price by a percentage (-100% to +100%) or a fixed amount in your currency (negative for a discount), or state the hour’s price outright with Absolute price.
- Publish a rate card - One absolute rule per time band reproduces a printed price list without translating it into adjustments off a base rate.
- Scope by resource or venue - Target specific Clubs, Areas, Instructors, or Class types, or leave a scope open to apply it to every resource of that type.
- Member rates - A rule scoped to a plan is the rate that plan’s holders pay. Only one plan can grant the rate on a booking, so two overlapping plans never compound.
- Priority when rules collide - Priority decides precedence, and the lower number wins.
- Conditional matching - Attach conditions so a rule only fires in a time window, on certain days, for bookings made far enough ahead, above a duration threshold, in a date range, or for members on specific plans.
- Stackable rules - Create multiple rules; every rule that matches a booking is applied, so you can layer a weekend premium on top of a peak-hour surcharge.
- Time-window splitting - When a rule uses a time range, the booking is split at the window boundaries so only the portion inside the window is adjusted.
- Pricing sheets - The same engine prices every slot across a day, which is what powers the per-slot prices shown on the booking calendar and in booking search.
- Base price is untouched - Rules adjust the resource’s base price (area price per hour, instructor hourly rate, or class price); they do not replace it.
The list page
The page opens with an info banner explaining dynamic pricing, followed by a table of your rules with these columns:- Name - the rule name.
- Adjustment - the percentage or fixed value, signed. Increases show in one color and discounts (negative values) in another so you can read the intent at a glance.
- Scope - a summary of the scoped resources, for example All when unscoped, or Areas (3) when three areas are targeted.
- Conditions - a count of attached conditions, or No conditions.
- Status - Active or Inactive. Only active rules are considered when pricing a booking.
Creating or editing a rule
Click Add (or edit an existing row) to open the rule dialog. It has three sections: Basic Information, Scope, and Conditions.Basic information
- Rule Name (required) - a label such as Padel peak hours or Weekday off-peak discount.
- Description - optional free text to explain the rule to other staff.
- Adjustment Type - Percentage, Fixed Amount, or Absolute price.
- Percentage Adjustment (%) - shown when the type is Percentage. Accepts -100 to +100. Enter a positive number to increase the price and a negative number to decrease it.
- Fixed Amount - shown when the type is Fixed Amount. Enter the amount to add per hour; use a negative value for a discount.
- Price per hour - shown when the type is Absolute price. What this hour costs, replacing the area price rather than adjusting it. Enter the rate for one hour; a 90-minute booking is charged one and a half times it.
- Priority - precedence when several rules match the same slot, and the lower number wins. Leave it at 0 unless you need a rule to beat another one; see Priority.
- Active - toggle the rule on or off without deleting it.
Scope
The scope decides which bookings a rule can apply to. Add one or more scope entries; each entry has a Scope Type and a list of resources:- Clubs - the rule applies only at the selected gyms. This is the scope a multi-venue organization needs to publish a different price list per site.
- Areas - the rule applies only to bookings against the selected areas (courts, rooms, fields).
- Instructors - the rule applies only to bookings against the selected instructors.
- Class types - the rule applies only to class bookings of the selected class types.
Scope entries are combined with AND. If you add both an Areas entry and an Instructors entry, a booking must carry both an area and an instructor to match. In practice, use one scope type per rule unless you specifically need that combination. A scope also gates by resource presence: an Areas-scoped rule never applies to a class or instructor-only booking, so area rules do not leak into other booking types.
Conditions
Conditions further restrict when a rule fires. Add as many as you need - all conditions must pass for the rule to apply (AND logic). A rule with no conditions applies whenever its scope matches.- Weekdays with Time Range - choose weekdays (optional; empty means every day) plus a Start Time and End Time. The rule applies to bookings whose start time falls in that window, evaluated in your organization’s timezone. The end time is exclusive (a 12:00-14:00 window covers slots from 12:00 up to, but not including, 14:00). This is the condition that splits a booking at the window boundary.
- Days of Week - restrict to specific days without a time range (for example, weekends only).
- Availability - fire based on how full the resource is over the next X days, compared with an operator (
>,<,>=,<=) and a percentage. Useful for demand-based pricing. - Booking Timing - fire based on how many days ahead the booking is made, compared with an operator and a day count. Useful for early-bird discounts or last-minute surcharges.
- Demand Level - fire on Low Demand or High Demand, which the system derives automatically from availability.
- Duration Threshold - fire only when the booking is at least a Minimum duration (hours).
- Date Range - fire only between a Start Date and End Date (interpreted as whole days in your organization’s timezone), for seasonal pricing.
- Plan - fire only for members on the selected plans (leave empty for all plans). Bookings with no active plan do not match a plan-restricted rule. A rule with a Plan condition is a member rate; see Member rates for how two plans are resolved.
How a rule matches a booking
When the system prices a booking, it loads every active rule for your organization and keeps the ones that match, in this order:- Scope check - the booking must carry the resource the scope targets. An Areas scope requires an area; a Class types scope requires a class booking; a Clubs scope requires the booking to be at one of the selected gyms. If the scope lists specific IDs, the booking’s gym, area, instructor, or class type must be one of them. Empty IDs mean any resource of that type.
- Condition check - every attached condition must pass (weekday and time window, days, duration, date range, plan, and the availability, booking-timing, and demand checks).
A Clubs-scoped rule needs the booking to name a gym. A context that carries no gym fails the scope rather than inheriting it, so one venue’s price list can never reach another venue’s courts.
Priority
Priority is precedence, and the lower number wins. There is one direction to remember, and it is that one: give the rule you consider most specific the smallest number. What “wins” means depends on whether the rules can coexist:- Percentage and fixed rules all apply, so priority only sets the order they are applied in, lowest first. That matters when you mix the two, because a percentage taken before a fixed deduction gives a different total than after it.
- Absolute price rules replace the price, so exactly one wins: the lowest priority, then the more specific rule (one scoped to a plan beats one that is not), then the older rule.
- Member rates nominate a plan. The lowest priority decides which plan grants the rate.
- Year-round day rate, absolute 39, Priority 10.
- Christmas week rate, absolute 25, date range 22 Dec to 2 Jan, Priority 0.
Member rates
A rule with a Plan condition is the rate that plan’s holders pay. It behaves like any other rule with one addition: only one plan may grant the rate on a booking. A member can easily hold two rate-granting plans at once - a season pass for the court and a ten-lesson coaching card. Rather than compounding both discounts, the pricing engine nominates one plan:- The lowest Priority among the matching plan-scoped rules nominates its plan.
- If two plans are nominated together, the winner is the one that leaves the member paying less. A gym that gave two overlapping member rates the same priority has not said which it means, and the platform does not resolve that against the person who paid for both.
- Every rule scoped to the winning plan then applies normally, so “season plan gets 34 per hour” and “season plan gets another 10% off in winter” both take effect.
Which memberships grant a member rate
- An active membership grants its rate on any slot it is quoted against.
- A season pass sold before its season opens grants its rate too, but only for slots inside its own season. A gym sells the winter in September, so the pass waits at pending until the season’s first day; the holder is still quoted their rate for the December hours they buy on top of the contract, and the published rate for anything before the season starts. The slot’s start time decides, read on the venue’s clock, and the season’s last day is covered in full.
- A pass waiting on its payment grants nothing. The rate is part of what was bought, and the money is not in yet.
- A cancelled, expired or paused membership grants nothing.
How the booking price is computed
The price is built from a base rate and then adjusted by the matching rules. Base price. The base comes from the booked resource:- Area bookings use the area’s price per hour multiplied by the duration.
- Instructor bookings use the instructor’s hourly rate.
- If a booking has both an area and an instructor, their hourly rates are summed.
- Class bookings use the class’s own price as a fixed base.
- If no rate is set, the base is zero.
- Absolute price sets the segment price outright: the rate multiplied by the segment’s duration in hours. Only the winner is applied, and a losing absolute rule leaves no line on the quote, because a price that was never applied did not price the slot.
- Percentage rules multiply the current segment price:
adjustment = currentPrice x percentage / 100, added to the running price. Multiple percentage rules compound (each applies to the running total, not the original base). - Fixed Amount rules add the amount per hour: a fixed amount is multiplied by the segment’s duration in hours (so a fixed -10 becomes -5 for a 30-minute segment).
Membership coverage is resolved before pricing rules. If a member’s plan covers the booking (a free session or included hours), the booking is priced at zero and pricing rules do not apply.
Pricing sheets
A pricing sheet is the calculated price for every bookable slot of a resource across a day, produced by running the same pricing engine slot by slot. Sheets are what let the admin calendar and booking search show a price under each time slot without a separate calculation per click.- Slots are generated across the resource’s effective operating hours (falling back to 06:00-22:00 when hours are not set), stepped by the booking policy’s duration step or a default slot length (30 minutes; configurable from 5 to 240 minutes).
- Each slot is priced with the active rules for that start time, so peak and off-peak differences appear directly on the calendar.
- Sheets can be generated for a single resource on one day, or in batch for multiple areas and instructors across a date range.
- The response also carries the effective booking policy (minimum and maximum slot length, duration step, notice, and how far ahead members can book) so the calendar can size and constrain slot selection.
Worked examples
Padel peak-hour surcharge
Charge more for prime evening court time on weekdays.- Adjustment Type: Percentage, +25%.
- Scope: Areas - your padel courts (leave empty to cover every court).
- Conditions: Weekdays with Time Range - Monday to Friday, 18:00 to 22:00.
Off-peak gym discount
Encourage midday visits to your fitness studio.- Adjustment Type: Percentage, -20%.
- Scope: Areas - the gym floor or studio.
- Conditions: Weekdays with Time Range - Monday to Friday, 09:00 to 16:00.
Weekend court premium
Add a flat premium to tennis and padel courts on Saturday and Sunday.- Adjustment Type: Percentage, +15%.
- Scope: Areas - your tennis and padel courts.
- Conditions: Days of Week - Saturday, Sunday.
Early-bird class discount
Reward members who book a spin or reformer class well ahead of time.- Adjustment Type: Percentage, -10%.
- Scope: Class types - Spinning (or Reformer Pilates).
- Conditions: Booking Timing - more than (>) 7 days ahead.
Long-session climbing discount
Give a break to climbers who book a longer wall session.- Adjustment Type: Percentage, -15%.
- Scope: Areas - your bouldering or roped areas.
- Conditions: Duration Threshold - minimum 2 hours.
Member plan rate
Offer a standing discount to members on a premium plan for personal training.- Adjustment Type: Percentage, -20%.
- Scope: Instructors - your personal trainers.
- Conditions: Plan - your Premium plan.
A published rate card with a holder column
An indoor tennis venue prints one table with two columns: what an hour costs, and what a season pass holder pays for the same hour. Reproduce it with two absolute rules per band. The published rate, for everyone:- Adjustment Type: Absolute price, Price per hour 39.
- Scope: Clubs - the venue.
- Conditions: Weekdays with Time Range - Monday to Friday, 10:00 to 17:00.
- Priority: 10.
- Adjustment Type: Absolute price, Price per hour 34.
- Scope: Clubs - the venue.
- Conditions: Weekdays with Time Range - Monday to Friday, 10:00 to 17:00, plus Plan - the season’s plan.
- Priority: 0.
Tips & best practices
- Name rules for their intent. Padel peak +25% reads better in the list than Rule 3.
- Keep one scope type per rule unless you deliberately want to require a booking to carry two resources at once.
- Use the sign deliberately. Positive percentages and fixed amounts increase the price; negatives discount it. Fixed amounts are per hour, so they scale with duration.
- Remember percentage and fixed rules stack. If two of them match the same booking, both apply and percentages compound. Check overlapping time windows and scopes so you do not double-charge or over-discount by accident.
- Use Absolute price for a printed table, adjustments for a policy. “The day rate is 39” is an absolute rule. “Evenings cost 25% more” is a percentage rule. Translating a printed rate into an adjustment off a base price only introduces arithmetic errors.
- Give the more specific rule the lower priority. A member rate at 0 and a published band at 10 reads the way you mean it, and beats relying on the age of the rules.
- Scope to a gym when venues price differently. Without a Clubs scope, a rule authored for one venue applies to every court in the organization.
- Set a base price first. Rules adjust the area price per hour, instructor hourly rate, or class price. With no base rate, there is nothing to adjust and the slot prices at zero.
- Deactivate instead of deleting a seasonal rule you will reuse. Toggle Active off and back on rather than recreating it.
- Mind the timezone. Time windows and date ranges are evaluated in your organization’s timezone, not the admin’s browser timezone.
Troubleshooting
Issue: A rule never applies to a booking. Solution: Confirm the rule is Active, that the booking carries the scoped resource (an Areas-scoped rule does nothing for a class or instructor-only booking), and that every condition passes. Remember conditions are AND - one failing condition blocks the whole rule. Issue: The discount is bigger or smaller than expected on a longer booking. Solution: Fixed Amount adjustments are applied per hour, so a fixed -10 becomes -20 over two hours. Use a percentage if you want the adjustment to stay proportional regardless of duration. Issue: Only part of my time-window booking got the surcharge. Solution: That is expected. A Weekdays-with-Time-Range condition splits the booking at the window edges, so only the portion inside the window is adjusted. The end time is exclusive. Issue: Two rules both fired and the price compounded. Solution: Matching percentage and fixed rules stack; there is no single winner among them. Narrow the scopes or time windows so only the intended rule matches, deactivate one of them, or state the price outright with an Absolute price rule, of which only one can win. Issue: My new Absolute price rule has no effect on the slot. Solution: Another absolute rule is winning it. Only one absolute rule prices a slot, decided by the lowest Priority, then specificity, then age. Two rules both left at 0 tie, and the older one wins, so give the rule that should win a lower priority number. Issue: A member holding two plans got the wrong rate. Solution: Only one plan grants the member rate. The lowest Priority among the matching plan-scoped rules nominates the plan, and a tie is settled in the member’s favour. Set an explicit priority on the rate you intend to win, or scope the other plan’s rule so it does not match this booking. Issue: A holder was quoted the published rate instead of their member rate. Solution: Check what the membership grants right now; see Which memberships grant a member rate. The usual causes are a pass still waiting on payment, a cancelled or expired one, or a season pass whose season has not started priced against an hour that falls outside that season. Issue: A rule authored for one venue is pricing another venue’s courts. Solution: Add a Clubs scope naming the venue it belongs to. Without one, a rule applies across the whole organization. Issue: A booking priced at zero and ignored the rule. Solution: Membership coverage is resolved before pricing rules. If the member’s plan covers the booking, it is free and no rule applies. Check the member’s active membership. Issue: I edited a rule but the calendar still shows old prices. Solution: Pricing rules are cached briefly (about a minute) so the calendar can price many slots quickly. Wait a moment and refresh; the pricing sheets will pick up the change.Related
- Areas - Set the price per hour that rules adjust, and reach the Pricing rules page from the Areas header.
- Plans - Membership plans referenced by the Plan condition and by membership coverage.
- Booking policies - Control when members pay, slot lengths, and cancellation rules that work alongside pricing.
- Seasons - The period a season pass is sold for, and its volume discount.
- Season passes - Priced entirely from these rules, week by week.