Browse docs
How bookings become WooCommerce orders
One order per booking trip, what each order status means for the places, and the safety net for odd payment timings.
Every paid booking in Tempo is a real WooCommerce order. That's not plumbing trivia; it's why refunds, payment records and your accountant's export all behave like a normal online shop. This article is the reference for how the two systems talk.
Your site may use different words. Tempo lets you rename class, student and teacher under Settings → Branding & vocabulary; these docs use the defaults.
What an order looks like
One checkout produces one order, which can contain several bookings (a parent paying for three children at once). Each order line is named after the class, and carries visible Student, Package, Sessions and Included dates rows, so an order makes sense on the admin order screen and in the order emails without opening Tempo at all. Even £0 bookings (complimentary or fully credit-paid) get an order, so every booking has the same paper trail.
What each order status means
| Order status | What it means for the booking |
|---|---|
| Pending payment / On hold / Failed | Places stay held until the reservation expires. The member is told, with the exact time the hold runs out. A failed card doesn't release the places early; the family is usually one retry away from paying. |
| Processing / Completed | The bookings are confirmed. This is the normal happy path, and it's repeat-proof: a payment provider sending the same confirmation twice can never double-book, double-charge credit or double-email. |
| Cancelled | Bookings cancelled, places released. |
| Refunded | The order's remaining bookings are cancelled and any credit that was spent at checkout is returned, once. See Recording refunds for the proper refund flow. |
Skipping Processing for paid bookings
WooCommerce only marks an order Completed by itself when everything in it is a virtual download, so a paid booking order normally parks at Processing even though there's nothing left to fulfil. If that dangling status bothers your bookkeeping, switch on Tempo → Settings → Booking & checkout → Complete paid orders automatically (off by default): a successful gateway payment then lands the order straight on Completed, and the family receives WooCommerce's "Completed order" email instead of the "Processing" one.
It's deliberately narrow. Only orders made entirely of booking lines qualify, and only when a payment gateway confirms the payment, so statuses staff choose by hand (manual bookings, hand-edited orders) are never overridden. And the safety net below still wins: a payment that lands after the hold expired parks the order On hold with no booking, setting or no setting.
The safety net: payment landing after the hold expired
Occasionally a member completes payment after their 30-minute hold has lapsed (classically, sitting in a payment provider's popup). Tempo re-checks availability at the moment of confirmation, the one gate every payment route passes through:
- Places still free: the paid booking is honoured and created normally.
- A place was taken in the meantime: no booking is created, because the family who took the place fairly keeps it; capacity is never exceeded. The order is parked On hold with a note naming the lost dates. In wp-admin the order shows a prominent "Tempo booking NOT completed" alert; the member sees a calm note that the club will be in touch, and nothing is needed from them.
- Your options as staff: arrange an alternative or a refund; or, if a place frees up, set the order back to Processing and the booking completes normally.
This is rare, but when it happens you'll want to move quickly; the order alert and the Bookings hub filters make these easy to spot.
Housekeeping you never need to do
A background task tidies expired holds every few minutes, but capacity never depends on it: an expired hold stops counting the second it lapses. A slow server cron can't oversell a class or block a sale.
Guest checkout settings don't affect bookings; booking always requires a logged-in member because every booking belongs to a named student. Your shop can still sell other things to guests if it likes.
Thanks. That helps us improve these guides.
Thanks for letting us know. Ask us on the Support page and we'll help directly.