Every stock and price change has an alibi.
It is Monday morning and a best-seller shows 0 in stock. The warehouse says there are 14. Was it last night’s ERP sync? An order that was cancelled? A colleague with Quick Edit? A CSV import? WooCommerce keeps no history of product changes, so the honest answer is usually “we don’t know”.
Stock Alibi records every change to the stock and prices of your products and variations together with its source, and explains it in a sentence:
Stock: 12 14. REST API request PUT /wc/v3/products/batch. Application password “SoftOne ERP”. 14 minutes after order #23, which had changed the stock from 14 to 12.
Regular price: 54 49. Changed directly in the database, sometime between 3:15 pm and 3:30 pm.
Refund #1085 of order #1083 returned the items to stock.
Most logs get orders right and file everything else under “purchase” or “third-party system”. Stock Alibi names each one:
update_post_meta) instead of using WooCommerce.When the source cannot be determined, Stock Alibi says “unknown”. It never guesses: a wrong answer is worse than an honest “we don’t know”.
Stock quantity, stock status, manage stock and backorders; regular price, sale price, sale dates and the active price; the initial values of new products. For each change: old and new value, source, reference (order number, REST route, file name, plugin), user, time, and an ID that groups everything one request changed. Variable products are recorded per variation, and a parent’s synced stock status gets the source of the variation change that caused it.
Ready for translation on translate.wordpress.org.
Stock Alibi is made for stores connected to an ERP, a POS, marketplaces or imports, and for the developers and agencies who support them. It answers “is the bridge wrong, or was it the import on Tuesday?” with evidence instead of opinions.
Stock Alibi only reads: it never changes products, orders or stock. At checkout it adds one small indexed query per order line and writes the request’s changes in one query at the end. In tests a four-line checkout took the same time with and without it. The database check runs in Action Scheduler, in batches, never on the storefront (60,000 products checked in about 9 seconds). Old changes are deleted after a retention period you choose (180 days by default).
On WordPress 6.9 and newer the history is available as five read-only abilities: explain a change, product history, search, store report and anomalies. With the WordPress MCP Adapter plugin, an AI assistant such as Claude or ChatGPT can answer “why did the stock of this SKU drop to 0 yesterday?” from the recorded facts, not from a guess. If the site has an AI provider set up in WordPress, the product screen also offers an “Explain with AI” button. Everything works without AI.
No external requests, no telemetry. The history stores user IDs and order numbers, never names, addresses or payment details. Stock Alibi adds a suggested text to your privacy policy and works with WordPress’s personal data export and erasure tools.
stock_alibi_resolve_source filter, so its changes show as “SoftOne” instead of “REST API”.stock_alibi_events_recorded action.