Zero PII. No cookies. No consent banner required.
Harvv Analytics ships a lightweight (under 10 KB gzipped) behavioral tracker that captures how visitors interact with your pages — dead clicks, rage clicks, scroll depth, hover intent, JavaScript errors, engagement time — and syncs WooCommerce orders to your Harvv dashboard. It never reads cookies, never transmits names, emails, phone numbers, or addresses, and never stores personal data in your WordPress database.
Because the plugin transmits no personal data, it does not require a cookie-consent banner under GDPR, CCPA, or PECR. Your visitors see no pop-ups; your checkout flows are not slowed; your compliance posture is simpler.
What this plugin does
woocommerce_payment_complete (never blocks checkout).What this plugin does NOT do
Why you might want this
If you run a WooCommerce store and want to see the dead clicks, rage clicks, and broken checkout paths your visitors hit — without making them click through a GDPR banner — Harvv is designed for you. The behavioral signals are sent to your Harvv dashboard where they become a prioritized list of UX fixes with plain-English explanations.
This plugin relies on the Harvv analytics service (operated by Olivas Venture Capital LLC d/b/a Harvv) to store and analyze behavioral events. Data is transmitted to the following endpoint:
https://harvv.com/v1/track (overridable via the HARVV_API_BASE constant in wp-config.php for staging or self-hosted receivers)navigator.sendBeacon when available). WooCommerce order events are sent once, on woocommerce_payment_complete.wp_hash() using your WordPress salts).https://harvv.com/v1/sites/register — called once per site (or subsite on Multisite) to obtain a Site ID. Transmits only the site URL, site name, WordPress version, PHP version, and plugin version.https://harvv.com/px/<your_site_key>/pixel.js — enqueued on the frontend via wp_enqueue_script. This is the same canonical pixel served to every Harvv-installed site regardless of install channel (WP plugin, Laravel package, direct script-tag, Shopify integration). Loaded once per page, ~15.6 KB gzipped. The pixel itself transmits only the behavioral signals described above. Sites that need an offline-capable / self-hosted pixel can override the URL via define( 'HARVV_PIXEL_URL', '...' ); in wp-config.php, or via the harvv_pixel_url filter.https://harvv.com/connect/wordpress — opened in a new browser tab when an admin clicks “Connect to Harvv” in the plugin settings. Harvv’s hosted signup page handles authentication; it then POSTs the API key back to your site’s own REST endpoint (/wp-json/harvv/v1/connect) with a nonce you generated locally.https://harvv.com/v1/inventory — called once at site registration and refreshed weekly by WP-Cron. Sends a site-context snapshot: installed plugin slugs + versions, the active theme slug + version, WordPress version, PHP version, MySQL/MariaDB version, server software string (e.g. “nginx/1.24.0”), site language code, timezone, permalink-structure boolean, WP_DEBUG boolean, memory limit, max execution time, object cache backend, WP-Cron disabled boolean, multisite blog count, total user count (number only — no usernames, no emails, no per-role breakdown), aggregate post and page counts, custom post type slugs + publish counts, and (when WooCommerce is active) WooCommerce version, store currency, base country, and product count. No visitor data, no usernames, no email addresses, no post content, no comments, no IP addresses, no PII of any kind. Powers plugin-attribution and platform-specific UX diagnosis on the Harvv dashboard. Admins can preview the exact payload at Settings Harvv Analytics Preview the exact diagnostic snapshot we would send. Disabled by clearing the Settings Harvv Analytics Preferences Share stack info checkbox, by adding define( 'HARVV_SHARE_INVENTORY', false ); to wp-config.php, or by returning false from the harvv_share_inventory filter.By activating this plugin and supplying an API key, you consent to the transmission of the data described above to Harvv. You can disconnect at any time from the plugin’s settings page; uninstalling removes all plugin options from your database.