Holding production until the proof is approved

What it does

While a proof on an order is waiting on the customer, or has come back marked “changes requested,” the order is stopped from entering any status you’ve marked as a production status in Settings (Processing and Completed by default).

The refusal is explicit: the order is parked at your chosen hold status, and an admin notice explains exactly why. It never silently reverts the status and says nothing. You’ll always know why an order didn’t move.

What it never does

  • Never blocks a cancellation or a refund. The statuses cancelled, refunded, failed, pending, checkout-draft and trash can never be guarded — no matter what you’ve ticked in settings or what a filter returns. A plugin that strands a refund behind an approval workflow would be worse than no plugin at all.
  • Never fires WooCommerce’s “your order is complete” email for an order it’s about to hold back. That email is suppressed on a blocked transition, so a customer never receives a completion notice for work that hasn’t actually started.
  • Never leaves a locked status selectable in the admin status dropdown or the bulk-action list while the lock applies to that order; the option is removed rather than shown and then refused after the fact.

Overriding the lock

Anyone with the manage_woocommerce capability can override the hold on a specific order. A reason is required, and the override is written both to the order and into the approval record, so there’s a record of who overrode it, and why.

A new proof, or a new version of an existing one, clears any earlier override automatically. That’s deliberate: an override was granted for the order as it stood at that moment, not as a blanket permission going forward.

Think of it as a seatbelt, not a handcuff

Every shop has the job that has to go out today regardless of what the workflow says. The override exists for exactly that: it takes one click and a reason, and it’s fully logged. The lock’s job is to make sure skipping approval is a visible decision someone made, not something that happened by accident because a status got clicked before anyone checked for a reply.

Common question

“The order won’t move to Completed. Is something broken?” No. That’s very likely the production lock doing its job. Check the proof’s status on the order panel; if it’s still waiting on the customer, that’s why. See Troubleshooting.

Something here wrong or missing? Tell us and we will fix it.