A fully formed booking with WooCommerce and WooCommerce Bookings consists of two pieces:
- A booking entry visible or editable on your website dashboard under Bookings > All Bookings.
- A corresponding order viewable or editable on your website dashboard under WooCommerce > Orders.
The relationship between bookings and orders is an important concept to understand in the context of managing bookings and transactions.
When a customer adds a booking product to their cart and checks out, it represents their intention to reserve a specific time slot or availability. The checkout process creates a booking entry in the system, capturing details such as the date, time, duration, and any additional requirements.
However, a booking alone does not complete the transaction. The shop manager also needs to create an order to confirm the customer’s reservation and finalize the process. The order represents the actual purchase or acquisition of the booked product or service.
The connection between bookings and orders is that a booking serves as a precursor to an order. Once a customer makes a booking, the system generates an order to formalize the transaction and complete the purchase. The association of the booking information with the corresponding order, creates a clear link between the reserved time slot and the confirmed purchase.
These two entities have independent statuses that are bidirectionally synchronized; order status changes can update booking status, and booking status changes can update order status.
Finding the WooCommerce order for a Booking
↑ Back to topYou can find the corresponding order of a booking in the following locations:
- On the list of Bookings under Bookings > All Bookings on the dashboard, in the “Order” column.
- On the Edit Booking screen for a specific booking, as a link under the Booking Details header.


For Bookings with the “In Cart” status, no corresponding order exists.
Finding the Booking for a WooCommerce order
↑ Back to topThe corresponding order links to the booking as the item purchased within the “Edit Order” screen.

For a booking to be considered paid, it is necessary for the payment associated with the linked order to be successfully processed.
Why do orders have a status of Processing and not Completed?
↑ Back to topOnce a customer pays for an order, WooCommerce only sets the status of the order to Completed if all products purchased in the order are both virtual and downloadable. If all the products in an order are physical and/or virtual without being downloadable, WooCommerce marks the order as Processing. This helps you manage the shipping of physical items.
Bookable products marked as virtual override the behavior of normal virtual products. As a result, when an order only contains a virtual bookable product, WooCommerce marks the order as Completed automatically, if the payment has gone through.
By contrast, when an order contains a bookable product that is not virtual, the system sets the order status to Processing.
If you need more control, you can use the Order Status Manager extension to manage the order statuses in more detail, regardless of product type.
Booking Statuses
↑ Back to top| Status | Internal Key | Description |
|---|---|---|
| In Cart | in-cart | Booking created when customer adds a bookable product to the cart. Holds the time slot. |
| Was In Cart | was-in-cart | Booking was removed from the cart by the customer (temporary state). |
| Unpaid | unpaid | Booking has been checked out but payment has not been received yet. |
| Pending Confirmation | pending-confirmation | Booking requires admin approval before the customer can pay. |
| Confirmed | confirmed | Admin has approved the booking. Customer can now proceed to pay. |
| Paid | paid | Payment has been received for this booking. |
| Complete | complete | The booking’s end date/time has passed. Automatically set by cron. |
| Cancelled | cancelled | The booking has been cancelled (by admin, customer, or due to order |
Note: These statuses occupy the time slot and count toward availability: in-cart, unpaid, pending-confirmation, confirmed, paid, complete
Checkout Flows
↑ Back to topWooCommerce Bookings has two different checkout flows depending on whether the product requires confirmation or not.
Standard (No Confirmation Required)
↑ Back to topThe customer selects a date/time, adds to cart, and pays using any available payment gateway. The booking is confirmed automatically upon payment.
Requires Confirmation
↑ Back to topWhen the product is configured with Requires Confirmation enabled. In this flow:
- All standard payment gateways are removed at checkout
- A special internal gateway (“Check Availability”) is used instead
- The customer cannot pay until the admin confirms the booking
- The order is created with a Pending status
- The booking enters
pending-confirmationstatus - Once the admin confirms, the customer receives a link to pay
Cancel unpaid confirmed bookings automatically with AutomateWoo
↑ Back to topWhen a bookable product requires confirmation, the admin can confirm the booking before the customer pays. If the customer does not return to complete payment, the booking can remain confirmed and the selected time slot stays unavailable for other customers.
To free that availability automatically, create an AutomateWoo workflow that cancels matching pending-payment orders after a set amount of time. Cancelling the order also cancels the linked booking, which releases the reserved slot.
- Set the trigger to Order Pending Payment.
- Enable Recheck status before run.
- Add a rule to confirm the order payment gateway is Check booking availability.
- Add an Order – Change Status action that changes the order status to Cancelled.
- Set the timing to Delayed, using the amount of time you want to wait before cancelling unpaid bookings.

Complete Status Flow
↑ Back to topPhase 1: Cart
- The customer selects Book Now.
- A booking is created with the
in-cartstatus. - If the booking remains inactive, a scheduled task removes it.
- If the customer proceeds to checkout, continue to Phase 2.
Phase 2: Checkout
- The customer arrives at checkout.
- Check whether the product requires confirmation.
- If it requires confirmation, continue to Phase 4.
- If it does not require confirmation, show the available payment gateways and the customer submits the order.
- The booking changes from
in-carttounpaid, and the order is set topending. - Continue to Phase 3.
Phase 3: Payment processing
The order is awaiting payment with the pending status. The outcome determines the next steps.
- Payment succeeds. The order changes from
pendingtoprocessing, or tocompletedfor virtual products. The booking changes fromunpaidtopaid. A reminder is scheduled for one day before the booking begins, and the completion task is scheduled for the booking end time. Continue to Phase 5. - Payment fails. The order is set to
failed. The booking remainsin-cartso the customer can retry payment. If the order is still failed after one hour, the booking changes tocancelled. - The customer abandons checkout. A scheduled cleanup task removes the booking.
Phase 4: Requires confirmation
When the booking product requires confirmation, this flow applies.
- The customer submits the order. Only the Check Availability gateway is available.
- The order is set to
pending, and the booking changes fromin-carttopending-confirmation. - The administrator receives a New Booking email and the customer receives a Pending Confirmation email.
- If the administrator confirms the booking, it changes to
confirmed. The customer receives a payment link. When payment succeeds, the order becomesprocessingorcompleted, and the booking becomespaid. Continue to Phase 5. - If the administrator rejects or cancels the booking, it changes to
cancelled. For a single-item order, the order also becomescancelled, and the customer receives a Booking Cancelled email.
Phase 5: Completion
- The booking is
paidorconfirmed. - One day before the booking starts, a scheduled task sends a reminder email.
- The booking end date and time pass.
- The
wc-booking-completescheduled task runs and changes the booking frompaidorconfirmedtocomplete.
Order Status to Booking Status Mapping
↑ Back to topWhen an order’s status is changed, here’s what happens to the linked booking(s):
| Order Status Changed | Booking Status Change |
|---|---|
 processing | in-cart/unpaid → paid |
completed | in-cart/unpaid → paid |
processing/completed → pending | paid → unpaid |
 cancelled | Any active status → cancelled |
 refunded | Any active status → cancelled |
 failed | paid → in-cart (revert for retry) |
Still failed after 1 hour | in-cart → cancelled |
Questions and support
↑ Back to topSomething missing from this documentation? Still have questions and need assistance?
- If you have a question about a specific extension or theme you’d like to purchase, contact us to get answers.
- If you already purchased this product and need some assistance, get in touch with a Happiness Engineer via our support page and select this product’s name from the Product dropdown.