Description
Product Performance Score for WooCommerce helps a store owner see which products are performing better inside the current store and which products deserve review.
The score uses one fixed formula at every stage:
- 20% unique product views.
- 30% carts after a product detail view in the same session.
- 50% paid order performance.
Every product has its own tracking start date and moves through four data stages:
- Initial stage: 1 to 6 complete days. A score can appear after at least one valid view, with a clear limited-data warning.
- Building stage: 7 to 13 complete days, requiring at least 10 valid views.
- Stabilizing stage: 14 to 20 complete days, requiring at least 20 valid views.
- Standard stage: 21 or more complete days, using the latest 21 complete days and requiring at least 30 valid views.
The publication day is not a complete day. Before the first complete day finishes, the product shows a waiting status rather than a score.
Early, building, stabilizing, and standard scores all use the same PPS formula. Only the amount of observed data and the comparison window change. A new product published long after plugin installation still starts from its own initial stage.
All H, I, and S ranks use the same full, same-window candidate set. Products with zero carts after view receive I = 0, and products with zero paid orders receive S = 0. The plugin does not create separate non-zero ranking pools.
Only current standard-stage scores enter the store average. The store average is a simple arithmetic mean and does not remove the highest or lowest products.
The plugin supports WooCommerce simple products and variable parent products. Variation views, carts, and orders are attributed to the parent product.
The Score column includes a WordPress help icon. Hover the score or focus it with the keyboard to see the product’s saved scoring details without recalculating data.
Privacy
The plugin uses one short-lived first-party cookie, eezz_pps_sid, to deduplicate product views and carts inside an anonymous session. The database stores only an HMAC-SHA256 hash of that cookie value.
Product view requests also include a stable HMAC token tied to the product ID. This reduces blind or cross-site pollution of the public analytics endpoint, but it is not intended to stop an attacker who can fetch and replay a public product page.
The plugin does not store IP addresses, full user agents, names, emails, phone numbers, full browsing paths, or order IDs in its custom tables. It does not send data to third-party services.
Screenshots




Installation
- Upload the plugin ZIP from the WordPress Plugins screen.
- Activate the plugin.
- Keep WooCommerce active.
- Open Product Scores from the WordPress admin menu.
The plugin starts collecting immediately. A product can first display a score after its first complete calendar day, provided it has at least one valid view and the store has at least five comparable products in the same window.
Do not use Network Activate on WordPress Multisite. v1 should be activated per site.
v1 keeps product tracking dates when the plugin is deactivated and later reactivated. Days while the plugin is inactive are not reconstructed.
FAQ
-
Does the plugin support HPOS?
-
Yes. Orders are read through WooCommerce CRUD APIs, so the plugin declares compatibility with WooCommerce custom order tables.
-
Does the plugin score variations separately?
-
No. Variations are attributed to their variable parent product.
-
Does the plugin use revenue or profit?
-
No. v1 scores order count, not revenue, quantity, margin, inventory, or advertising attribution.
-
Are WooCommerce Subscriptions renewal orders counted?
-
Yes. A paid renewal order is treated like another paid WooCommerce order. v1 does not add special subscription exclusions.
-
How are refunds handled?
-
PPS does not analyze refunds, returns, disputes, or after-sale outcomes. If an order has a valid
date_paid, the product counts once as a paid order for that payment date. A later full or partial refund does not remove that historical payment event from PPS. -
Why can Carts after view differ from All cart sessions in a selected window?
-
Carts after view are attributed to the original unique-view date so that they remain bounded by Unique product views. All cart sessions are attributed to the actual add-to-cart date. At a rolling-window boundary, the two counters can therefore differ without indicating corrupt data.
-
Does it create charts or CSV exports?
-
No. v1 provides a simple WooCommerce admin page and a PPS column on the product list.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Product Performance Score for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Product Performance Score for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.2.6
- Preserved the last valid score when a product is paused and restored normal scoring when it becomes purchasable again.
- Added suggested privacy-policy text for the anonymous scoring cookie and short-lived session data.
- Added WooCommerce dependency metadata.
- Tightened REST token validation and scoped the anonymous cookie to the WordPress path.
- Simplified the Product Scores support link for a cleaner WordPress admin experience.
1.2.5
- Refined the Product Scores admin layout and support area.
- Improved responsive admin presentation for desktop, tablet, and mobile screens.
1.2.4
Moves Product Scores to its own WordPress admin menu and improves score-tooltip text contrast. No scoring, tracking, order, or database logic changed.
1.2.3
Adds a WordPress help icon beside product scores, simplifies score tooltips so each product state only shows relevant information, renames admin metrics for clearer session-based meaning, keeps product phase separate from paused status, and clarifies the difference between store scoring progress and each product’s own stage.
1.2.2
Adds an always-visible four-stage scoring progress rail and score-detail tooltips. Fixes pending products being omitted from In Progress counts, prevents business anomaly notes from hiding valid scores, distinguishes uncalculated values from real zero metrics, and improves Product Scores labels.
1.2.1
Simplifies paid-order handling. PPS now treats date_paid as the transaction event and does not inspect refund quantities or refund amounts. Orders remain countable after later status changes such as full or partial refunds, provided the WooCommerce order record retains its payment date.
1.2.0
Adds first-week scoring with limited-data warnings and replaces the old stage names with Initial, Building, Stabilizing, and Standard. Fixes carts-after-view date attribution, carts-after-view validation, lifecycle resets after stock recovery, phase filters, anomaly visibility in small candidate pools, subscription renewal handling, and the PHP namespace migration to EEZZPPS.
Because carts after view now belong to the original unique-view date, upgrading from a version earlier than 1.2.0 performs a one-time reset of PPS daily/session tracking and product score lifecycle data. Existing WooCommerce products and orders are not modified. Tracking restarts automatically with the corrected metric semantics.
1.1.3
Fixes lifecycle repair retry successor scheduling, schema health-lock safe mode, owner-safe repair state updates, enrollment-state migration, stale PPS meta self-healing, and uninstall coverage.
1.1.2
Fixes active-run heartbeat recovery across site timezones, generation-aware Action Scheduler dedupe, orphan retry marker recovery, install-lock takeover handling, and per-product session reset recovery.
1.1.1
Fixes retry successor scheduling, paid-order date range precision, lifecycle dirty recovery, runtime generation shutdown safety, result meta write amplification, and stricter schema validation.
1.1.0
Hardens recalculation, schema verification, cleanup retry, install locking, and product meta writes for repeat scheduled runs and concurrent workers.
1.0.0
Initial release.