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.

Pool Booking, Step by Step​

Setting bookingMode, pricing, and payment on a resource type:

Pool booking mode in the admin resource type editor

What a customer sees — aggregate slot availability with a quantity selector:

Public pool booking availability grid

The payment step, showing the server-derived total for a multi-slot booking:

Public pool booking payment step