Practical WordPress guide

Purchased Items for WooCommerce Orders: safe setup, failure cases, and rollback

A plain-language guide for nontechnical site owners. It separates what the parent plugin really knows from what a helper plugin should never guess.

Reviewed July 22, 2026Official-source links includedNo invented performance claims

Last updated: 2026-07-22

Direct answer

To show purchased items in the WooCommerce Orders list without slowing every row, add a View items control and load one order's bounded item list only after an authorized click. Do not materialize every order or count an order's complete contents just to render the table. Use prepared, read-only, hard-limited local queries, escape every name and quantity, and tell the user to open the order when more items exist.

Purchased Items for WooCommerce Orders follows that boundary. Free shows up to five names and quantities on demand. Pro raises the bounded view to twenty-five and can add non-protected variation details. The planned Pro offer is $39 per year for one site after a 14-day no-card trial; checkout remains a separate release step.

Choose the smallest suitable approach

Approach What it changes Main tradeoff
On-demand bounded view Loads one order's short item list after a click Open the order for the complete list
Eager custom column Prints items for every visible row Can multiply line-item reads and page weight
Fulfillment or order-management suite Adds packing, export, filters, and workflows Larger setup, data access, and support surface

The problem appears in real user reports

A fulfillment user said opening orders one by one wasted time and explained that missing variation details had made an existing purchased-items plugin unusable for that workflow.

Another reviewer was glad the removed Purchased Items function was available again and asked for an even faster hover view.

A separate WooCommerce operator asked how to restore the purchased-items column for quick viewing.

These reports establish the repeated workflow problem. They do not prove broad demand, paid conversion, or StoreFixKit sales.

Why an eager item list is risky

An Orders page can contain many rows, and each order can contain many items and metadata records. Loading every line item before the user asks for it turns one convenience column into a page-wide read multiplier.

A safer design has four limits:

  1. Before a click, read zero line items.
  2. Accept one validated order ID per request.
  3. Require a nonce and WooCommerce order-management capability.
  4. Fetch only a bounded prefix plus one extra row to determine whether more exists.

The Free contract fetches at most six item rows and shows five. Pro fetches at most twenty-six and shows twenty-five. It reports only that more items exist; it does not run a complete count.

WooCommerce's HPOS documentation also matters for the surrounding Orders screen. The column must register the native classic and HPOS hooks, even though WooCommerce order-item tables remain the bounded read source for the click response.

Install and use it safely

  1. Confirm WooCommerce 8.9 or newer is active.
  2. Install and activate Free 0.1.13.
  3. Open WooCommerce > Orders.
  4. Enable Purchased Items under Screen Options if the column is hidden.
  5. Select View items on one test order.
  6. Compare the shown names and quantities with that order.
  7. Select Hide items to collapse the result.
  8. Deactivate Free and confirm the column disappears.

The click uses a local WordPress AJAX request. It does not send item data to StoreFixKit.

What Free and Pro display

Free shows up to five escaped item names and quantities. When the order contains more, it adds a general sentence directing the user to open the order. It does not reveal an exact hidden count.

Licensed Pro changes only the bounded response:

  • up to twenty-five items may be shown; and
  • bounded, non-protected variation details may be appended from one batched metadata read.

Neither edition loads product objects, product images, SKUs, protected metadata, packing state, stock state, or a complete order-item graph. If Pro or licensing is unavailable, the complete Free five-item view remains local and active.

Know the support boundary

The supported surfaces are WooCommerce's native classic and HPOS Orders lists. This release does not add:

  • a packing or picking workflow;
  • item, quantity, inventory, or order editing;
  • CSV export or filtering;
  • images or product-object lookups;
  • exact full-order item counts;
  • frontend, REST, feed, or email output; or
  • remote line-item processing.

The column is a quick local preview. The order screen remains the source for the complete order.

Troubleshoot by symptom

Symptom Check first Safe expected result
Column is missing WooCommerce version, role, and Screen Options Unauthorized or unsupported screens stay unchanged
Request denied Page age, nonce, and WooCommerce capability No item data is returned
More-items sentence appears Whether the order exceeds the active limit Open the order for the complete list
Variation details are absent Whether Pro is active and metadata is non-protected Unsafe or protected details stay hidden
One item is omitted Whether its stored row or quantity is malformed Unsafe rows are not guessed or repaired

Reload the Orders page if a nonce has expired. Do not weaken the permission check to make an old tab work.

Roll back without touching orders

  1. Deactivate Pro and select View items on a test order.
  2. Confirm Free returns to its five-item bound.
  3. Deactivate Free.
  4. Confirm the Purchased Items column disappears.
  5. Open the test order and confirm every item, quantity, and variation remains unchanged.
  6. Install a previous deterministic ZIP only for a version rollback.

Normal uninstall preserves Pro license/update state for accidental recovery. Defining STOREFIXKIT_DELETE_DATA as true before deleting Pro removes only this product's three owned Pro options. Free stores no settings, and neither package deletes orders, items, metadata, products, inventory, or customers.

Privacy, security, and resource boundary

  • Every item request requires a nonce, a validated order ID, and WooCommerce order-management capability.
  • The request is limited to one order and two prepared, hard-limited local reads.
  • Free makes no remote request.
  • Only an explicit, authorized Pro license action sends the license key, site URL, and product key to StoreFixKit.
  • No order, customer, phone, line-item, payment-method, or transaction data is sent.
  • There is no telemetry, custom table, cron, queue, frontend asset, eager item read, product-object load, or business-data write.

Support material should replace product names and variation values with neutral examples. Do not send a real order export, customer record, order contents, payment detail, transaction ID, password, API key, or complete license key.

Market evidence boundary

The July 21, 2026 evidence capture found three exact or near-exact free incumbents with a combined 1,140 reported active installs, plus a 10-install broader bundle. The largest exact listing was Purchased Items Column for WooCommerce Orders at 800 reported active installs. Those figures are installed stock, not sales or willingness to pay.

The same capture found the broader paid OrderFusion: Filters and Columns Manager at a captured price of $89 per year with multiple Products column modes. That proves a paid offer existed in the broader category on the capture date. It does not prove purchases for this narrow outcome.

The exact-intent US keyword check returned no reportable numeric search volume for the three tested purchased-items phrases. StoreFixKit has no measured acquisition capacity for this product.

At a hypothetical $39 annual price, a $10,000 MRR target requires about 3,077 active annual customers. The selection model assumes 180 new customers per month, 1.7% free-to-paid conversion, and 20% annual churn. Those assumptions, the paying-market floor, and support load are unverified. The $10,000 MRR figure is a product-selection hypothesis, not a forecast, promise, or sales claim.

Frequently asked questions

Does the page load every order's line items?

No. It reads zero line items until an authorized user selects View items on one row.

Why not show the exact total item count?

That would require a broader read. The plugin returns a bounded prefix and only whether more items exist.

Does it change quantities or stock?

No. It performs read-only local queries and never writes orders, items, products, or inventory.

Are purchased items sent to StoreFixKit?

No. Explicit license actions send only the license key, site URL, and product key.

What should I send support?

Use StoreFixKit Support and include plugin versions, WordPress and WooCommerce versions, HPOS state, role, approximate item count, expected and actual behavior, and repeatable steps. Replace product and variation values and remove all customer, order, license, and payment data. After an official WordPress.org listing exists, support can provide the correct review link.

Focused plugin

Use the one-job implementation.

Load a bounded list of purchased item names and quantities from one classic or HPOS order row only after an authorized click.