Skip to main content

Booking Groups

Booking groups let you manage multi-activity events as a single unit. A group coordinates multiple bookings across sites with shared payment, notifications, and lifecycle management.

Overview

Use booking groups when a customer wants to book multiple activities as one event — for example, a corporate team day with Hohtogolf and Laserareena at Redi, or a birthday party with climbing and a party room.

Creating a Booking Group

Navigate to Operations → Booking Groups in the admin panel.

From a Package

  1. Click Create Group
  2. Select From Package as the group type
  3. Choose a package from the dropdown
  4. Enter the party size (must be within the package's min/max range)
  5. Enter customer information (name, email, phone)
  6. Add internal notes if needed
  7. Click Create

The group is created in DRAFT status. On the detail page the package's activities are pre-seeded — one "Package activities" row per package item, with the site and product already fixed. Click Pick slot on each row to choose a time; once added, the row shows an Added badge.

Custom Group

  1. Click Create Group
  2. Select Custom as the group type
  3. Enter party size and customer information
  4. Click Create
  5. On the group detail page, click Add Activity
  6. In the picker dialog, choose site → product → time slot for the activity
  7. Confirm to link the activity to the group; repeat for all desired activities

Adding Activities to a Group

Activities are added in-page from the group detail page (not through the standalone new-booking wizard). Clicking Add Activity opens a slot-picker dialog:

  • Select the site, then the product, then a time slot from the embedded calendar
  • Confirming links a new DRAFT child booking to the group and reloads the group

Notes:

  • Activities can only be added while the group is in DRAFT — once holds are created the activity list is locked
  • For package groups, the pre-seeded rows open the dialog with site + product already filled and locked; you only pick the slot
  • The group's Create Holds action stays disabled until at least one activity is linked

Group Detail Page

The group detail page shows:

  • Header — group reference (GRP-YYYYMMDD-NNN), status badge, party size
  • Customer info — name, email, phone
  • Pricing — grand total, subtotal, tax breakdown
  • Hold expiry — countdown when holds are active
  • Activities table — each child booking with product, site, time, status
  • Internal notes — staff-only notes

Lifecycle Actions

Calculate Pricing (DRAFT)

Calculates the group total based on the package pricing or individual product prices. Updates all child bookings with their allocated amounts.

Create Holds (DRAFT → HOLD)

Creates holds for all activities in a single atomic operation:

  • All holds share the same expiry time
  • If any slot has insufficient capacity, the entire operation fails
  • No partial holds are created

Confirm (HOLD → CONFIRMED)

Confirms all activities with the selected payment method:

MethodBehavior
InvoiceAll bookings confirmed immediately, payment marked as PENDING
CompAll bookings confirmed with €0 total
StripePayment Intent created, bookings confirmed after webhook

A single confirmation email is sent listing all activities.

Deposits / partial payments: if the group is confirmed with a partial payment (a deposit, or a partial Paytrail capture), the captured amount is split across child bookings by their share of the group total (largest-remainder rounding, so the parts sum exactly). Children whose share is fully covered are marked paid; the rest are marked partially paid with the balance due later. A full payment marks every child paid.

Cancel All (→ CANCELED)

Cancels all active bookings in the group, releases capacity, and optionally adds a cancellation note to each booking.

Individual Cancellation

Click through to an individual booking from the activities table to cancel it independently. The group status updates to PARTIALLY_CANCELED.

Notifications

The system sends group-level emails rather than per-booking emails:

  • Confirmation — lists all activities, group reference, QR code, pricing summary
  • Cancellation — full group cancel or partial cancel with remaining activities highlighted
  • Reminder — sent before the earliest activity, lists all upcoming activities

On the booking groups list page, filter by:

  • Status — DRAFT, HOLD, CONFIRMED, PARTIALLY_CANCELED, CANCELED, COMPLETED
  • Groups are sorted by creation date (newest first)

Tips

  • Calculate pricing before creating holds — this ensures the group total is correct before the hold timer starts
  • Use INVOICE for corporate clients — invoicing is handled separately, so INVOICE marks the payment as pending
  • Check hold expiry — default is 15 minutes, packages can have custom hold durations
  • Add internal notes — useful for tracking event details, contact preferences, or special requirements