Below are the recommended steps to successfully configure booking, cancellation, and waitlist policies for Wix Bookings services. This recipe covers policy inheritance, service-specific overrides, and common policy configurations for different business models.
Wix Bookings policy configuration allows businesses to set rules for:
Policies are standalone entities managed by the Booking Policies API (/bookings/v1/booking-policies), not fields nested on the service:
default: true) that every new service references.bookingPolicy field; many services can share a policy.revision (fetched via query/get) inside the bookingPolicy object.Query existing policies (POST https://www.wixapis.com/bookings/v1/booking-policies/query):
For a site-wide change, pick the policy with "default": true. For a specific service, read the service first — its embedded bookingPolicy.id names the policy it uses. Save the policy's id and revision.
PATCH https://www.wixapis.com/bookings/v1/booking-policies/<POLICY_ID> with the current revision inside the bookingPolicy object and only the sub-policies you're changing. Example — cancellations allowed up to 24 hours before the session:
Field map (business rule → policy field):
| Business rule | Sub-policy fields |
|---|---|
| Cancellation deadline | cancellationPolicy.{enabled, limitLatestCancellation, latestCancellationInMinutes} |
| Reschedule deadline | reschedulePolicy.{enabled, limitLatestReschedule, latestRescheduleInMinutes} |
| How far ahead customers can book | limitEarlyBookingPolicy.{enabled, earliestBookingInMinutes} |
| Booking notice / last-minute cutoff | limitLateBookingPolicy.{enabled, latestBookingInMinutes} |
| Booking after session start (courses/classes) | bookAfterStartPolicy.enabled |
| Waitlist | waitlistPolicy.{enabled, capacity, reservationTimeInMinutes} |
| Participants per booking | participantsPolicy.{enabled, maxParticipantsPerBooking} |
To give one service different rules, create a new policy (POST https://www.wixapis.com/bookings/v1/booking-policies) and point the service at it by updating the service's bookingPolicy reference (see Update Service).
Read the service (GET /bookings/v2/services/<SERVICE_ID>) — the response embeds the full resolved bookingPolicy, so you can confirm the effective rules exactly as customers will experience them.
revision inside bookingPolicy; fetch it first, or the PATCH fails.enabled (and often a limit*) boolean — setting only the minutes value without enabling the limit has no effect.Policies not applying:
/bookings/v1/booking-policies/<id>, not fields on the service object (there is no service.policy field)service.bookingPolicy.id)revision was current — a stale revision fails the updateWaitlist not working:
waitlistPolicy.enabled is true and waitlistPolicy.capacity is setdefaultCapacity for CLASS/COURSE)Cancellation policies not enforced:
cancellationPolicy.enabled: true, limitLatestCancellation: true, and latestCancellationInMinutes — the minutes value alone has no effect without the booleansGroup booking limits not working:
participantsPolicy.enabled is true and participantsPolicy.maxParticipantsPerBooking is setPOST https://www.wixapis.com/bookings/v1/booking-policies/queryPATCH https://www.wixapis.com/bookings/v1/booking-policies/{bookingPolicy.id}POST https://www.wixapis.com/bookings/v1/booking-policiesPOST https://www.wixapis.com/bookings/v2/bulk/services/createPATCH https://www.wixapis.com/bookings/v2/services/<SERVICE_ID>POST https://www.wixapis.com/bookings/v2/services/queryLast updated: 18 September 2026