What each WooCommerce order status actually claims
Eight labels, and most shops use three. Failed is a decline rather than an abandonment, and draft exists only because of the block checkout.
What we find in real checkouts, and what a shop owner can check for themselves.
Eight labels, and most shops use three. Failed is a decline rather than an abandonment, and draft exists only because of the block checkout.
One key is meant to be read by anyone, the other by nobody. Google's error codes say which half is wrong, so guessing is never necessary.
The Store API carries its own limiter, switched off out of the box. Turning it on takes one filter, and getting it right takes an accurate client address.
The decline reason your gateway gave is rarely on the order screen. It is in the notes panel beside it, written by machinery rather than by a person.
The form is on the checkout page. The request that places the order is not, and anything wired to the page template never sees it.
The Checkout block posts JSON to a REST route. Code hooked to the classic checkout is never asked, which is why protection can look healthy and do nothing.
WooCommerce ships a second payment surface for orders that already exist. It calls your gateway directly, and none of your checkout validation runs there.
WooCommerce reads the shopper's address from a forwarded header. Behind a proxy that is either the proxy itself or a value the client chose, and both break rules.
Google gives a token two minutes and one verification. A checkout that takes longer than that fails honest shoppers, and the error code says so.
Failed orders are declines, not abandoned baskets. And the row count is not the attempt count, because WooCommerce reuses an order when the basket has not changed.
Pro waitlist
The free plugin stays free. Join the launch list for founding pricing on Pro and one email when it is ready. Nothing else.
Received