=== AVAR ProductPulse ===
Contributors: pluptak
Tags: woocommerce, analytics, product analytics, ecommerce analytics, sales analytics
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 8.1
Stable tag: 1.1.97
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

See which WooCommerce products get attention, turn views into sales, and need action — with analytics stored on your own site.

== Description ==

Stop guessing which products are working.

AVAR ProductPulse gives WooCommerce store owners a clear view of what shoppers do with individual products — which products they view, add to cart, buy, and how much revenue those purchases generate.

More importantly, ProductPulse helps turn those numbers into useful signals.

Instead of opening WooCommerce reports and trying to connect the dots yourself, you can quickly spot products that attract attention but do not sell, products that convert well despite low traffic, and products that simply need more data before you make a decision.

No Google Analytics account is required. Product analytics are stored locally in your WordPress database.

= What can ProductPulse tell you? =

ProductPulse helps answer questions such as:

* Which products receive the most attention?
* Which products are added to cart most often?
* Which products actually generate purchases and revenue?
* Which products get plenty of views but no sales?
* Which products sell well despite relatively low traffic?
* Which products may have a price, content, image or offer problem?
* Which products do not yet have enough data to judge?
* How is product activity changing over time?

The goal is simple: help you decide where to focus your attention in your WooCommerce store.

= Product analytics dashboard =

Get a quick overview of your store with:

* Product views
* Add-to-cart actions
* Purchases from paid orders
* Product revenue
* View → purchase rate
* Daily product activity trend
* Top-performing products

Choose between:

* Today
* Yesterday
* Last 7 days
* Last 30 days
* This month
* Last month
* Custom date ranges up to 366 days

CSV export is available directly from the dashboard.

= Clear about how much data it has =

ProductPulse starts recording shopper activity on the day it is activated. On a new installation the Dashboard shows a data-collection panel: whether tracking is working (first product view, first add-to-cart, first purchase), how many days, views and purchases have been recorded so far, and what to check if nothing arrives.

Until there is enough activity, the panel says that the figures are early and can still change a lot from day to day. It disappears on its own once there is enough data.

= Product-by-product performance =

The Products report puts important metrics next to each product so you can compare performance without opening products one by one.

See:

* Views
* Add-to-cart actions
* Purchases
* Revenue
* View → cart rate
* View → purchase rate

The Products report can be shown for today, the last 7 days, the last 30 days or the last 90 days.

ProductPulse also adds simple status signals such as:

**No data**

No views or purchases were recorded for the product in the selected period.

**Needs review**

The product received meaningful traffic but no purchases.

**Opportunity**

The product converts well despite relatively low traffic and may deserve more visibility.

**Low sales for the traffic**

The product receives traffic but purchases remain unusually low.

**Sales without views**

The product was purchased without a recorded product-page view, for example after being added directly from a shop, category or search page.

**Low data**

There is not yet enough activity to make a useful judgement.

**No clear issue**

No obvious problem was detected for the selected period.

These are deliberately simple signals — ProductPulse Free does not pretend that a few numbers can explain every product problem.

= Basic product opportunities =

The Opportunities screen automatically looks for two useful patterns over the last 30 days:

**High interest, low sales**

Products with at least 20 recorded views but no purchases.

These products may deserve a review of:

* price,
* product images,
* description,
* value proposition,
* shipping or other purchase friction.

**Low traffic, high conversion**

Products with 5–19 views, at least 2 purchases and a view-to-purchase rate of at least 20%.

These products may already sell well when shoppers discover them and could benefit from more visibility.

ProductPulse explains why each opportunity was detected instead of showing an unexplained score.

= WooCommerce revenue tracking =

ProductPulse tracks purchases from paid WooCommerce orders and keeps product revenue connected to the products that generated it.

The analytics layer also accounts for WooCommerce order lifecycle changes such as refunds and relevant order updates, so reports are not based only on the first state in which an order was recorded.

ProductPulse supports both:

* WooCommerce HPOS
* Classic WordPress order storage

= Multi-currency friendly =

ProductPulse does not silently add different currencies together.

If your store contains analytics in multiple currencies:

* each currency remains separate,
* Dashboard and Products reports show one selected currency at a time,
* the active currency is clearly labelled,
* every detected currency can be selected.

Revenue is shown in the currency it was recorded in, even after you change the store currency. Older revenue recorded without a currency is pointed out on the screen: on a store with more than one currency it is left out of the per-currency figures instead of being added to a currency it may not belong to.

ProductPulse does not perform currency conversion.

= Local analytics and privacy controls =

Your ProductPulse analytics data is stored in your own WordPress database and is not sent to third parties. What the bundled Freemius SDK sends, and when, is described under External services.

The analytics tables do not store customer names, e-mail addresses or IP addresses.

To tell visits apart, ProductPulse may set two first-party cookies on storefront pages: avar_pp_vid (a random visitor identifier, kept for one year) and avar_pp_sid (a random session identifier, deleted when the browser is closed, used only when no WooCommerce session or customer account can be used instead). They are not set on REST API requests.

You can:

* Enable or disable analytics tracking
* Ignore store managers and administrators
* Optionally ignore all logged-in users
* Control raw-event retention
* Export daily aggregate data to CSV (the latest 5,000 daily rows)
* Use the WordPress personal-data exporter and eraser
* Choose whether ProductPulse data should be deleted when the plugin is uninstalled

The default raw-event retention period is 30 days. Longer-lived daily aggregates are used for reporting.

ProductPulse also adds suggested text for your privacy policy under Settings → Privacy → Policy Guide. It describes what is recorded, names both cookies and says how long the data is kept.

A filter is also available for consent-management integrations:

`avar_productpulse/should_track_current_request`

Returning `false` prevents ProductPulse from creating visitor/session identifiers and recording visitor-behaviour events for that request.

= Designed to stay useful as data grows =

ProductPulse does not build every report by repeatedly scanning the complete event history.

Raw activity is processed into daily aggregates in the background using WordPress scheduling, reducing the amount of work required to display reports as analytics data grows.

Data retention is configurable so stores can choose a balance appropriate for their traffic and hosting environment.

= CSV exports =

ProductPulse includes CSV exports for further analysis.

Depending on the screen, exported data can include:

* Date
* Product ID
* Variation ID
* Views
* Unique views
* Add-to-cart actions
* Purchases
* Quantity sold
* Revenue
* Revenue currency

Financial values retain their recorded currency.

= Built-in diagnostics =

Not seeing the numbers you expect?

The Settings screen includes read-only diagnostics that help confirm whether:

* Tracking is enabled
* Analytics database tables are available
* Events are being recorded
* Aggregation is working
* The current administrator is excluded from tracking

Diagnostic information can be copied when you need support.

= What is included in ProductPulse Free? =

ProductPulse Free is a standalone WooCommerce product analytics plugin.

It includes:

* Product activity tracking
* Dashboard KPIs
* Daily activity trends
* Data-collection progress for new installations
* Product-level analytics
* Basic product status signals
* Basic product opportunity detection
* Date-range filtering
* Multi-currency reporting
* CSV exports
* Data retention controls
* Privacy tools and suggested privacy-policy text
* Diagnostics
* HPOS compatibility
* Multisite support

No paid license is required to use the Free analytics features.

= Want deeper WooCommerce insights? =

A separate paid edition, AVAR ProductPulse Pro, is available in two plans.

**Pro** adds:

* Prioritized sales opportunities for your products, each with an explanation and a suggested next step
* Abandoned-cart recovery e-mails, with an optional recovery coupon
* Pending-payment reminders
* Back-in-stock and price-drop alerts
* Search Demand analytics: the most searched terms, searches that return no results and searches that lead to purchases
* A weekly report e-mail
* Editable e-mail templates and an e-mail log

**Growth** adds everything in Pro, plus:

* Search autocomplete, synonyms, redirects, fallback products, merchandising, search quality scores and no-result recovery opt-ins
* Order bumps, in-cart offers and a free-shipping progress hint
* Cross-sell, upsell and bundle suggestions, and product recommendations on product pages
* Advanced recovery coupons
* Reorder and win-back reminders
* Customer segments
* Cost of goods, margin and profit per product
* A white-label weekly report

The paid edition is distributed separately through Freemius. ProductPulse Free does not contain the paid implementation code.

== External services ==

= Freemius =

AVAR ProductPulse uses the Freemius SDK (https://freemius.com/) for licensing, account management, purchases and premium updates, and for optional usage data.

* During normal use, nothing is sent to Freemius unless an administrator clicks "Allow & Continue" on the opt-in screen. Skipping the opt-in sends nothing. The only exceptions are the Freemius pages and the deactivation form described below.
* After opt-in, Freemius receives the site URL and title, the WordPress, PHP and plugin versions, the site language, the administrator's name and e-mail address, and events such as activation, deactivation, uninstall and version updates. If the administrator also allows it, Freemius receives the list of active plugins and themes.
* When the plugin is deactivated, a form asks for an optional reason. "Skip & Deactivate" sends nothing. A reason you submit is sent to Freemius when the plugin is uninstalled. On a site that has not opted in, it is sent anonymously only if you tick "Anonymous feedback"; if that box is left unticked, the site is registered with Freemius at that point and the details listed above are sent with the reason.
* The Pricing and Account pages are shown inside your dashboard and load plan and licence details from api.freemius.com when you open them. Checkout opens on checkout.freemius.com, and links to the Freemius customer portal lead to users.freemius.com.
* With a paid license, the license is checked and premium updates are downloaded from api.freemius.com.
* ProductPulse analytics, WooCommerce orders, customer records and visitor behaviour are never sent to Freemius.

Terms of Service: https://freemius.com/terms/
Privacy Policy: https://freemius.com/privacy/
SDK source: https://github.com/Freemius/wordpress-sdk

== Installation ==

1. Install and activate AVAR ProductPulse.
2. Make sure WooCommerce 8.0 or later is active.
3. Open ProductPulse → Dashboard.
4. ProductPulse starts collecting product activity automatically.
5. Visit ProductPulse → Settings to review tracking, retention and privacy options.
6. Give it some time: the reports become meaningful once shoppers have used the store for a while, and the Dashboard tells you when there is enough data.

On a new installation, you can verify tracking by visiting a product as a shopper, adding it to the cart and completing a test order. Store managers and administrators are not counted by default, so use a private browser window for the test.

== Frequently Asked Questions ==

= What does ProductPulse track? =

The Free edition tracks product-page views, add-to-cart actions and purchases from paid WooCommerce orders.

These events are used to calculate product activity, revenue and simple product-performance signals.

= Why does the Dashboard say ProductPulse is still collecting data? =

ProductPulse analyses the activity it records in your store from the moment tracking begins. It does not import older orders or visits, so everything it shows starts on the day tracking began.

Depending on your traffic and number of orders, collecting enough data for reliable figures takes from about a week to a few weeks. Until then the Dashboard says so, and the notice disappears on its own once enough activity has been recorded.

= Do I need Google Analytics? =

No.

ProductPulse works independently and stores its analytics in your WordPress database.

You can use it alongside another analytics solution, but no external analytics account is required.

= Does ProductPulse send my shop analytics to an external analytics service? =

No.

Product analytics are stored locally on your site.

The plugin bundles the Freemius SDK for licensing, account management and optional usage data. Connecting to Freemius is optional for the Free edition and can be skipped. See External services for what Freemius receives if you opt in.

Your ProductPulse shop analytics are not sent to Freemius.

= Does ProductPulse use cookies? =

Yes, up to two first-party cookies: avar_pp_vid, a random visitor identifier kept for one year, and avar_pp_sid, a random session identifier deleted when the browser is closed. avar_pp_sid is set only when ProductPulse cannot use the shopper's WooCommerce session or, for a logged-in customer, an identifier derived from the account. The cookies contain only a random identifier, not a name, e-mail address or IP address.

They are set on storefront pages only, never on REST API responses. They are not set when tracking is disabled, or when the `avar_productpulse/should_track_current_request` filter returns false (for example, before a visitor gives consent).

= Does ProductPulse work with a full-page cache? =

Product views are recorded when WordPress renders the product page. A full-page cache that serves product pages without running WordPress stops those views from being counted. If the Dashboard reports no product views while your store has traffic, check your caching setup.

= Does ProductPulse work with a headless front end? =

The visitor and session cookies are set on storefront pages only. A client that uses only the REST API and never loads a storefront page is counted as a new visitor on each request.

= Are administrators included in the statistics? =

Store managers and administrators are ignored by default so your own work in the store does not unnecessarily influence product analytics.

You can change this behaviour in Settings.

= Does it support logged-in customers? =

Yes.

You can track logged-in visitors or enable the setting to ignore all logged-in users.

= Does ProductPulse support HPOS? =

Yes.

ProductPulse supports WooCommerce High-Performance Order Storage as well as classic WordPress order storage.

= Does it support multiple currencies? =

Yes.

Revenue from different currencies is kept separate. ProductPulse never silently adds EUR, USD or other currencies together.

When multiple currencies are present, you can select which one is displayed in Dashboard and Products reports.

ProductPulse does not perform exchange-rate conversion.

= Why can a product have purchases but no recorded product-page views? =

WooCommerce allows shoppers to add products from places such as shop archives, category pages or search results without opening the individual product page first.

ProductPulse therefore treats product views and purchases as separate events instead of inventing a product-page view that did not happen.

= Are the product statuses recommendations? =

They are simple signals designed to help you find products worth investigating.

For example, a product with many views but no purchases may deserve attention, but ProductPulse cannot know from analytics alone whether the cause is price, imagery, copy, shipping, seasonality or something else.

The Free edition intentionally uses clear, explained rules instead of an opaque score.

= How much historical data is stored? =

Raw-event retention is configurable and defaults to 30 days. Visit records are kept for one year.

ProductPulse creates longer-lived daily aggregate data for reporting, which reduces the need to keep every raw event indefinitely.

= Can I export the data? =

Yes.

Dashboard, Products and Settings include CSV export capabilities for product analytics and daily aggregate data.

= What happens if I uninstall ProductPulse? =

By default ProductPulse keeps its data.

You can enable Delete all ProductPulse data on uninstall in Settings if you want analytics tables and plugin settings removed when the plugin is uninstalled.

This option is intentionally disabled by default because deletion cannot be undone.

Only a user who can delete plugins can change this setting. On a site where file changes are disabled (DISALLOW_FILE_MODS), nobody can change it from the dashboard, and on a multisite network only a network administrator can. Other users see it read-only, with the reason, and the stored choice still applies when the plugin is uninstalled.

= Does ProductPulse work on multisite? =

Yes.

Each site keeps its own analytics data. ProductPulse also includes network-level tools for safely purging plugin data on multisite installations when required.

= Is ProductPulse Free limited by a trial period? =

No.

The Free analytics functionality does not expire and does not require a paid license.

== Screenshots ==

1. Dashboard — see product views, add-to-cart actions, purchases, revenue, view-to-purchase rate, daily activity and top products at a glance.
2. Products — the most viewed products side by side with views, cart activity, purchases, revenue and both conversion rates, plus a status such as Needs review, Sales without views or Low sales for the traffic.
3. Opportunities — products with high interest but no purchases, and products converting well on low traffic, with the rules that detect them and a suggested action for each product.
4. Data collection — in the first days after installation the Dashboard shows whether tracking works, how much has been collected so far and that its figures are still early.
5. Settings — control tracking, raw-event retention and uninstall behaviour. Analytics data is stored on your site and is not sent to any external analytics service.

== Changelog ==

= 1.1.97 =
* New: after a new installation a Dashboard panel explains that ProductPulse needs time to collect data, shows how far collection has got and what to check in the meantime, and disappears on its own once there is enough data. It replaces the "Getting started" checklist.
* New: suggested text for your site's privacy policy (Settings → Privacy → Policy Guide), naming the two first-party cookies ProductPulse uses and how long it keeps its data.
* Changed: the admin screens have a new design in the AVAR Tools colours, with a black header and the main action on each screen clearly marked. Layout and menus are unchanged.
* Changed: the plugin icon in the admin header now matches the WordPress.org icon.
* Changed: the visitor and session cookies are no longer set on REST API requests, such as those of the WooCommerce block checkout; they are set only on storefront pages.
* Changed: "Delete all ProductPulse data on uninstall" can be changed only by a user who can delete plugins. Other users see it read-only, with the reason, and saving the form keeps the current choice.
* Fixed: revenue on the Dashboard and the Products screen is shown in the currency it was recorded in, even after the store currency has been changed, and revenue recorded without a currency is pointed out.
* Fixed: on the Products screen the selected reporting period (7, 30 or 90 days) is highlighted again.
* Fixed: the summary above the Products table counts every status, including products sold without recorded views, so its figures add up to the number of products; the explanation of Low data matches the rule it describes.
* Fixed: counts such as "1 purchases" on the Dashboard, Products, Opportunities, Settings and network data purge screens now use the correct singular and plural forms, including in translations.
* Fixed: dates, times and percentages follow your site's date format and language.
* Fixed: the Upgrade screen lists Search Demand analytics under Pro, where they belong, shows data retention controls as part of Free, and describes product recommendations as suggestions; the buttons in its dark panel have their button styling again.
* Accessibility: the Dashboard period selector and date fields are labelled for screen readers and work with the keyboard; keyboard focus is visible on the ProductPulse menu, in Windows high-contrast mode and on the connect screen's Skip button; inactive menu items are shown in a muted colour.

= 1.1.96 =
* Maintenance release. No changes to the free edition.

= 1.1.95 =
First public release.

* WooCommerce product views, add-to-cart, purchase and revenue analytics.
* Dashboard with KPIs, daily activity trend and top products.
* Product-level reports with view-to-cart and view-to-purchase metrics.
* Basic product status signals and opportunity detection.
* 7, 30 and 90-day reports plus custom date ranges.
* Multi-currency reporting without mixing currencies.
* CSV analytics exports.
* Configurable raw-data retention.
* Privacy, personal-data export/erase and uninstall controls.
* WooCommerce HPOS and classic order-storage support.
* Multisite support and network data-purge workflow.
* Built-in tracking and database diagnostics.

== Upgrade Notice ==

= 1.1.97 =
New admin design, a Dashboard panel that explains data collection on new installations, suggested privacy-policy text, revenue shown in its recorded currency, and fixes to plural forms, dates and the plan comparison.

= 1.1.96 =
Maintenance release with no changes to the free edition's features.

= 1.1.95 =
First public WordPress.org release of AVAR ProductPulse.
