Version 0.1.3 · Requires WordPress 6.6+, WooCommerce 9.0+, PHP 7.4+ · By Cleartekt · Live demo · Video walkthrough (4 min) · Support: WPBay tickets or hello@cleartekt.dev
Catalog Audit Studio checks your store and shows, on one screen, what is wrong in the catalog, what is running out and what is not selling. Every row of every report opens the product in the standard WooCommerce editor: you make the fix, the plugin only points to it.
catalog-audit-studio.zip from your WPBay account.The screen is available to users with the "View WooCommerce reports" capability: administrators and shop managers.
On the first visit after activation the screen opens a short setup: Store check (WooCommerce, products, order storage, whether WooCommerce Analytics has your orders — with what to do if not) → Audit rules (days out of stock before a product is reported, whether drafts are checked; optional, the defaults suit most stores) → First audit (runs in the background, changes nothing) → summary and Start working. Each step says why it matters; you can go back, skip an optional step or press Set up later. The setup is always available again from Initial setup in the screen header. The rules are saved exactly as on the Settings tab.
The plugin is translated into 13 languages: English, Russian, German, Spanish, French, Portuguese (Brazil), Indonesian, Filipino (Tagalog), Arabic, Hebrew, Japanese, Korean and Chinese (Simplified). The screen follows the language of your WordPress profile; the Language list in the screen header changes it for your user (the same setting as the language in your profile). Numbers and dates follow the chosen language, prices keep the store format; Arabic and Hebrew use a right-to-left layout.
The header shows when the reports were calculated and the Recalculate button; the tabs below it are Overview, Catalog (with the number of problems), Stock (with the number of items that need attention), Sales and Settings.
First run. The audit reads the catalog in batches and shows "Auditing your catalog: N of M products". If you leave the screen, the audit continues from where it stopped when you come back. Nothing in the store changes.
| Block | What it shows | Click opens |
|---|---|---|
| Catalog health | The share of products with no problems, in %. A variation's problem counts for its product. The 100 squares are the catalog, each square 1 % of products, colored by the most serious problem of those products: no problems, minor, warning, critical | Button "Fix N critical problems first" → Catalog, critical only |
| Out of stock | Products and variations that cannot be bought now | Stock, filtered |
| Low stock | At or below the low stock threshold; negative stock is mentioned below the number | Stock, filtered |
| Stock value | Quantity on hand × current price (WooCommerce has no cost price) | Stock |
| No sales in 90 days | Products in stock that did not sell in 90 days; the bar is their share of all stock value | Sales, 90 days, "No sales" |
| Problems by kind | Bars grouped by severity: critical, warning, minor | Catalog, filtered by this check |
| Net sales, last 90 days | Weekly chart; hover or use the arrow keys for the exact value | Sales |
Two views of the same list:
How to fix in a row opens the instructions for its problems. The counters above the table (All · Critical · Warning · Minor) filter the rows by severity.
Severity tells you where to start: Critical, Warning, Minor. The table below lists the level of each check.
| Filter | Meaning |
|---|---|
| Out of stock | Stock status "Out of stock" (or quantity 0 with stock management on) |
| Low stock | Quantity at or below the threshold: the product's own "Low stock threshold", otherwise the store-wide one from WooCommerce → Settings → Products → Inventory |
| Negative stock | Quantity below zero — usually backorders or an import error |
| On backorder | Stock status "On backorder" |
Stock value = quantity × current price (the sale price while a sale is active). WooCommerce has no cost price field, so this is the retail value of your stock, not what you paid for it. The screen says so too.
Only products with stock management turned on have a quantity; for the others the value is not calculated. A product without stock management appears in Stock only when it is marked Out of stock or On backorder by hand.
Choose the period: 7, 30, 90, 365 days or your own dates.
| Report | What it shows |
|---|---|
| Best sellers | Products by revenue and by units sold in the period |
| No sales in period | Products in stock that did not sell a single unit in the period, with quantity on hand and its value. This is your dead stock |
| Revenue by category | Revenue for the period split by product category |
Where the data comes from. The Sales tab reads WooCommerce Analytics tables (the same data as Analytics → Products). Analytics counts orders with the statuses set in Analytics → Settings → Actionable statuses / Excluded statuses. By default WooCommerce excludes Pending payment, Failed and Cancelled, so the plugin counts everything else (Processing, Completed, On hold and your custom statuses); refunds are subtracted on the day of the refund.
The Sales tab is empty or shows a hint. Your order history has not been imported into Analytics yet. Go to Analytics → Settings → Import historical data and click Start. The import runs in the background; open Catalog Audit again when it finishes. The plugin shows this hint with a link.
Severity, as in the plugin: Critical — costs sales or breaks data now; Warning — hurts conversion or operations; Minor — tidy-up. Check names below are the plugin’s labels (version 0.1.3).
| # | Check | What it means | How to fix (in the product editor) | Severity |
|---|---|---|---|---|
| 1 | No main image | The product has no main image. The shop shows a grey placeholder | Product image box (right column) → Set product image | Warning |
| 2 | No SKU | The SKU field is empty. Imports, feeds, stock syncs and warehouses usually match products by SKU | Product data → Inventory → SKU. For a variation: Variations → expand it → SKU | Minor |
| 3 | Duplicate SKU | Two or more products or variations have the same SKU. Imports and syncs update the wrong product or fail | Sort the report by SKU to see the pairs. Give each item a unique SKU in Inventory → SKU. WooCommerce rejects a duplicate on save — if it doesn't, the duplicate came from an import or another plugin | Critical |
| 4 | No price | A published product with an empty regular price. WooCommerce hides the Add to cart button | Product data → General → Regular price. For a variable product — the price of each variation | Critical |
| 5 | Sale price is not lower than the regular price | The sale price is equal to or higher than the regular price: the "sale" saves the customer nothing, and the badge looks wrong | Lower the Sale price below the regular price, or clear it | Critical |
| 6 | Sale ended, sale price still set | The sale end date is in the past, but the sale price field is still filled | Clear the Sale price and the schedule dates — or set new dates for the next sale | Warning |
| 7 | No description | Both descriptions are empty. Customers and search engines get no text | Write the main description (editor above Product data) and the Product short description | Minor |
| 8 | Only the default category | The product is only in the default category: it doesn't appear where shoppers browse | Product categories box → tick the right categories, untick "Uncategorized" | Minor |
| 9 | Variation without a price | A variation of a variable product has no price: it can't be bought, and the product may show as "unavailable" for that option | Variations → expand the variation → Regular price | Critical |
| 10 | Variation without an image | Its sibling variations have images, this one doesn't: choosing it shows the parent image or nothing | Variations → expand → click the image placeholder | Warning |
| 11 | No weight on a shipped product | Shipping is enabled in the store, the product is not virtual and has no weight: weight-based shipping rates come out wrong | Product data → Shipping → Weight (or tick Virtual if it isn't shipped) | Warning |
| 12 | Out of stock for a long time | The product has been out of stock with no backorders for longer than N days, but is still published | Restock it, allow backorders (Inventory → Allow backorders?), or set it to Draft/hide it. N is set in Settings, 30 days by default | Warning |
Fixed something? Click Recalculate to refresh the reports. Otherwise the cached audit is kept for a day and then calculated again on the next visit; saving a product does not recalculate it.
Search over product name and SKU; a filter chip for every other column: "+ Type" opens a list, "+ Stock" opens "from / to". A chosen filter shows as "Type: Variation ×"; Reset filters appears only when something is filtered.
Sort by clicking a column header (on a phone — the "Sort" list). On a phone rows become cards.
Above the table: counters that filter by the main column (severity, stock state) and "showing N of M".
Money columns have a total of the rows shown at the bottom of the table.
Export downloads exactly what you see, with your filters and sorting:
| Format | Details |
|---|---|
| CSV | UTF-8 with BOM, semicolon ; as separator — Excel opens it with the right characters and columns |
| Excel | .xlsx workbook, one sheet, numbers as numbers, the first row frozen and with filters |
Cells that start with =, +, -, @, a tab or a line break are written as text, so a spreadsheet does not run them
as formulas. Each file also has the edit link of every product.
The Settings tab of the Catalog Audit screen:
| Setting | Default | What it does |
|---|---|---|
| Report a product as out of stock for a long time after … days | 30 (1–3650) | The limit N for check 12 |
| Also audit drafts, pending and scheduled products | off | By default only published and private products are audited |
Save and recalculate saves the settings and refreshes the reports. The low stock threshold is WooCommerce’s own (WooCommerce → Settings → Products → Inventory, or the product’s field), not a plugin setting.
| Symptom | What to do |
|---|---|
| Sales tab is empty | Import historical data in Analytics → Settings (see Sales above) |
| Numbers didn't change after I fixed a product | Click Recalculate |
| The first calculation takes long | Normal for a large catalog: it runs in batches. If you close the screen, the audit continues from where it stopped when you open it again |
| Stock value is 0 for some products | Stock management is off for them, or they have no price |
| I don't see WooCommerce → Catalog Audit | Your user needs the "View WooCommerce reports" capability (administrator or shop manager) |
| A product is missing from the reports | Drafts, pending and scheduled products are skipped unless Also audit drafts, pending and scheduled products is on in Settings. Private products are always audited |
Does it change anything in my store? No. It only reads. You fix things in the WooCommerce editor.
Will it slow down my shop? No. It runs only on its own admin screen; nothing loads on the storefront.
Does it send data anywhere? No. There are no external requests.
How is catalog health calculated? The share of products with no catalog issues: in the demo store 44.7% — 67 of 150 products passed every check. A variation’s problem counts for its product.
Why is stock value not my cost? WooCommerce has no cost price field. Stock value uses the current selling price.
Does it work with variable products? Yes. Variations are checked separately, and their rows link to the parent product.
Is it compatible with HPOS? Yes.
How big a store can it handle? The audit runs in batches of 200 products, one request each, so a large catalog doesn’t hit a request timeout; sales are a few indexed queries over the WooCommerce Analytics tables. We haven’t published a benchmark for very large stores yet.
What is removed when I delete the plugin? Only its settings and report cache.
Is it translated? Yes: English and Russian, including every table label.