Feature

Approval Workflows

Decide which orders need sign-off, and let the right person approve or reject them from your storefront.

What it does

Approval Workflows checks every Requester's order against rules you set, and — if it matches — holds the order as Pending Approval and routes it to that company's Manager or Admin for a decision, instead of sending it straight through to you.

Why you'd use it

It's the difference between "please don't order anything over $500 without asking me first" being an honor system, and it being something your store actually enforces.

How to configure it

Free and Pro The free plugin has the order value threshold, the roles it applies to and the confirmation message. Restricted categories, a threshold per company, two approval steps, comments, bulk approval and reminder emails are part of CrewCommerce Pro.

Everything lives on CrewCommerce > Settings.

CrewCommerce Settings page with Order Value Threshold, Restricted Product Categories, Apply Rules To, Multi-Level Approval and Checkout Notice fields
Every approval rule and workflow option lives on this one page.

Approval Rules

  • Order Value Threshold — orders totalling this amount or more require approval. Set to 0 to require approval on every order.
  • Restricted Product Categories — orders containing anything from a checked category always require approval, regardless of total.
  • Apply Rules To — which roles these rules apply to. Requesters are checked by default; you can add Managers too. Admins are always exempt, no matter what you choose here. Nobody approves their own order: a Manager's order goes to another Manager, or to the company Admin if there isn't one.

Rules are evaluated in that order — category first, then value — and the first match is what triggers approval.

Workflow Behaviour

  • Multi-Level Approval — off by default, meaning the first available Manager or Admin can approve. Turn it on to require both: a Manager approves first, then an Admin approves after.
  • Checkout Notice (Requester) — the message a Requester sees on the order confirmation page when the order they just placed is held for approval. Leave blank to use CrewCommerce's default wording, which names their approver, or write your own.
  • Reminder for Stale Approvals — how many hours an approval can sit untouched before CrewCommerce emails the approver a reminder.

A company can also have its own approval threshold override, set from that company's detail page in WP Admin, if it needs different terms than the site-wide default.

How it plays out at checkout

When a Requester's order matches a rule, they check out as normal and the order is placed — but it's held as Pending Approval instead of going through to you. Their approver is emailed, and the confirmation page tells the Requester who it's waiting on:

WooCommerce order received page reading: Thank you — your order has been received. It needs approval from Sandra Okafor before it is processed, and they have been emailed about it. Follow it under My Requests.
The order exists, but it doesn't reach you until it's approved.

A held order doesn't show up as a new order to fulfil — you get WooCommerce's usual new-order email once it's approved (and, for online payments, paid). If the company has nobody who could approve it, see below.

Payment after approval

Nothing is charged while an order waits for approval — WooCommerce skips the payment step for a held order. What happens once it's approved depends on how the store takes payment:

Payment method on the orderAfter approval
Cash on deliveryGoes straight to Processing, as it would have at checkout.
Direct bank transfer or CheckGoes to On hold, awaiting payment, as it would have at checkout.
Anything taken online — cards and other payment gatewaysGoes to Pending payment. The Requester's approval email includes a link to pay, and a Pay Now button appears on the order in their My Requests. Once they pay, it moves to Processing as normal.
Already paid, or nothing to payGoes straight to Processing.

The confirmation page tells a Requester paying online that they haven't been charged yet and will be sent a link to pay. Approved orders waiting for payment aren't cancelled by WooCommerce's "hold stock" timer — they stay open until the Requester pays or you cancel them.

My Requests showing an approved order with a Pay Now button next to View Order
An approved order waiting for payment, from the Requester's side.
Using an invoice or purchase-order gateway? Offline gateways other than cash on delivery, bank transfer and check are treated like online payment: the Requester gets a pay link and chooses how to pay on WooCommerce's pay-for-order page. A developer can map your gateway to a status instead with the crewcommerce_status_after_approval filter — see Advanced Usage.

Approving or rejecting

Managers and Admins see everything waiting on them under My Account > Pending Approvals, with the order's items, an optional note, and Approve / Reject buttons:

Pending Approvals list showing an order with its line items and Approve/Reject buttons
A note is optional when approving, required when rejecting.

Every approval has its own comment thread, so a Manager can ask a question and the Requester can respond before a decision is made — visible from both the Pending Approvals and My Requests screens.

Once they approve or reject, a confirmation appears at the top of that order's card saying what happens next — for example "Order #322 approved. Marcus Chen has been emailed a link to pay." The order stays on screen marked Approved or Rejected, its buttons are removed, and the waiting count updates. An approver's own orders never appear in their list; those go to someone else.

If an item sold out while the order was waiting

Stock isn't reserved while an order waits for approval, so another customer can buy the last units in the meantime. If that happens, Approve is refused with a message naming the item and how many are left (for example "needs 3, 1 left"), and a note is added to the order. Restock the item, or ask the buyer to change the order, then approve it. Products that don't track stock, or that allow backorders, are never blocked.

Important options and what to expect

Reminder for stale approvals If an approval sits untouched past the number of hours you set for "Reminder for Stale Approvals" in Settings, CrewCommerce emails the approver a reminder. After twice that long, the store owner is copied in too. Set the hours to 0 to turn this off entirely.

Edge case: no one to approve it

If a company has no Manager or Admin — nobody removed, or everyone with those roles left — the order is still placed and held as Pending Approval, just with no approver assigned. You're emailed, and it shows up as "waiting for an approver" on your CrewCommerce Dashboard until an admin claims it:

My Requests screen showing an order marked UNASSIGNED with the note 'No approver assigned yet'
From the requester's side, this looks like a normal pending request — just without an approver's name yet.

You (or any site admin) can claim and decide it from CrewCommerce > Approvals in WP Admin. The person who placed the order can't claim it for themselves.

Common mistakes

Setting the threshold to 0 and forgetting about it This means every Requester order needs approval, including a $5 reorder. Fine for testing, usually too strict for daily use.
Expecting Managers' own orders to need approval They don't, unless you explicitly add "Manager" under Apply Rules To in Settings. When you do, a Manager's order goes to another Manager or the company Admin, never back to them.