GP Product History and Inventory Logs keeps a complete history of what happens to your WooCommerce products. It records every stock change, order status update, and order note, with the old and new values, the user who made the change, the related order, and the exact time.
Use it to trace stock discrepancies, see what each team member changed, review an order’s effect on inventory, and keep an eye on sales and low stock from one place.
Features
↑ Back to top- Complete stock tracking: Every stock change is logged once, with old and new quantity, user, and related order.
- Variable product support: Stock is logged per variation, and variations are named in full everywhere.
- Order status tracking: Status changes are recorded for the products in each order.
- Order notes: Shown alongside the stock and status history.
- Saved logs: Keep important entries in a separate list to review later.
- Analytics: 30-day sales and revenue, sales trend, stock distribution, best sellers, and low stock.
- Product editor boxes: See a product’s history right on its edit screen.
- Dashboard widgets: Optional analytics widgets on the WordPress Dashboard.
- Optional emails: Stock change, order status, and order note emails.
- Shortcodes: Seven shortcodes for analytics cards, charts, and tables, visible only to authorized users.
- Product exclusions: Skip logging for products you don’t need to track.
Requirements
↑ Back to top- WordPress 6.2 or higher
- WooCommerce 8.0 or higher, installed, and active
- PHP 8.0 or higher
The extension is compatible with High-Performance Order Storage (HPOS).
Installation
↑ Back to top- Download the
.zipfile from your WooCommerce account. - Go to WordPress Admin > Plugins > Add New and select Upload Plugin.
- Choose the file you downloaded and select Install Now.
- Select Activate.
More information at: Install and Activate Plugins/Extensions.
Getting started
↑ Back to topThere is nothing to set up. Logging starts as soon as the extension is active. To see it working:
- Edit any product that manages stock and change its stock quantity, then select Update.
- Go to WooCommerce > GP Product Logs.
- Select the product and select View logs.
You’ll see a new entry with the old and new quantity and your user name.
Note: Only changes made after activation are logged. Earlier history can’t be recovered.
Admin screens
↑ Back to topEverything is under WooCommerce > GP Product Logs. The plugin’s navigation links to these sections:
| Section | What it’s for |
|---|---|
| Dashboard | Pick products and view their logs. |
| All logs | Every log entry for every product in one table. |
| Saved logs | Entries you’ve saved to review later. |
| Analytics | Sales, revenue, stock distribution, best sellers, and low stock. |
| Settings | Opens WooCommerce > Settings > GP Product Logs. |
| Help | Shortcode list with copy buttons, and frequently asked questions. |
You can also open the settings from the Settings link under the extension’s name on the Plugins screen.
What gets logged
↑ Back to topStock changes
↑ Back to topEvery change to a product’s stock quantity is logged once. The extension reads the stock just before WooCommerce saves the new value, so the old and new quantities are always correct. Stock changes come from:
| Source | Example |
|---|---|
| Product editor | You change the stock quantity on the product or variation screen. |
| Quick Edit and bulk edit | You change stock from the Products list. |
| New orders | A customer checks out and stock is reduced. |
| Cancelled orders | An order is cancelled and stock is restored. |
| Refunds | You refund items with Restock refunded items checked. |
| Order edits | You add, change, or remove items on an existing order. |
Each stock entry includes the old quantity, the new quantity, the user who made the change, the related order (when there is one), and any WooCommerce stock note for that change.
Order status changes
↑ Back to topWhen an order’s status changes, for example from Processing to Completed, the old and new status are logged. Each change appears once, even when the order contains several products.
Order notes
↑ Back to topOrder notes, including WooCommerce’s own stock and email notes, are shown alongside the product history. WooCommerce’s “Order status changed” note is left out only when the extension’s own status entry already records that change, so you don’t see it twice.
Who made the change
↑ Back to topEach entry records the user who made the change. Changes that happen automatically, such as a customer checkout or a scheduled task, are recorded as System or WooCommerce.
Variable products
↑ Back to topWooCommerce tracks stock per variation, so the extension does too. When you select a variable product, the logs include every variation. Variations are named in full, with the product name, chosen attributes, and SKU, for example:
T-shirt – Color: Blue, Size: L (SKU: TS-BL)
The full name is used in the logs table, saved logs, stock emails, and the product editor’s Stock log box.
Timezone
↑ Back to topAll times are shown in your store’s timezone, set under Settings > General, the same as WooCommerce order notes.
Viewing logs
↑ Back to topChoosing products
↑ Back to top- Go to WooCommerce > GP Product Logs.
- Use Search products to find products, and check the ones you want. To include everything, check Select all products. This selects products on every page, not just the one you’re viewing.
- Select View logs.
To pick different products later, select Change products above the logs table.
Filtering and searching
↑ Back to top- Log type: Choose All logs, Stock logs, Status logs, or Notes logs, then select Apply.
- Search: Type in Search logs to narrow the results, for example by order number, user, or note text.
- Rows per page: Show 5, 10, 20, 30, 50, or 100 rows per page. The default is 20.
The summary above the table shows how many logs are displayed out of the total.
Table columns
↑ Back to topThe columns change with the log type:
| Log type | Columns |
|---|---|
| Stock logs | Product, Date/Time, User, ID, Stock notes, Old, New |
| Status logs | Product, Date/Time, User, ID, Order notes, Old status, New status |
| Notes logs | Product, Date/Time, User, ID, Order notes |
| All logs | Every column above, plus Notes |
Fields that don’t apply to an entry show N/A. For example, status entries don’t have stock quantities. Order numbers link to the order. If an order or product was deleted, the entry shows (Deleted order) or (No product).
When the table is wider than the screen, a second scrollbar appears above it so you can scroll sideways without going to the bottom.
All logs
↑ Back to topSelect All logs in the plugin’s navigation to see every entry for every product, without choosing products first. The same filters, search, and paging are available.
Product editor boxes
↑ Back to topWhen you edit a product, three boxes show its history without leaving the page:
- Stock log: Stock changes for the product. For variable products, it includes every variation, with a Variation column.
- Status log: Status changes of orders that contain the product.
- Notes log: Notes from orders that contain the product.
To hide these boxes, turn off Show product editor tables in the settings. You can also hide them for yourself only from Screen Options at the top of the product screen.
Saved logs
↑ Back to topSave entries you want to come back to, such as a stock discrepancy you’re investigating.
Saving entries
↑ Back to top- In the logs table, select Save in the Action column of a row.
- To save several at once, check the rows (or Select all rows) and select Save selected.
Reviewing saved entries
↑ Back to top- Select Saved logs in the plugin’s navigation, or Open saved logs from the logs table.
- Filter by product, and by type: All types, Stock, Status, or Notes.
- Select Unsave on a row, or Unsave selected, to remove entries from the list. The original log entry is not deleted.
Saved logs are shared by all users who can access the extension.
Analytics
↑ Back to topSelect Analytics in the plugin’s navigation.
| Report | Shows |
|---|---|
| 30-day sales | Total items sold in the last 30 days. |
| 30-day revenue | Total revenue in the last 30 days, in your store currency. |
| Low stock (1–10) | Number of products with 1 to 10 in stock. |
| Sales trend | Line chart of daily sales over the last 30 days. |
| Stock distribution | Doughnut chart of products grouped by stock: 0, 1–10, 11–50, and 51+. |
| Top sellers | The 5 best-selling products. |
| Low stock products | Table of every product with 1 to 10 in stock. |
Stock reports include products and variations that have Manage stock turned on.
Dashboard widgets
↑ Back to topYou can show four analytics widgets on the WordPress Dashboard:
- GP Product Logs – 30-day sales
- GP Product Logs – 30-day revenue
- GP Product Logs – Top sellers
- GP Product Logs – Low stock
They’re off by default. Turn them on with Dashboard widgets in the settings. The widgets link to the Analytics page for more detail.
Settings
↑ Back to topGo to WooCommerce > Settings > GP Product Logs. Make your changes and select Save changes.
| Setting | Description | Default |
|---|---|---|
| Show product editor tables | Shows the Stock log, Status log, and Notes log boxes on the product edit screen. | On |
| Exclude products | Search for products or variations to ignore. Excluded products are not logged and don’t show the product editor boxes. | None |
| Dashboard widgets | Shows the four analytics widgets on the WordPress Dashboard. | Off |
The top of the settings tab also links to the other GP Product Logs sections.
Email notifications
↑ Back to topThe extension adds three emails under WooCommerce > Settings > Emails. All three are off by default, so no emails are sent until you enable one. Everything is logged either way.
| Sent when | Default subject | |
|---|---|---|
| GP stock change | A product’s stock changes | [{site_title}] {product_name} stock: {old_qty} → {new_qty} |
| GP order status | An order’s status changes | [{site_title}] Order #{order_number} status: {old_status} → {new_status} |
| GP order notes | A new order note is added | [{site_title}] Note on order #{order_number} |
Turning on an email
↑ Back to top- Go to WooCommerce > Settings > Emails.
- Select Manage next to the GP email you want.
- Check Enable this email notification.
- Optionally, set the Recipients (comma separated), Subject, Email heading, and email type.
- Select Save changes.
Recipients default to the site admin email.
What each email contains
↑ Back to top- GP stock change: Product name and ID, old quantity, new quantity, the difference, who made the change, the related order, and a link to edit the product.
- GP order status: Order number and the old and new status.
- GP order notes: Order number and the note text.
WooCommerce’s automated notes, such as “Stock hold” notes, status change notes, and “Email sent” notes, don’t trigger the GP order notes email.
Subject placeholders
↑ Back to top| Placeholder | Available in | Replaced with |
|---|---|---|
{site_title} | All emails | Your site title |
{product_name} | GP stock change | Product or variation name |
{old_qty} | GP stock change | Quantity before the change |
{new_qty} | GP stock change | Quantity after the change |
{order_number} | GP order status, GP order notes | Order number |
{old_status} | GP order status | Status before the change |
{new_status} | GP order status | Status after the change |
Shortcodes
↑ Back to topAdd analytics to any page or post, for example a private reporting page for your team.
| Shortcode | Shows |
|---|---|
[gppl_30day_sales] | Total items sold in the last 30 days |
[gppl_30day_revenue] | Total revenue in the last 30 days |
[gppl_low_stock] | Number of products with 1–10 in stock |
[gppl_sales_chart] | Sales trend line chart for the last 30 days |
[gppl_stock_chart] | Stock distribution doughnut chart |
[gppl_top_sellers] | Top 5 best-selling products |
[gppl_low_stock_table] | Table of low stock products |
Adding a shortcode
↑ Back to top- Edit a page or post.
- Add a Shortcode block.
- Paste the shortcode, for example
[gppl_sales_chart]. - Publish or update the page.
You can combine several shortcodes on one page to build a simple reporting dashboard. The Help section in the plugin’s navigation lists every shortcode with a copy button.
Who can see shortcode output
↑ Back to topShortcode output is only shown to logged-in users with the view_woocommerce_reports capability. By default, that’s administrators and shop managers. Visitors and other roles see nothing, even on a published page, so your sales figures stay private.
The chart library and shortcode styles only load on pages where a shortcode is shown to an allowed user.
Permissions
↑ Back to top| Area | Required capability | Default roles |
|---|---|---|
| Logs screens, saved logs, analytics | manage_woocommerce | Administrator, Shop manager |
| Settings tab | manage_woocommerce | Administrator, Shop manager |
| Shortcode output | view_woocommerce_reports | Administrator, Shop manager |
Developer reference
↑ Back to topFilters
↑ Back to top| Filter | Default | Description |
|---|---|---|
gppl_required_capability | manage_woocommerce | Capability needed to access the logs screens. |
gppl_shortcode_capability | view_woocommerce_reports | Capability needed to see shortcode output. |
gppl_order_notes_limit | 5000 | Maximum number of recent order notes read into the logs. |
Add these to your child theme’s functions.php file or a code snippets plugin. Example:
// Let editors with the "edit_shop_orders" capability view the logs.
add_filter( 'gppl_required_capability', function () {
return 'edit_shop_orders';
} );
// Show shortcode output to administrators only.
add_filter( 'gppl_shortcode_capability', function () {
return 'manage_options';
} );
// Read up to 10,000 recent order notes.
add_filter( 'gppl_order_notes_limit', function () {
return 10000;
} );
Email template overrides
↑ Back to topOverride the email templates like any WooCommerce email template. Copy the file from the extension into your theme, keeping the same path inside a woocommerce folder:
| Copy from | To |
|---|---|
gp-inventory-logs/templates/emails/gppl-stock-log.php | yourtheme/woocommerce/emails/gppl-stock-log.php |
gp-inventory-logs/templates/emails/gppl-status-log.php | yourtheme/woocommerce/emails/gppl-status-log.php |
gp-inventory-logs/templates/emails/gppl-notes.php | yourtheme/woocommerce/emails/gppl-notes.php |
Plain text versions are in templates/emails/plain/ and are overridden the same way, in yourtheme/woocommerce/emails/plain/.
Performance
↑ Back to top- The extension’s styles and scripts only load on its own admin screens, and on pages where a shortcode is shown to an allowed user.
- Nothing is added to your store’s front end for customers.
- Use Exclude products to skip products you don’t need to track.
Translation
↑ Back to topAll text in the extension is translatable. The text domain is gp-inventory-logs, and a .pot file is included in the languages folder. You can translate it with a tool like Loco Translate.
Deactivating and uninstalling
↑ Back to top- Deactivating stops logging. Your logs, saved logs, and settings are kept, and logging continues when you activate again. Changes made while the extension is inactive are not logged.
- Deleting the extension from the Plugins screen removes its settings, saved logs, and stored stock history. On multisite, this is done for every site in the network. WooCommerce orders and order notes are not affected.
Troubleshooting
↑ Back to topNo logs are showing
↑ Back to top- Logs only appear after stock changes, status changes, or order notes happen after activation.
- Check that the product has Manage stock turned on. Products without stock management have no stock changes to log.
- Check that the product isn’t in Exclude products in the settings.
- Make sure the log type filter isn’t hiding the entries. Choose All logs and select Apply.
A variation’s history is missing
↑ Back to topSelect the parent variable product, not a single variation. The logs then include every variation. Also check that stock is managed on the variation, or on the parent product.
Emails are not being sent
↑ Back to top- The emails are off by default. Enable them under WooCommerce > Settings > Emails.
- Check the Recipients field.
- If other WooCommerce emails aren’t arriving either, the problem is your site’s mail setup. See WooCommerce email FAQ.
A shortcode shows nothing
↑ Back to top- Log in as an administrator or shop manager. Other users and visitors don’t see shortcode output.
- Check that WooCommerce is active.
- Check the spelling of the shortcode. Copy it from the Help section to be sure.
A user can’t open GP Product Logs
↑ Back to topThe user needs the manage_woocommerce capability. Give them the Shop manager role, or change the capability with the gppl_required_capability filter.
Frequently asked questions
↑ Back to topCan I see stock history from before I installed it?
↑ Back to topNo. WooCommerce doesn’t keep a stock history, so logging starts when you activate the extension.
Are refunds logged?
↑ Back to topYes. When you refund items with Restock refunded items checked, the stock increase is logged with the order number.
Is a Quick Edit change logged twice?
↑ Back to topNo. Every stock change is logged once, whatever its source.
Can I filter logs for one product?
↑ Back to topYes. Select just that product on the logs screen, then use the log type filter and search to narrow the results further. You can also open the product’s edit screen to see its history.
Why is the saved logs list empty?
↑ Back to topIt only contains entries you save yourself. Use Save on a row, or Save selected, in the logs table.
Why do I see N/A in some columns?
↑ Back to topNot every log type has every field. For example, status entries don’t include stock quantities, so those columns show N/A.
Does the extension send emails?
↑ Back to topOnly if you turn them on. All three emails are off by default.
Can customers see the logs?
↑ Back to topNo. Logs are only available in the admin to users with the required capability, and shortcode output is hidden from visitors.
Does it work with High-Performance Order Storage?
↑ Back to topYes. The extension is compatible with HPOS, and order links work with either storage method.
Will it slow down my site?
↑ Back to topNo. Its files only load on its own admin screens and on pages where an allowed user sees one of its shortcodes.
Changelog
↑ Back to topSee the changelog for the full version history.
Questions and support
↑ Back to topSomething missing from this documentation? Do you still have questions and need assistance?
- Have a question before you buy this extension? Please fill out this pre-sales form. Please include as much detail as possible.
- Already purchased and need some assistance? Get in touch with a Happiness Engineer via the WooCommerce.com Support page and choose this extension name from the “I need help with” dropdown.