GP Product history and Inventory logs

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
  1. Download the .zip file from your WooCommerce account.
  2. Go to WordPress Admin > Plugins > Add New and select Upload Plugin.
  3. Choose the file you downloaded and select Install Now.
  4. Select Activate.

More information at: Install and Activate Plugins/Extensions.

Getting started

↑ Back to top

There is nothing to set up. Logging starts as soon as the extension is active. To see it working:

  1. Edit any product that manages stock and change its stock quantity, then select Update.
  2. Go to WooCommerce > GP Product Logs.
  3. 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 top

Everything is under WooCommerce > GP Product Logs. The plugin’s navigation links to these sections:

SectionWhat it’s for
DashboardPick products and view their logs.
All logsEvery log entry for every product in one table.
Saved logsEntries you’ve saved to review later.
AnalyticsSales, revenue, stock distribution, best sellers, and low stock.
SettingsOpens WooCommerce > Settings > GP Product Logs.
HelpShortcode 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 top

Stock changes

↑ Back to top

Every 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:

SourceExample
Product editorYou change the stock quantity on the product or variation screen.
Quick Edit and bulk editYou change stock from the Products list.
New ordersA customer checks out and stock is reduced.
Cancelled ordersAn order is cancelled and stock is restored.
RefundsYou refund items with Restock refunded items checked.
Order editsYou 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 top

When 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 top

Order 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 top

Each 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 top

WooCommerce 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 top

All times are shown in your store’s timezone, set under Settings > General, the same as WooCommerce order notes.

Viewing logs

↑ Back to top

Choosing products

↑ Back to top
  1. Go to WooCommerce > GP Product Logs.
  2. 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.
  3. 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 top

The columns change with the log type:

Log typeColumns
Stock logsProduct, Date/Time, User, ID, Stock notes, Old, New
Status logsProduct, Date/Time, User, ID, Order notes, Old status, New status
Notes logsProduct, Date/Time, User, ID, Order notes
All logsEvery 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 top

Select 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 top

When 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 top

Save 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 top

Select Analytics in the plugin’s navigation.

ReportShows
30-day salesTotal items sold in the last 30 days.
30-day revenueTotal revenue in the last 30 days, in your store currency.
Low stock (1–10)Number of products with 1 to 10 in stock.
Sales trendLine chart of daily sales over the last 30 days.
Stock distributionDoughnut chart of products grouped by stock: 0, 1–10, 11–50, and 51+.
Top sellersThe 5 best-selling products.
Low stock productsTable 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 top

You 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 top

Go to WooCommerce > Settings > GP Product Logs. Make your changes and select Save changes.

SettingDescriptionDefault
Show product editor tablesShows the Stock log, Status log, and Notes log boxes on the product edit screen.On
Exclude productsSearch for products or variations to ignore. Excluded products are not logged and don’t show the product editor boxes.None
Dashboard widgetsShows 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 top

The 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.

EmailSent whenDefault subject
GP stock changeA product’s stock changes[{site_title}] {product_name} stock: {old_qty} → {new_qty}
GP order statusAn order’s status changes[{site_title}] Order #{order_number} status: {old_status} → {new_status}
GP order notesA new order note is added[{site_title}] Note on order #{order_number}

Turning on an email

↑ Back to top
  1. Go to WooCommerce > Settings > Emails.
  2. Select Manage next to the GP email you want.
  3. Check Enable this email notification.
  4. Optionally, set the Recipients (comma separated), Subject, Email heading, and email type.
  5. 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
PlaceholderAvailable inReplaced with
{site_title}All emailsYour site title
{product_name}GP stock changeProduct or variation name
{old_qty}GP stock changeQuantity before the change
{new_qty}GP stock changeQuantity after the change
{order_number}GP order status, GP order notesOrder number
{old_status}GP order statusStatus before the change
{new_status}GP order statusStatus after the change

Shortcodes

↑ Back to top

Add analytics to any page or post, for example a private reporting page for your team.

ShortcodeShows
[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
  1. Edit a page or post.
  2. Add a Shortcode block.
  3. Paste the shortcode, for example [gppl_sales_chart].
  4. 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 top

Shortcode 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
AreaRequired capabilityDefault roles
Logs screens, saved logs, analyticsmanage_woocommerceAdministrator, Shop manager
Settings tabmanage_woocommerceAdministrator, Shop manager
Shortcode outputview_woocommerce_reportsAdministrator, Shop manager

Developer reference

↑ Back to top

Filters

↑ Back to top
FilterDefaultDescription
gppl_required_capabilitymanage_woocommerceCapability needed to access the logs screens.
gppl_shortcode_capabilityview_woocommerce_reportsCapability needed to see shortcode output.
gppl_order_notes_limit5000Maximum 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 top

Override 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 fromTo
gp-inventory-logs/templates/emails/gppl-stock-log.phpyourtheme/woocommerce/emails/gppl-stock-log.php
gp-inventory-logs/templates/emails/gppl-status-log.phpyourtheme/woocommerce/emails/gppl-status-log.php
gp-inventory-logs/templates/emails/gppl-notes.phpyourtheme/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 top

All 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 top

No 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 top

Select 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 top

The 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 top

Can I see stock history from before I installed it?

↑ Back to top

No. WooCommerce doesn’t keep a stock history, so logging starts when you activate the extension.

Are refunds logged?

↑ Back to top

Yes. 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 top

No. Every stock change is logged once, whatever its source.

Can I filter logs for one product?

↑ Back to top

Yes. 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 top

It 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 top

Not 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 top

Only if you turn them on. All three emails are off by default.

Can customers see the logs?

↑ Back to top

No. 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 top

Yes. The extension is compatible with HPOS, and order links work with either storage method.

Will it slow down my site?

↑ Back to top

No. Its files only load on its own admin screens and on pages where an allowed user sees one of its shortcodes.

Changelog

↑ Back to top

See the changelog for the full version history.

Questions and support

↑ Back to top

Something 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.
Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.