Skip to main content

Catalog Management

The Catalog section is where you configure all the products, resources, and settings that customers can book. This comprehensive guide covers managing products, variants, resources, add-ons, schedules, labels, and participant types.

Overview

The catalog is the foundation of your booking system. Before customers can book anything, you need to configure:

  1. Sites: Physical locations where activities take place
  2. Products: Bookable activities or services
  3. Variants: Different configurations of products (pricing, duration, resources)
  4. Resources: Physical items needed for bookings (rooms, equipment, staff, items)
  5. Add-ons: Optional extras customers can add to bookings
  6. Schedules: When products are available for booking
  7. Labels: Special conditions or restrictions for time slots
  8. Participant Types: Age groups or categories for pricing

Sites

Sites represent physical venues or locations where your activities take place.

Creating a Site

Required Information:

  • Site Name: Display name for the site
  • Timezone: IANA timezone (e.g., "Europe/Helsinki")
  • Address (optional): Physical address
  • Contact Information (optional): Phone, email

Site Configuration:

  • Each site has its own timezone setting
  • Sites can have multiple products
  • Each site operates independently
  • Multi-site businesses can manage all sites from one account

Managing Sites

Common Operations:

  • Create new site locations
  • Edit site details
  • Configure site-specific settings
  • Deactivate sites (preserves history)

Site Settings:

  • Default business hours
  • Holiday calendars
  • Site-specific policies
  • Resource allocations
  • Google Tag Manager container ID (for analytics tracking)

Google Tag Manager Integration

Each site can have its own GTM container ID for analytics and conversion tracking. This allows different physical locations to use separate GTM configurations.

Setting up GTM:

  1. Create a GTM container at tagmanager.google.com
  2. Copy the container ID (format: GTM-XXXXXXX)
  3. Update the site via the Admin API:
    PATCH /api/v1/admin/sites/:siteId
    { "gtmContainerId": "GTM-XXXXXXX" }
  4. The GTM container will automatically load on customer-facing booking pages for that site

How it works:

  • The GTM script loads on product detail, booking, and checkout pages
  • All booking funnel events (slot selected, booking started, payment completed, etc.) are automatically pushed to the GTM dataLayer
  • Configure triggers and tags within the GTM web interface to route events to Google Analytics, Meta Pixel, or other marketing tools
  • Set gtmContainerId to an empty string to remove GTM from a site

Key dataLayer events:

EventDescription
view_product_detailCustomer views a product page
view_availabilityCustomer opens the availability calendar
select_slotCustomer selects a time slot
start_bookingBooking hold created
initiate_paymentPayment process started
complete_bookingPayment completed successfully
booking_confirmedBooking fully confirmed

Products

Products are the main bookable activities or services you offer.

Creating a Product

Step 1: Basic Information

  • Product Name: Name displayed to customers
  • Description: Detailed description of the activity
  • Duration: How long the activity lasts (in minutes)
  • Status: Active or inactive

Step 2: Capacity Settings

  • Minimum Party Size: Smallest group that can book
  • Maximum Party Size: Largest group that can book
  • Base Capacity Rules: Default capacity configuration
  • Capacity Pool: If using shared capacity pools

Step 3: Resource Requirements

  • Required Resources: Resources that must be allocated
  • Resource Sequence: Order and timing of resource use
  • Optional Resources: Resources that can be added optionally

Step 4: Policies

  • Booking Policy: Auto-confirm or manual confirmation
  • Cancellation Policy: Rules for cancellations and refunds
  • Reschedule Policy: Rules for changing booking times
  • Payment Policy: When payment is required

Step 5: Visibility

  • Public Booking: Available to customers
  • Admin Panel: Visible in admin interface
  • API Access: Available via API
  • Mobile App: Available in mobile app
  • Hidden: Completely hidden from customers

Step 6: Product Images

  • Image Gallery: Upload multiple images for the product
  • Cover Image: First image (sort order 0) is used as the cover/thumbnail
  • Alt Text: Required for each image (WCAG 2.1 AA accessibility compliance)
  • Caption (optional): Additional description for the image
  • Drag & Drop Reorder: Rearrange images to set display order

Images are stored securely in Cloudinary with tenant-based folder isolation.

Step 7: Slot Generation

Configure how time slots are generated for this product:

  • Slot Policy: interval (regular spacing, default) or fixed (predefined times)
  • Slot Interval (interval policy): Minutes between slot starts (default: 30)
  • Fixed Slot Times (fixed policy): List of HH:mm start times
  • Setup Time: Buffer minutes before each slot (default: 0)
  • Cleanup Time: Buffer minutes after each slot (default: 0)

See Slot Generation for detailed configuration and examples.

Step 8: Advanced Settings

  • Lead Time: Minimum advance booking time
  • Payment on Arrival: Allow PoA bookings
  • Sequence Configuration: Complex resource sequences

Product Configuration Options

Duration:

  • Fixed duration (e.g., 60 minutes)
  • Duration per participant (calculated)
  • Variable duration (based on variant)

Capacity:

  • Fixed capacity per slot
  • Capacity based on resources
  • Dynamic capacity (based on resource availability)

Visibility Settings:

  • Hide from public booking (maintenance mode)
  • Schedule availability (available_from, available_until)
  • Site-specific visibility

Product Status

Active: Product is available for booking Inactive: Product is hidden but not deleted Draft: Product is being configured (not yet available)

Deposits & Partial Payments

A product can require a deposit (partial booking fee) to confirm, with the balance collected later. Configure this in the Pricing tab of the product form via the Deposit Configuration editor.

Enabling Deposits:

  1. Open the product's Pricing tab
  2. Toggle Requires deposit on
  3. Configure the deposit:
FieldOptionsDescription
Typepercentage or fixedWhether the deposit is a percentage of the total or a fixed money amount
ValuenumberThe percentage (0–100) or the fixed amount
Basisgrand total / subtotalWhat the percentage is calculated against
Offsethours before the eventWhen the outstanding balance becomes due (drives the balance-due timestamp)
Balance due modeonline_before_event or on_arrivalHow the remaining balance is settled (see below). Defaults to online_before_event

How It Behaves:

  • At checkout the customer sees the deposit amount and the remaining balance (e.g. "Pay deposit €36.00 / Pay the rest €84.00 at arrival")
  • On payment the booking is confirmed in a partially paid state, recording the actual amount captured and the balance-due time
  • Works across Stripe, Paytrail, and group bookings — group deposits split the captured amount across child bookings by their share of the total
  • A deposit-later mode lets a product confirm now and collect the full amount later (no upfront deposit)

Balance Due Mode:

Choose where the outstanding balance is settled after the deposit is paid:

ModeBehavior
online_before_event(Default.) The balance is chased online before the event — the customer gets an emailed payment link and re-pays through the same gateway. Preserves the legacy behavior for existing products.
on_arrivalThe balance is collected in person at arrival through the admin arrival / mark-paid surfaces. No online payment-link reminder is sent, and the confirmation/reminder copy frames the balance as due at arrival. Best for parties and packages where the final amount (attendee count, day-of add-ons) isn't known until the guest shows up.

When staff confirm arrival for a partially-paid deposit booking, the system now collects only the outstanding balance (grand total − amount already paid) — never the full total — and re-derives the payment status (part_paidpaid) via the shared deposit-aware helper. This holds regardless of balance-due mode.

Balance Reminders:

  • For online_before_event deposits, a background scheduler emails a secure payment link to customers with an outstanding balance as the due time approaches
  • on_arrival deposits are excluded from this reminder poller — their balance is settled at the venue, so no online payment link is sent
  • It reminds only — it never auto-charges. See the Notifications guide for reminder delivery
  • Reminders are deduplicated (a customer is reminded once per booking)

Validation: clearing the config removes the deposit requirement; a percentage over 100, a negative value, or a negative offset is rejected. Products seeded without a full config are tolerated and behave as "no deposit."

Variants

Variants allow you to offer different configurations of the same product.

When to Use Variants

Common Use Cases:

  • Different durations (Standard 60min, Extended 90min)
  • Different pricing tiers (Basic, Premium, VIP)
  • Different resource requirements
  • Different participant type pricing
  • Seasonal variations

Creating a Variant

Required Information:

  • Variant Name: Descriptive name (e.g., "Standard Session", "Premium Package")
  • Description: What makes this variant different
  • Price Ruleset: Link to pricing configuration
  • Labels: Special labels for this variant

Variant Configuration:

  • Each variant can have different pricing
  • Variants share the same base product
  • Each variant can require different resources
  • Variants can have different participant requirements

Variant Examples

Example: Laser Tag

  • Variant 1: "Standard Session" (60 min, €20/person)
  • Variant 2: "Extended Session" (90 min, €30/person)
  • Variant 3: "Premium Package" (60 min + party room, €50/person)

Example: Cooking Workshop

  • Variant 1: "Beginner Class" (2 hours, basic ingredients)
  • Variant 2: "Advanced Class" (3 hours, premium ingredients)
  • Variant 3: "Kids Class" (1.5 hours, child-friendly)

Resources

Resources are physical entities that must be allocated for bookings.

Resource Types

Rooms:

  • Physical spaces (party rooms, classrooms, halls)
  • Usually have capacity limits
  • Often require setup/cleanup time
  • Examples: "Party Room A", "Conference Hall"

Equipment:

  • Items needed for activities
  • Can be shared or exclusive
  • May have availability windows
  • Examples: "Laser Tag Set 1", "Cooking Station 2"

Staff:

  • Personnel required for activities
  • Skills/qualifications tracked
  • Availability schedules
  • Examples: "Instructor - Sarah", "Safety Supervisor"

Vehicles:

  • Watercraft, land vehicles, or other transport
  • Often have per-unit capacity
  • May require operator/driver (link to Staff)
  • Examples: "Kayak #3", "Tour Bus", "Pontoon Boat"

Other:

  • Consumables, inventory, or anything that doesn't fit the above
  • Stock tracking (if enabled)
  • Per-participant usage
  • Examples: "Safety Waiver", "Equipment Cleaning Kit"

Creating Resources

Required Information:

  • Resource Name: Descriptive name
  • Resource Type: ROOM, EQUIPMENT, VEHICLE, STAFF, or OTHER
  • Site: Which site this resource belongs to
  • Base Capacity: How many units/people it supports
  • Shared Mode: EXCLUSIVE, SHARED, or POOLED

Shared Modes Explained:

EXCLUSIVE:

  • Resource can only be used by one booking at a time
  • Example: A private party room
  • When booked, resource is locked for that time

SHARED:

  • Resource can be used by multiple bookings simultaneously
  • Example: Common equipment used by multiple groups
  • Capacity may be divided across bookings

POOLED:

  • Resource is part of a capacity pool
  • Bookings draw from pool capacity
  • Example: General admission slots

Resource Sequences

Some products require multiple resources in a specific order.

Sequence Example:

1. Room (required, 60 min) - Setup time
2. Equipment (required, 60 min) - Activity time
3. Staff (required, 60 min) - Supervision time
4. Cleaning Item (optional, 15 min) - After activity

Configuring Sequences:

  • Define order of resource usage
  • Set durations for each resource
  • Specify timing (simultaneous or sequential)
  • Set optional vs required resources

Resource Groups

Resource groups allow you to organize resources with shared settings and policies.

Understanding Resource Groups

What are Resource Groups?

  • Logical grouping of related resources
  • Shared default settings and policies
  • Simplified bulk operations
  • Policy inheritance with override support

Use Cases:

  • Group VIP rooms with premium settings
  • Group equipment by type
  • Apply common policies across resources
  • Manage staff by department

Creating Resource Groups

Required Information:

  • Group Name: Descriptive name (e.g., "VIP Rooms", "Outdoor Equipment")
  • Site (optional): Site-specific group
  • Description: What this group contains

Default Settings:

  • Default Shared Mode: EXCLUSIVE, SHARED, or POOLED
  • Default Base Capacity: Default capacity for new resources
  • Default Resource Type: ROOM, EQUIPMENT, VEHICLE, STAFF, or OTHER

Group Policies:

Resource groups can define policies that apply to all resources in the group:

{
"bookingPolicy": {
"requireApproval": true,
"maxAdvanceBookingDays": 90,
"autoConfirm": false
},
"maintenancePolicy": {
"autoNotify": true,
"defaultNoticeDays": 7
},
"pricingPolicy": {
"allowOverride": true,
"minPriceMultiplier": 0.8
},
"availabilityPolicy": {
"bufferMinutes": 15,
"cleanupMinutes": 10
}
}

Assigning Resources to Groups

Single Assignment:

  • Select resource
  • Choose group from dropdown
  • Resource inherits group settings

Bulk Assignment:

  • Select multiple resources
  • Assign all to group at once
  • Useful for initial setup

Policy Inheritance

How Policies Work:

  1. Group defines default policies
  2. Resources inherit group policies
  3. Resource can override specific policies
  4. Effective policy = group + resource overrides

Viewing Effective Policies:

  • API returns merged policies for resources
  • Clear visibility of inherited vs. overridden settings
  • Useful for troubleshooting

Resource Group Examples

Example: VIP Room Group

Group: VIP Rooms
├── Default Capacity: 10 people
├── Default Shared Mode: EXCLUSIVE
├── Policies:
│ ├── Booking requires approval
│ ├── 15 min buffer between bookings
│ └── Allow price overrides
└── Resources:
├── VIP Room A (inherits all)
├── VIP Room B (inherits all)
└── VIP Room C (capacity override: 20)

Example: Equipment Group

Group: Laser Tag Equipment
├── Default Capacity: 1
├── Default Shared Mode: SHARED
├── Policies:
│ ├── 10 min cleanup time
│ └── Auto-notify on maintenance
└── Resources:
├── Laser Gun Set 1
├── Laser Gun Set 2
└── Vest Set 1

Staff Skills

Staff resources can have skills and certifications tracked for skill-based scheduling.

Understanding Staff Skills

What are Skills?

  • Certifications or qualifications
  • Required for certain activities
  • Can have expiration dates
  • Enable skill-based matching

Use Cases:

  • CPR certification for activities
  • Language skills for tours
  • Equipment operation licenses
  • Safety certifications

Creating Skills

Required Information:

  • Skill Name: Display name (e.g., "CPR Certified", "Spanish Fluent")
  • Description: What this skill represents
  • Category (optional): Skill category for organization
  • Is Certification: Whether this is a formal certification
  • Requires Expiry: Whether skill expires

Skill Configuration:

{
"name": "CPR Certified",
"description": "Current CPR/AED certification",
"category": "SAFETY",
"isCertification": true,
"requiresExpiry": true
}

Assigning Skills to Staff

Assigning a Skill:

  • Select staff resource
  • Add skill with optional details:
    • Proficiency Level: 1-5 rating
    • Certified At: Date of certification
    • Expires At: Expiration date (if applicable)
    • Certificate Number: Reference number

Tracking Expiration:

  • System tracks skill expiration dates
  • Warnings for upcoming expirations
  • Expired skills excluded from matching
  • Reports on expiring certifications

Product Skill Requirements

Requiring Skills for Products:

Products can specify required skills:

  • Skill: Which skill is required
  • Minimum Level: Required proficiency (1-5)
  • Is Mandatory: Whether booking fails without skill

Example Requirements:

Product: Advanced Climbing Session
Required Skills:
├── Climbing Instructor (level 3+, mandatory)
├── First Aid Certified (level 1+, mandatory)
└── Rescue Training (level 2+, optional)

Skill-Based Availability

How Skill Matching Works:

  1. Customer selects product
  2. System checks product skill requirements
  3. Only staff with required skills shown available
  4. Expired skills excluded automatically

Availability Filtering:

  • Staff without required skills hidden
  • Skill level must meet minimum
  • Mandatory skills must be present
  • Optional skills used for ranking

Skill Management Best Practices

  1. Track Expirations: Set up expiry monitoring
  2. Document Requirements: Clear skill descriptions
  3. Regular Audits: Verify staff certifications
  4. Training Planning: Use reports to identify gaps

Add-ons

Add-ons are optional extras customers can add to their bookings. Each add-on has a type (what it is) and a mode (how the customer selects it).

Add-on Types (addonType)

The type categorizes the add-on and affects how the system handles it.

TypeDescriptionExamples
itemA physical or consumable productT-shirt, snack pack, souvenir photo
serviceAn additional service provided by staffProfessional photography, guided tour
upgradeAn enhancement to the base activityPremium equipment, VIP experience
resourceA time-based bookable resource with its own availability and capacity. Uses the Resource Add-on Configuration systemParty room, VIP lounge, equipment rental

Selection Modes (mode)

The mode controls how the customer selects the add-on in the booking flow.

ModeUI ControlQuantity Behaviour
yesnoCheckbox (on/off)Always 1 when selected
free_qtyNumeric inputCustomer enters any quantity (subject to min/max constraints via availabilityRules)
per_participantAutomaticQuantity is locked to the booking's party size

Price Types (priceType)

The price type determines how the add-on price is calculated.

Price TypeFormulaExample
fixedtotal = priceAmount × quantity€50 party room (quantity 1) = €50
per_persontotal = priceAmount × partySize€10/person upgrade for 4 people = €40
percentagetotal = bookingSubtotal × (priceAmount / 100)15% of €200 booking = €30

Creating Add-ons

Required Information:

  • Add-on Name: Display name
  • Description: What the add-on includes
  • Type (addonType): item, service, upgrade, or resource
  • Mode: yesno, per_participant, or free_qty
  • Price Type (priceType): fixed, per_person, or percentage
  • Price Amount: The unit price or percentage value
  • Product Association: Which products offer this add-on
  • Stock (optional): Inventory tracking

Availability Rules (optional):

FieldTypeDescription
minQuantityintegerMinimum quantity per booking
maxQuantityintegerMaximum quantity per booking
defaultQuantityintegerPre-filled default
quantityStepintegerMust be ordered in multiples of this value
timeRestrictions.availableFromstringAvailable from time (e.g. "09:00")
timeRestrictions.availableUntilstringAvailable until time (e.g. "17:00")
timeRestrictions.daysOfWeekinteger[]Available on these days (0=Sun, 1=Mon, …)

Add-on Images (optional):

  • Image URL: URL to an image representing the add-on
  • Image Alt Text: Description for accessibility (WCAG 2.1 AA compliance)

Images help customers visualize add-ons during booking. The image appears alongside the add-on name and description in the booking flow.

Add-on Configuration:

  • Link to products that can include this add-on
  • Set pricing rules
  • Configure availability
  • Set stock limits (if using inventory)

Add-on Examples

Party Room Add-on:

  • Type: resource, Mode: yesno, Price type: fixed
  • Price: €50
  • Duration: 2 hours
  • Available for: All laser tag products

Equipment Upgrade Add-on:

  • Type: upgrade, Mode: per_participant, Price type: per_person
  • Price: €10 per person
  • Description: Premium equipment set
  • Available for: Adventure activities

Souvenir Photo Add-on:

  • Type: item, Mode: free_qty, Price type: fixed
  • Price: €15 per photo
  • Max quantity: 5 per booking
  • Available for: All products

Resource-Based Add-ons

Resource-based add-ons are a special type of add-on that allows customers to book time-based resources (like party rooms, VIP lounges, or equipment) alongside their primary activity.

How Resource Add-ons Differ from Regular Add-ons

AspectRegular Add-onsResource-Based Add-ons
InventoryStock count (integer)Time-based availability
AvailabilityStock > 0Resource free during time window
DurationN/A (instant item)Specific time window (e.g., 2 hours)
CapacityN/AMax persons per resource
SchedulingN/AMust be contiguous with activity

Use Cases

Resource-based add-ons are ideal for:

  • Party Rooms: Book a private room before or after the main activity
  • VIP Lounges: Exclusive lounge access with selectable duration
  • Equipment Rentals: GoPro cameras, premium gear for activity duration
  • Extended Facilities: Meeting rooms, catering areas

Creating a Resource Add-on Configuration

Step 1: Create the Add-on

First, create an add-on with type "RESOURCE":

  • Add-on Name: Display name (e.g., "Party Room")
  • Type: Set to RESOURCE
  • Description: What the resource includes

Step 2: Link to a Resource

Create a Resource Add-on Configuration that links the add-on to a physical resource:

Required Information:

  • Resource: Which physical resource to book
  • Add-on: The add-on being configured
  • Duration Mode: How duration is determined
  • Pricing Mode: How pricing is calculated
  • Timing Options: When the add-on can be booked

Duration Modes

FIXED Duration:

  • Admin sets a single duration (e.g., 2 hours)
  • Customer cannot change duration
  • Best for: Party rooms with standard booking length
Duration Mode: FIXED
Fixed Duration: 120 minutes

SELECTABLE Duration:

  • Admin provides list of options (e.g., 60, 90, 120 minutes)
  • Customer chooses from available options
  • Best for: VIP lounges with flexible booking
Duration Mode: SELECTABLE
Selectable Durations: [60, 90, 120]

CUSTOM Duration:

  • Customer enters duration within min/max range
  • Optional step increment (e.g., 15-minute intervals)
  • Best for: Equipment rentals by the hour
Duration Mode: CUSTOM
Minimum: 30 minutes
Maximum: 240 minutes
Step: 15 minutes

Pricing Modes

FLAT Pricing:

  • Fixed price regardless of duration
  • Best for: Party room with fixed booking fee
Pricing Mode: FLAT
Flat Price: €75.00

PER_HOUR Pricing:

  • Price multiplied by hours
  • Handles fractional hours
  • Best for: VIP lounges charged hourly
Pricing Mode: PER_HOUR
Hourly Rate: €50.00

PER_PERSON Pricing:

  • Price multiplied by party size
  • Best for: Per-participant facility fees
Pricing Mode: PER_PERSON
Per Person Rate: €10.00

PER_PERSON_HOUR Pricing:

  • Combined person and time pricing
  • Best for: Equipment rental per person per hour
Pricing Mode: PER_PERSON_HOUR
Per Person Hour Rate: €5.00

Timing Options

Configure when the resource can be booked relative to the main activity:

Allow Before:

  • Resource can be booked before the activity starts
  • Example: Pre-activity lounge access

Allow After:

  • Resource can be booked after the activity ends
  • Example: Post-activity party room

Allow During:

  • Resource can be booked overlapping with activity
  • Example: Equipment rental during activity

Buffer Times:

  • Buffer Before: Setup time needed before resource use
  • Buffer After: Cleanup time needed after resource use
  • Prevents back-to-back bookings if needed
Allow Before: Yes
Allow After: Yes
Allow During: No
Buffer Before: 15 minutes
Buffer After: 15 minutes

Capacity Settings

Max Capacity:

Override the resource's default capacity for this add-on configuration:

  • If not set, uses resource's base capacity
  • Useful for different booking types (e.g., party vs. meeting)
Resource Base Capacity: 30 people
Add-on Max Capacity: 20 people (override for parties)

Resource Add-on Examples

Example 1: Party Room (Fixed 2-Hour)

Resource: Party Room A
Add-on: Party Room Package
Duration Mode: FIXED (120 minutes)
Pricing Mode: FLAT (€75.00)
Timing: After activity only
Buffer: 15 min before, 15 min after
Max Capacity: 20 people

Example 2: VIP Lounge (Selectable Duration)

Resource: VIP Lounge
Add-on: VIP Upgrade
Duration Mode: SELECTABLE (60, 90, 120 minutes)
Pricing Mode: PER_HOUR (€50.00/hour)
Timing: Before, during, or after activity
Buffer: None
Max Capacity: 10 people

Example 3: GoPro Rental (Activity Duration)

Resource: GoPro Camera Set
Add-on: GoPro Rental
Duration Mode: FIXED (matches activity)
Pricing Mode: FLAT (€25.00)
Timing: During activity only
Buffer: None
Max Capacity: 1 per booking

Customer Booking Flow

When a product has resource add-ons available:

  1. Selection: Customer sees available resource add-ons during checkout
  2. Time Window: Customer selects a time window (before/after/during activity)
  3. Availability Check: System verifies resource is available
  4. Pricing: Price calculated based on duration and pricing mode
  5. Confirmation: Resource allocation created alongside main booking

Post-Booking Management

Customers can modify resource add-ons after booking (before the activity date):

  • Add: Select new resource add-ons
  • Remove: Cancel unwanted resource add-ons
  • Change Time: Move to a different time window

Price differences are calculated automatically.

Conflict Resolution

If a resource becomes unavailable between hold and confirmation:

  1. Detection: System identifies the conflict
  2. Notification: Customer is informed of the issue
  3. Options:
    • Select an alternative time window
    • Proceed without the resource add-on
    • Cancel and return to booking

Best Practices

  1. Set Appropriate Buffers: Allow time for setup/cleanup
  2. Clear Descriptions: Explain what's included
  3. Realistic Capacity: Don't oversell resource space
  4. Test Availability: Verify time windows appear correctly
  5. Consider Pricing: Match pricing to value delivered

Schedules

Schedules define when products are available for booking.

Schedule Types

Recurring Schedules:

  • Weekly patterns (e.g., Monday-Friday 10am-6pm)
  • Repeat indefinitely or for date range
  • Most common type of schedule

One-Time Overrides:

  • Specific date exceptions
  • Override regular schedule
  • Can extend or restrict hours

Blackout Windows:

  • Block out times for maintenance
  • Holidays and closures
  • System maintenance periods

Creating Schedules

Basic Schedule Configuration:

  • Scope: Site, Product, or Resource level
  • Day of Week: Which days (Sunday = 0, Saturday = 6)
  • Start Time: When availability begins
  • End Time: When availability ends
  • Timezone: Site's timezone

Recurrence Patterns:

  • Weekly: Every week on selected days
  • Daily: Every day
  • Custom: Specific pattern

Schedule Overrides:

  • Extend hours for special dates
  • Restrict hours for reduced operations
  • Close completely for holidays

Schedule Examples

Standard Business Hours:

Monday-Friday: 10:00 - 18:00
Saturday: 09:00 - 20:00
Sunday: Closed

Holiday Override:

December 24: 10:00 - 14:00 (early close)
December 25: Closed (holiday)
December 26: 12:00 - 18:00 (late open)

Labels

Labels are tags applied to time slots to indicate special conditions.

Label Types

Age Restrictions:

  • "Adults Only" (18+)
  • "Toddler Friendly" (suitable for toddlers)
  • "Teen Session" (13-17 years)

Skill Levels:

  • "Beginner Friendly"
  • "Intermediate"
  • "Advanced Only"

Special Conditions:

  • "Outdoor Only"
  • "Weather Dependent"
  • "Indoor Alternative Available"

Creating Labels

Required Information:

  • Label Code: Unique identifier (e.g., "adults_only")
  • Label Name: Display name
  • Site: Which site this label applies to
  • Rules: JSON rules for validation

Label Rules: Labels can enforce business rules:

{
"min_age": 18,
"max_age": null,
"requires_supervision": false
}

Applying Labels

Where Labels Can Be Applied:

  • Specific time slots
  • Schedule templates
  • Product variants
  • Resource availability windows

Label Validation:

  • System checks labels during booking
  • Prevents incompatible combinations
  • Example: "Adults Only" prevents child participants

Participant Types

Participant types allow different pricing for different age groups or categories.

Common Participant Types

Age-Based:

  • Adult (18+)
  • Child (under 18)
  • Senior (65+)
  • Toddler (under 3)

Category-Based:

  • Student
  • Member
  • Guest
  • Instructor

Creating Participant Types

Required Information:

  • Type Name: Display name
  • Description: Who this applies to
  • Age Range (optional): Min and max age
  • Pricing Rules: Link to pricing configuration

Participant Type Configuration:

  • Define age ranges if applicable
  • Set default pricing
  • Configure validation rules
  • Link to pricing rulesets

Using Participant Types

In Pricing:

  • Different prices per participant type
  • Child discounts
  • Senior discounts
  • Member pricing

In Bookings:

  • Customers specify participant breakdown
  • System calculates pricing automatically
  • Validation ensures correct categories

Catalog Best Practices

Organization Tips

  1. Naming Conventions: Use consistent naming

    • Products: "Activity Name"
    • Variants: "Activity Name - Variant"
    • Resources: "Type - Name" (e.g., "Room - A1")
  2. Hierarchical Structure: Organize logically

    • Group related products
    • Use consistent categorization
    • Tag resources appropriately
  3. Documentation: Add descriptions

    • Help customers understand products
    • Guide admin users
    • Document special requirements

Configuration Workflow

Recommended Order:

  1. Create sites
  2. Create resources
  3. Create products
  4. Create variants
  5. Configure schedules
  6. Set up pricing
  7. Configure add-ons
  8. Set up labels
  9. Test booking flow

Testing Checklist

After configuring catalog items:

  • Create test booking for each product
  • Verify resource allocation
  • Check pricing calculation
  • Test add-on functionality
  • Validate schedule availability
  • Test label restrictions
  • Verify capacity limits

Common Configuration Scenarios

Scenario 1: Simple Activity

Product: "Escape Room Experience"

  • Duration: 60 minutes
  • Party Size: 2-6 people
  • One variant: Standard pricing
  • Resources: One room, one game set
  • Schedule: Daily 10am-10pm

Scenario 2: Multi-Variant Activity

Product: "Cooking Workshop"

  • Variant 1: "Beginner" (2 hours, basic)
  • Variant 2: "Advanced" (3 hours, premium)
  • Variant 3: "Kids" (1.5 hours, child-friendly)
  • Resources: Kitchen stations, ingredients
  • Schedule: Weekends only

Scenario 3: Resource-Intensive Activity

Product: "Laser Tag Tournament"

  • Requires: Party room, equipment sets, staff, safety waivers
  • Resource sequence with timing
  • Capacity based on equipment availability
  • Add-ons: Party room extension, equipment upgrade
  • Schedule: Peak hours only

Troubleshooting

Products Not Showing Availability

  • Check product is active
  • Verify schedule is configured
  • Check visibility settings
  • Ensure resources are available
  • Verify date range in schedule

Resources Not Allocating

  • Check resource is active
  • Verify resource capacity
  • Check for conflicts
  • Review resource sequences
  • Check shared mode configuration

Pricing Not Calculating

  • Verify variant has price ruleset
  • Check participant types configured
  • Review pricing rules
  • Ensure currency matches
  • Check for promotion conflicts

Next Steps

  • Learn about Scheduling for detailed availability configuration
  • Explore Calendar for visual booking management
  • Review Reports to analyze product performance
  • Check Dashboard for operational overview