Manager approval queue

A feature

A second pair of eyes on the things that matter — refunds, substitutes, return resolutions. Surfaced where managers already look, not buried in another panel.

You hire help so you can stop being the bottleneck. But there’s a class of decisions you don’t want anyone but you (or your most trusted person) making. The packer can pack and ship. They can mark something out of stock. They can record condition on a returned item. They probably shouldn’t be the one who decides to refund a customer $80, or swap a Medium for a Large because they’re out of Medium and figure the customer won’t mind.

The manager approval queue is the line between those two zones. The packer can flag it — “I want to refund this”, “I want to substitute this” — and the request lands in front of the people you’ve authorised to approve. They see it, they decide, the action goes through with their name on it. The packer keeps moving without standing around waiting; the manager keeps the final say on the decisions that actually matter.

What goes in the queue

For staff who don’t have approval authority, four kinds of action queue instead of executing:

  • Refund a customer (from any source — a return, an out-of-stock item, a damaged item)
  • Substitute one item for another (different SKU ships out)
  • Return resolutions that move money or inventory (refund, replacement, reject)

Other actions still execute immediately for the packer: mark as packed, mark unavailable as backorder, contact customer, leave a note. Approval gates only apply where money or stock changes hands.

For staff who DO have approval authority (Administrator, Shop Manager by default, or any custom role you tick on), all of these execute immediately. Same UI, no extra clicks.

Three places approvers see the queue

You shouldn’t have to leave what you’re doing to handle approvals. The same queue surfaces in three places, all driven by the same data:

1. Bell icon in the WP admin bar. Visible at the top of every wp-admin page when an approver is logged in. Badge shows how many requests are pending. Click the bell to see a quick list of the most recent five with one-click jump-into. Standard WordPress submenu — looks like the Comments / +New menus you already know. 2. Approvals tab in the wp-admin Operations dashboard. Sits alongside Packing and Returns. The full master-detail view: list of pending requests on the left, full context on the right, three-action response form (approve / approve with change / reject) at the bottom. 3. Approvals tab in the frontend staff dashboard. Same master-detail layout, only visible to staff with the new Approvals permission. So a senior packer at the warehouse tablet can approve from the same surface they’re packing on, no need to switch over to wp-admin.

The data is the same in all three. Approving in one closes it in the others.

What an approval looks like

Each pending request shows you everything you need to decide:

  • Which order, with a one-click jump to the WC order screen
  • Which customer, including name and email
  • Which item, with name and SKU
  • Quantity and amount for refund-shaped requests; the suggested SKU for substitutes
  • Reason the packer chose (out of stock, damaged, wrong item, change of mind, etc.)
  • Who requested it and how long ago — so old requests don’t get buried
  • Notes thread between you and the requester, with three visibility levels: internal only, goes-in-shipped-email, or emails the customer right now

Three buttons: Approve (do exactly what was requested), Approve with change (modify the amount, pick a different substitute SKU), Reject (with a reason that goes back to the requester).

Refunds execute via WooCommerce’s normal refund machinery as soon as you approve — no manual second step, just the gateway flow you already use.

What the packer sees while a request is pending

While an item is sitting in your queue, it doesn’t disappear from the packer’s order view. It’s still listed, still showing all its details. Two things change:

  • The checkbox to select-and-pack is replaced with a small pause icon (so the packer can tell at a glance “I can’t pack this right now”)
  • A yellow “On hold — awaiting [manager approval for refund / substitute / etc.] — requested by you 3 minutes ago” callout sits under the SKU

The order card in the packing list also gets a yellow “1 on hold” badge alongside the existing badges, so packers can scan their list and see at a glance which orders have blocked work.

When you resolve the approval, that pending state clears. If you approved a substitute, the item now shows a blue “Substitute approved: SKU-XYZ by [your name]” callout instead — the packer reads exactly which SKU to use when they pack.

The approval permission

A new “Approvals” column appears in the per-role permission matrix at Packsie Settings > Tab Permissions. Tick it for any role that should be able to see the queue and act on requests. Default: Administrator and Shop Manager have it on (because both have manage_woocommerce). Tick it on for a Senior Packer or Returns Lead role if you want to delegate without giving the keys.

This is separate from the existing “Refunds” tickbox (which controls whether someone can press Refund on their own work without the queue). A user can have one without the other:

  • Refunds only — can issue refunds on their own packing/returns work, but doesn’t see other people’s queue. Useful for a Senior Packer who handles their own customer issues.
  • Approvals only — sees the queue, approves other people’s requests, but their own refund clicks still queue. Useful for a Returns Lead who reviews everyone else’s work but isn’t packing themselves.
  • Both ticked — does both jobs.
  • Neither — pure packer / inspector role; flags things, gets approval, gets on with the next thing.

The manager note that emails the customer

When you reply to a request via the notes thread, you pick a visibility:

  • Internal only — the requester sees it, no one else
  • Goes in shipped email — appended to the WooCommerce shipping notification when the order eventually ships
  • Email customer now — fires the WooCommerce customer-note email immediately, so a return approval can carry your “all sorted, refund processed today” message to the customer in the same flow

That last option is the one that turns approvals into customer comms without leaving the panel.

Audit trail

Every step lands in the Packsie audit log: when the request queued, who approved or rejected, with what modification, when the customer note went out. Filterable by event type, user, or date range. So when you’re trying to remember “why did we substitute that item three weeks ago”, the trail is there.

Why we built it this way

A small shop’s owner is the manager, packer, and customer-service person rolled into one. Hire one casual packer and the question “what can they do without checking with you?” stops being theoretical. The answer most shops default to is “check with me on everything” — which means standing over their shoulder all afternoon, or coming back to a pile of post-its when you finally sit down with your tea. The manager queue is the version that doesn’t make either of you wait for the other. Packers flag, you approve, the work keeps moving. You stay in the loop on the bits that matter and out of the way of the bits that don’t.