Core Operations

Catalog & Services

Services, variants, add-ons, resources, and pricing configuration.

Overview

The catalog defines what a brand sells and delivers: services, their variants and durations, add-ons, physical resources, and pricing. It is the source of truth that the scheduling engine, checkout, booking widget, and reporting all read from.

The catalog is configured at the brand level and can be overridden per location for pricing and availability.

Services

A service is a deliverable offering (e.g. "Haircut", "Balayage", "Deep Tissue Massage"). Each service belongs to a service category (e.g. "Hair", "Colour", "Spa").

Service Fields

Field Description
Name Display name shown to staff and clients
Category Grouping for display and filtering
Description Shown on the booking widget
Default duration In minutes; used by the calendar for slot calculation
Buffer/cleanup time Non-bookable time reserved after the service
Skill required Which staff skill is needed to perform this service
Resource required Which resource type (room, chair, equipment) is needed
Tax rate GST or applicable tax, linked to the brand's tax configuration
Active / inactive Whether it appears in booking and checkout

Service Variants

Variants allow price and duration to differ based on hair length, complexity, or other factors without creating separate services. Example: "Haircut — Short / Medium / Long" with different prices and durations.

When a front-desk staff books a service with variants, they select the variant, and the price and duration are resolved from that.

Add-ons

Add-ons are optional extras attached to a service at booking or checkout (e.g. "Glossing Treatment" added to a colour service). Each add-on has its own:

  • Price and duration (added to the parent service)
  • Skill and resource requirements (may differ from the parent service)
  • Whether it appears on the booking widget for self-booking

Resources

Physical resources are shared, bookable assets:

Resource type Examples
Room Colour room, treatment room, waxing room
Chair Styling chair, shampoo chair
Equipment Steamer, UV lamp, laser device
Station Nail station, threading station

Resources are defined per location. A service can require a specific resource type or a specific named resource. The scheduling engine prevents two overlapping appointments from using the same resource.

Resources have:

  • Availability windows (when they are bookable)
  • Maintenance/out-of-service blocks (prevent booking during downtime)

Pricing

Base Pricing

Each service (or variant) has a base price. Prices are brand-level defaults that can be overridden per location.

Price Lists

A price list is a named set of price overrides applied to a client or group. Use cases:

  • VIP pricing
  • Employee pricing
  • Loyalty tier discounts
  • Seasonal or promotional pricing

Pricing Rules

Dynamic pricing rules automatically adjust prices based on conditions:

  • Time-based: off-peak discounts, weekend surcharges
  • Staff-based: senior stylist vs junior stylist pricing
  • Demand-based: busy period pricing
  • Segment-based: loyalty tier pricing

Rules are evaluated at checkout and can be stacked with explicit overrides.

Service Bundles and Combos

Bundles combine multiple services at a package price (e.g. "Bride Package: Hairdo + Makeup + Nails"). The bundle price is fixed; individual services within it are booked and delivered separately.

Combos are linked services that are booked together with a combined duration and price. They appear as a single offering in the booking widget.

Staff Skills and Service Assignment

Each service defines a required skill (e.g. "Colourist", "Nail Technician"). Staff members are assigned skills in their profiles. The scheduling engine only offers staff for a service if they hold the required skill and are available in the requested time slot.

Catalog Configuration by Role

Action Who can do it
Create / edit services and categories org_owner, brand_manager
Set prices and variants org_owner, brand_manager
Configure add-ons org_owner, brand_manager
Override price at location level org_owner, brand_manager, location_manager (subset)
Manage resources org_owner, brand_manager, location_manager
Create price lists org_owner, brand_manager
Configure pricing rules org_owner, brand_manager
Activate / deactivate a service org_owner, brand_manager, location_manager

Key Data Entities

  • ServiceCategory — grouping for display
  • Service — the core deliverable
  • ServiceVariant — price/duration variants of a service
  • AddOn — optional extras
  • Resource — bookable physical asset
  • PriceList — named price overrides
  • PricingRule — dynamic pricing logic
  • ServiceBundle — fixed-price combined offerings