Skip to main content
Was this helpful?

Pool Booking

Pool booking is the enterprise reservation mode for services where the customer cares about getting enough matching inventory, not a specific named resource. Typical examples are lanes, tables, treatment rooms, rental kits, or parking spaces.

PrimeCal keeps the configuration on the resource type, then allocates the first available concrete resources when the reservation is created.

Time to complete: 10-15 minutes
Difficulty: Intermediate

When To Use Pool Booking

Use pool booking when all of the following are true:

  • the service is sold as a category, not as one named item
  • several concrete resources can satisfy the same booking
  • staff want one service definition, one pricing rule, and automatic allocation
  • the public booking route should show aggregate availability such as 2 spots remaining

Keep the legacy resource-token route for single-resource links only. Multi-item pool requests belong on the organisation booking route, for example /book/acme-spa.

Choose The Right bookingMode

PrimeCal stores booking behavior on resourceType.bookingMode.

ModeWhat it meansBest for
SINGLE_RESOURCEEvery reservation must stay on one concrete resource.Named rooms, courts, desks, or staff appointments.
POOLThe customer books the service, and PrimeCal allocates the first available matching resources.Tables, lanes, rental kits, or any interchangeable inventory.
BOTHStaff or public clients can either pick a specific resource or request any available resources from the pool.Mixed workflows where named resources matter sometimes, but not always.

For a pool-style public journey, pair POOL or BOTH with the organisation-scoped booking page and publish more than one active resource of the same type.

Admin Setup Checklist

  1. Open the active organisation's reservations workspace.
  2. Create or edit the resource type.
  3. Set bookingMode to POOL or BOTH.
  4. Add the concrete resources that belong to that pool.
  5. Publish the organisation booking page instead of sharing per-resource token links.
  6. If the service is paid, enable pricing on the same resource type.

Pricing Mathematics

Pool booking does not create a separate pricing table. PrimeCal still prices the reservation from the resource type.

The current quote formula is:

quotedTotalAmount = priceAmount * assignedResourceCount * durationHours

Notes:

  • priceAmount is stored in minor currency units.
  • assignedResourceCount is the number of concrete resources PrimeCal actually allocates from the pool.
  • durationHours is derived from endTime - startTime.
  • rounding uses deterministic banker-style half-even rounding in the pricing service.

Example:

  • priceAmount = 12500 (125.00)
  • assignedResourceCount = 2
  • duration = 1.5 hours

Result:

  • quotedTotalAmount = 37500

The same quote snapshot is then stored on the reservation so later UI, Stripe, and audit flows all read the same amount.

Payment Behavior

Pool booking and paid booking work together:

  • if pricingEnabled is off, PrimeCal stores zero-value quotes
  • if pricingEnabled is on, PrimeCal stores quote fields on the reservation
  • if paymentRequired is also on, the reservation stays in pending_payment until Stripe confirms success through the webhook flow

For the broader payment journey, continue with Paid Bookings.

Screenshot Targets

Use these exact placeholder paths when you refresh the docs set:

StateFilePurpose
Pool booking mode in admin editordocs/assets/user-guide/enterprise-reservation-system/admin-resource-type-booking-mode-pool.pngShow bookingMode, pricing, and payment controls on one resource type.
Public pool availability griddocs/assets/user-guide/enterprise-reservation-system/customer-pool-booking-availability-grid.pngShow aggregate slot availability with the quantity selector visible.
Public pool payment stepdocs/assets/user-guide/enterprise-reservation-system/customer-pool-booking-payment-step.pngShow the server-derived total after a multi-resource pool selection.

The local automation helper for these placeholders is scripts/docs/capture-pool-booking-docs.cjs.

Admin Pool Configuration Placeholder

Pool booking mode in the admin resource type editor

Public Pool Availability Placeholder

Public pool booking availability grid

Public Pool Payment Placeholder

Public pool booking payment step