This article describes how Wix Bookings handles single-service bookings, from service selection through booking confirmation. The flow shows what happens automatically when using the Wix Bookings app, and which API methods are involved at each step for developers implementing custom booking experiences.
Note: On Wix sites, bookings can be managed by the Wix Bookings app.
The following diagram shows the full single-service booking flow.

The following steps describe the complete single-service booking flow from service discovery through booking confirmation and calendar integration.
Display available services to the customer for selection.
Action: Call Query Services to retrieve available services and display them to the customer.
Result: The customer selects a service. Save relevant service details including id, type, form.id, payment configuration, staffMemberIds, schedule.id, bookingPolicy.id, and locations.
Retrieve available service variants and display them to the customer for selection.
Action: Call Get Service Options And Variants By Service Id to retrieve variants for the service. If the service has variants, display them to the customer.
Result: The customer selects variants and the number of participants per variant.
Learn more about service variants and options.
Retrieve available service add-ons and display them to the customer for selection.
Action: Call List Add On Groups by Service ID to retrieve all addOns available for the service. If the service has add-ons, display them to the customer.
Result: The customer selects add-ons.
Learn more about add-ons.
Display available time slots to the customer for selection.
Action: Check availability depending on the selected service type:
serviceId, "bookable": true, fromLocalDate, toLocalDate, and the relevant timeZone as filters. If the customer has selected duration-based variants or add-ons, also specify the relevant customerChoices. This retrieves available slots based on staff and resource availability. Display the time slots to the customer.serviceId, timeZone, fromLocalDate, toLocalDate, and the number of openSpots the customer intends to book as filters to retrieve scheduled class sessions with available capacity.defaultCapacity. Retrieve all bookings for this service with Query Extended Bookings, specifying bookedEntity.item.schedule.serviceId as filter. Calculate the total number of participants already booked by adding up the attendance.numberOfAttendees from all extended bookings. Then, subtract this total from the service's defaultCapacity to determine the number of remaining spots. Ensure the intended number of participants doesn't exceed the remaining places.Result: The customer selects their preferred available time slot or course.
Display the booking form to the customer and collect their information.
Action: Call Get Form Summary with the booking form ID from the selected service. Display the retrieved booking form to the customer.
Result: The customer enters their contact details, number of participants, and any service-specific requirements into the booking form. Collect form information as a JSON object using the field names from the form schema in preparation for the booking creation. Learn more about how Wix Bookings integrates with Wix Forms.
Validate the selected time slot to ensure it's still available before creating the booking.
Action: Revalidate service availability depending on the selected service type:
localStartDate and localEndDate to verify the specific slot is still open.eventId to revalidate availability for the selected class event.Possible results:
Create a booking with the selected service, time slot, and customer information.
Action: Call Create Booking with the selected service and form data. For appointments and class events, also specify the selected slot. If the customer has selected a variant, specify all selected participantsChoices.serviceChoices. If the customer has selected add-ons, specify their IDs in bookedAddOns.id.
Result:
"status": "CREATED" and isn't visible in the booking calendar. Save the booking ID.formSubmissionId on the booking.Learn more about how you can retrieve submitted booking forms.
Wix Bookings automatically checks if the business has set up custom pricing via the Pricing service plugin.
Action: If the business uses custom pricing logic, Wix Bookings calls Calculate Price to retrieve the custom pricing from the service plugin implementation.
Result: The service plugin implementor returns the custom price for the booking.
Create a checkout to initiate the eCommerce purchase flow for the booking.
Action: Call Create Checkout, specifying the Wix Bookings business solution app ID as catalogReference.appId and the booking ID as catalogReference.catalogItemId. Save the checkout ID.
Result: Checkout created.
Alternatively, you can also create a custom checkout. Learn more about handling payments with a custom checkout.
Redirect the customer to the checkout page so they complete the eCommerce purchase flow.
Action: Call Get Checkout URL to generate the checkout page URL and redirect the customer.
Result: The customer completes the purchase. Wix eCommerce automatically creates an order and charges the customer.
After the customer completes their purchase, Wix Bookings finalizes the booking. Once the Order Approved event triggers, Wix Bookings automatically calls Confirm Or Decline Booking. The resulting booking status depends on the service's approval configuration and current availability.
Action: Listen to the Booking Confirmed, Booking Declined, and Booking Marked As Pending events to get notified when the booking status changes.
Automatic approval flow:
Wix Bookings validates availability:
CONFIRMED and appears in the booking calendar.DECLINED and the customer is notified.CONFIRMED with doubleBooked set to true. The business receives a notification to resolve the conflict. Learn more about handling double booking conflicts.Manual approval flow:
Wix Bookings updates booking status to PENDING. The business receives a notification to review the request:
CONFIRMED and the booking appears in the calendar.DECLINED and the customer is notified.After implementing this flow, customers can discover services, select time slots, complete booking forms, and receive confirmation notifications for their bookings. Wix users can manage bookings through the Booking calendar, while customers can view and manage their bookings through the members area.