When WooCommerce creates an order, RaffleWP reserves the requested ticket numbers in a transaction. If the initial reservation cannot be completed, checkout stops before the customer is sent to the payment gateway. Tickets become confirmed only when WooCommerce reports payment complete or a paid order status and the expected active ticket count exists.
| Order event | RaffleWP result |
|---|---|
| Checkout creates order | Numbers are reserved and attached to order items; an allocation failure aborts checkout. |
| Payment complete / Processing / Completed | Reserved tickets are confirmed and instant prizes are evaluated. |
| Late lucky-dip payment | Expired reservations are reallocated automatically when enough numbers remain. |
| Late manual selection / sold out | The paid order is put on hold, the administrator is notified and no ticket confirmation is sent. |
| Cancelled / Failed / Refunded | Tickets are cancelled and their numbers return to the available pool while the historical entry record is retained. |
| Reservation expires | The hourly task or manual dashboard action releases old Reserved tickets. |
Reservation, confirmation, cancellation and refund handling are idempotent. The payment gateway still decides whether payment succeeds; RaffleWP does not capture or settle funds.
