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