Title: NovaWorks Low Stock Report for WooCommerce
Author: jordennabbe
Published: <strong>October 11, 2026</strong>
Last modified: October 14, 2026

---

Search plugins

![](https://ps.w.org/novaworks-low-stock-report-for-woocommerce/assets/banner-772x250.
png?rev=3739356)

![](https://ps.w.org/novaworks-low-stock-report-for-woocommerce/assets/icon.svg?
rev=3739356)

# NovaWorks Low Stock Report for WooCommerce

 By [jordennabbe](https://profiles.wordpress.org/jordennabbe/)

[Download](https://downloads.wordpress.org/plugin/novaworks-low-stock-report-for-woocommerce.1.1.0.zip)

 * [Details](https://wordpress.org/plugins/novaworks-low-stock-report-for-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/novaworks-low-stock-report-for-woocommerce/#reviews)
 *  [Installation](https://wordpress.org/plugins/novaworks-low-stock-report-for-woocommerce/#installation)
 * [Development](https://wordpress.org/plugins/novaworks-low-stock-report-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/novaworks-low-stock-report-for-woocommerce/)

## Description

NovaWorks Low Stock Report adds one screen to WooCommerce that answers a single 
question: what is about to run out?

It lists every product and every variation with its current stock, its stock status,
its backorder setting, the low stock threshold that actually applies to it, the 
units it sold in the last 30 days and how many days of cover that leaves. The view
you land on is everything already at or below its own threshold, sorted so the item
that runs out first is at the top.

**The threshold column**

WooCommerce lets you set a low stock amount on an individual product and falls back
to a store-wide default when you have not. The report resolves that for every row
and tells you which of the two it used, so the number in the threshold column is
the number that applies to that product, and hovering it says whether it came from
the product or from the store default. A product or variation that does not track
stock gets no threshold and is never counted as low.

**Days of cover**

The days-of-cover column is units sold over the last 30 days, taken from the line
items of your completed and processing orders, divided into the stock you hold now.
An item that sold 60 units in 30 days with 30 in stock shows 15 days. Items with
no sales in the window show a dash rather than a made-up number. The calculation
is cached and rebuilt by a daily background job, so it does not run on a page load
more than once per cache window.

**Editing where you read**

Change a stock quantity or a stock status in the table and it saves over AJAX through
WooCommerce’s own product CRUD layer, so WooCommerce’s stock hooks fire and its 
transients and product lookup tables stay correct. Every row reports back: a green“
Saved” with the value that is now stored, or a red line with the reason it was not
written. Selected rows take bulk actions too: set stock to a value, increase or 
decrease by a number after a delivery, set a stock status, or turn stock management
on or off.

**A CSV round trip that shows its work**

Export writes exactly the view you are looking at, every row in the filter and not
only the page on screen, with the columns sku, name, type, stock, stock_status, 
threshold, units_30d and days_cover.

Import matches your rows by SKU and then stops. Uploading a file writes nothing.
You get a preview table of every matched row with its current value, its new value
and the difference, followed by the SKUs it could not find, the rows whose numbers
it could not read and any SKU listed twice. Stock is written only after you press
the confirm button, and each row’s outcome is reported afterwards.

**The rest**

A dashboard widget shows how many items are at or below their threshold and links
straight into the filtered report. While anything is that low, the same number also
appears in the toolbar of the admin area; it is not shown on the storefront. Filters
live in the URL, so any view can be bookmarked or shared with a colleague.

The free plugin adds no database tables, makes no external HTTP requests, and collects
no analytics. It writes stock through WooCommerce CRUD, reads orders only through
wc_get_orders() so it works with High-Performance Order Storage, checks a capability
and a nonce on every action, and is variation-aware throughout. The paid edition
stores private stock movement records in WordPress and supplier fields on products;
its optional digest uses WordPress mail. The Freemius edition also uses the licensing
service.

The free version covers the report and stock editing. Pro adds the four inventory
features listed below.

Questions or a problem to report: nabbe.j82@gmail.com.

### Upgrade to Pro

NovaWorks Low Stock Report Pro is available at https://factory.novaworks.pt/p/brimstock-
low-stock-report and adds these features:

 * Stock movement history for products and variations, with filters, CSV export 
   and configurable retention.
 * Daily or weekly low stock digest emails with effective thresholds and days of
   cover.
 * Supplier name and email, reorder quantity and lead time per product or variation,
   with a purchase order CSV grouped by supplier.
 * Suggested reorder dates and quantities from stock, sales velocity and lead time.

Configure supplier fields in the product Inventory panel or variation editor, select
report rows to download a purchase order, and open WooCommerce > Stock history to
filter or export movements. Configure retention and digest recipients under Low 
Stock > Settings. History starts when Pro is enabled, defaults to 90 days of retention,
and observes WooCommerce stock hooks, not direct database changes. Digests are off
by default; WP-Cron depends on site traffic and mail acceptance does not guarantee
inbox delivery. Purchase order downloads do not send orders to suppliers. Forecasts
without sales data remain unknown.

History records the product, user, time, before and after quantity, and source of
each change. Digests use WordPress mail and configured recipients. Forecast quantities
target lead time plus one sales window of cover, with the configured reorder quantity
as a minimum.

## Screenshots

[⌊One screen for what is about to run out: every product and variation below its
own low-stock threshold, with days of cover from real sales and stock you can edit
in place.⌉⌊One screen for what is about to run out: every product and variation 
below its own low-stock threshold, with days of cover from real sales and stock 
you can edit in place.⌉[

One screen for what is about to run out: every product and variation below its own
low-stock threshold, with days of cover from real sales and stock you can edit in
place.

[⌊Bulk stock actions on the rows you select - set, increase or decrease after a 
delivery, in one go.⌉⌊Bulk stock actions on the rows you select - set, increase 
or decrease after a delivery, in one go.⌉[

Bulk stock actions on the rows you select – set, increase or decrease after a delivery,
in one go.

[⌊The CSV import previews every change before it writes: before, after and delta
per matched SKU, plus the SKUs it could not match. Nothing is saved until you confirm.⌉⌊
The CSV import previews every change before it writes: before, after and delta per
matched SKU, plus the SKUs it could not match. Nothing is saved until you confirm
.⌉[

The CSV import previews every change before it writes: before, after and delta per
matched SKU, plus the SKUs it could not match. Nothing is saved until you confirm.

[⌊A dashboard widget counting what is below threshold, linking straight into the
filtered report.⌉⌊A dashboard widget counting what is below threshold, linking straight
into the filtered report.⌉[

A dashboard widget counting what is below threshold, linking straight into the filtered
report.

## Installation

 1. Install and activate WooCommerce first. This plugin does nothing without it.
 2. Upload the plugin through Plugins > Add New, or copy the folder to `wp-content/
    plugins/`.
 3. Activate it, then open **WooCommerce > Low Stock**.
 4. Optional: set the rows per page, the days-of-cover highlight level and the sales
    cache window on the Settings tab. Use Screen Options on the report to set your 
    own rows per page.

Any user with the `manage_woocommerce` capability (shop managers and administrators
by default) can use the screen.

## FAQ

### Does this work with variations?

Yes. Variations are listed as their own rows with their parent’s name above them,
and they can be edited inline and in bulk exactly like simple products. Variation
stock is written through WooCommerce CRUD, so WooCommerce recalculates the parent’s
stock status itself.

### Where does the days-of-cover number come from?

It is units sold over the last 30 days, taken from the line items of your completed
and processing orders, divided into the stock you have now. If an item sold 60 units
in 30 days and you hold 30, it shows 15 days. Items with no sales in the window 
show a dash. The figure is cached for 12 hours by default and rebuilt daily in the
background.

### Will the CSV import overwrite my stock by accident?

No. Uploading a file writes nothing. You get a preview table of every row it matched
by SKU, showing the current value, the new value and the difference, plus a list
of SKUs it could not match and rows it could not read. Stock is written only after
you confirm, and each row’s result is reported back.

### Why did the stock status I set change back?

Because WooCommerce decides the stock status of an item that tracks stock from its
quantity. The plugin saves what you asked for, reads the product back and shows 
you the value WooCommerce actually stored, rather than pretending the change stuck.

### Does it add database tables or send data anywhere?

No custom tables are added. The free edition uses WooCommerce product fields and
prefixed options and transients. Pro also stores private stock movement posts and
supplier product metadata. Digest emails are off by default and go only to the recipients
you configure. The Freemius paid edition connects to Freemius for licensing; the
free edition contains no licensing SDK.

### Is it compatible with High-Performance Order Storage?

Yes. The plugin declares HPOS compatibility and reads orders only through `wc_get_orders()`,
so the sales figures work whether your store keeps orders in the post tables or 
in the custom order tables.

### Can I change which order statuses count as a sale, or the length of the window?

Yes, with the `nwlsr_velocity_order_statuses` and `nwlsr_velocity_window_days` filters.
The defaults are completed and processing orders over 30 days.

### What happens to my data when I uninstall the plugin?

Its own options, transients, cached values, user preferences and scheduled jobs 
are removed. The paid edition also removes its movement history and supplier metadata.
WooCommerce stock quantities and products are preserved.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“NovaWorks Low Stock Report for WooCommerce” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ jordennabbe ](https://profiles.wordpress.org/jordennabbe/)

[Translate “NovaWorks Low Stock Report for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/novaworks-low-stock-report-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/novaworks-low-stock-report-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/novaworks-low-stock-report-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/novaworks-low-stock-report-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/novaworks-low-stock-report-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.0

 * The Upgrade tab and this readme now list only the four features the Pro version
   has: stock movement history with CSV export, a scheduled low stock digest email,
   supplier and reorder details with a purchase order CSV, and a restock forecast.
 * The free report, inline and bulk stock editing, and the CSV export and import
   work as before. The free plugin still adds no database tables and makes no external
   requests.
 * For developers: a new action before each stock write that names where it came
   from (inline edit, bulk action or CSV import), new actions after each stock write,
   on deactivation and on uninstall, a filter that supplies the values of added 
   report columns, and places to add controls to the report and Settings screens.
 * The Pro version is a separate download. This free plugin contains none of its
   code and no licensing library.
 * Declared compatible with WooCommerce 11.2.1 and tested up to WordPress 7.1.

#### 1.0.3

 * Maintenance release with no functional changes. Version 1.0.2 was never published,
   so this build takes its place; the 1.0.2 entry below lists what changed since
   1.0.1.

#### 1.0.2

 * New name: NovaWorks Low Stock Report for WooCommerce. The text domain, the main
   file, the admin page address (admin.php?page=novaworks-low-stock-report-for-woocommerce)
   and the code prefix (nwlsr_) follow the new name.
 * The low stock counter in the toolbar now appears only in the admin area, never
   on the storefront, and only while at least one item is at or below its threshold.
 * The CSV export is now named novaworks-low-stock-YYYY-MM-DD.csv.

#### 1.0.1

 * The notice shown when WooCommerce is missing now appears only on the Plugins 
   screen and the Dashboard, not on every admin screen.
 * Removed the paid-version link from the plugin’s row on the Plugins screen. The
   Upgrade tab and the hint beside the digest setting are the only places the paid
   version is mentioned.
 * Readme: support contact filled in.

#### 1.0.0

 * First release.
 * Low stock report of products and variations with the effective low stock threshold
   and its source.
 * Days of cover from the last 30 days of completed and processing orders, cached
   and rebuilt daily.
 * Inline editing of stock quantity and stock status through WooCommerce CRUD, with
   an explicit per-row result.
 * Bulk actions: set, increase and decrease stock, set stock status, turn stock 
   management on or off.
 * CSV export of the whole filtered view and CSV import by SKU with a dry-run preview
   and a separate confirmation.
 * Dashboard widget and admin bar counter for the number of items at or below their
   threshold.
 * HPOS compatible, no custom tables, no external requests.

## Meta

 *  Version **1.1.0**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 * Tag
 * [Woocommerce Stock Management](https://wordpress.org/plugins/tags/woocommerce-stock-management/)
 *  [Advanced View](https://wordpress.org/plugins/novaworks-low-stock-report-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/novaworks-low-stock-report-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/novaworks-low-stock-report-for-woocommerce/reviews/)

## Contributors

 *   [ jordennabbe ](https://profiles.wordpress.org/jordennabbe/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/novaworks-low-stock-report-for-woocommerce/)