{"id":307215,"date":"2026-05-07T17:57:24","date_gmt":"2026-05-07T17:57:24","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/harvv-analytics\/"},"modified":"2026-05-07T17:46:07","modified_gmt":"2026-05-07T17:46:07","slug":"harvv-analytics","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/harvv-analytics\/","author":20576231,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Harvv Analytics","header_author":"Harvv","header_description":"Zero-PII behavioral analytics pixel with WooCommerce order sync. No cookies, no consent banner required.","assets_banners_color":"","last_updated":"2026-05-07 17:46:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/harvv.com\/wordpress","header_author_uri":"https:\/\/harvv.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":30,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"ecommercepros505","date":"2026-05-07 17:46:07"}},"upgrade_notice":{"1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3525855,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3525855,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[232,193119,986,396,286],"plugin_category":[36,45,54],"plugin_contributors":[262211],"plugin_business_model":[],"class_list":["post-307215","plugin","type-plugin","status-publish","hentry","plugin_tags-analytics","plugin_tags-behavioral-analytics","plugin_tags-conversion-tracking","plugin_tags-privacy","plugin_tags-woocommerce","plugin_category-analytics","plugin_category-ecommerce","plugin_category-security-and-spam-protection","plugin_contributors-ecommercepros505","plugin_committers-ecommercepros505"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/harvv-analytics\/assets\/icon-128x128.png?rev=3525855","icon_2x":"https:\/\/ps.w.org\/harvv-analytics\/assets\/icon-256x256.png?rev=3525855","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Zero PII. No cookies. No consent banner required.<\/strong><\/p>\n\n<p>Harvv Analytics ships a lightweight (under 10 KB gzipped) behavioral tracker that captures how visitors interact with your pages \u2014 dead clicks, rage clicks, scroll depth, hover intent, JavaScript errors, engagement time \u2014 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.<\/p>\n\n<p>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.<\/p>\n\n<p><strong>What this plugin does<\/strong><\/p>\n\n<ul>\n<li>Enqueues a vanilla-JS tracker (no jQuery, no external scripts) on your frontend.<\/li>\n<li>Captures behavioral signals: scroll depth, click targets, dead\/rage clicks, hover intent, page errors, engagement time.<\/li>\n<li>Syncs WooCommerce orders on <code>woocommerce_payment_complete<\/code> (never blocks checkout).<\/li>\n<li>Passes customer identity as a non-reversible hash derived from the site's own salts \u2014 the raw email never leaves WordPress.<\/li>\n<li>Works with WooCommerce HPOS (Custom Order Tables) out of the box.<\/li>\n<li>Multisite-aware: one network API key, per-subsite Site IDs, per-subsite admin overrides.<\/li>\n<\/ul>\n\n<p><strong>What this plugin does NOT do<\/strong><\/p>\n\n<ul>\n<li>Does not set or read cookies.<\/li>\n<li>Does not transmit email addresses, names, phone numbers, postal addresses, or IP addresses.<\/li>\n<li>Does not load any JavaScript from external URLs \u2014 the tracker ships bundled with the plugin.<\/li>\n<li>Does not create custom database tables on your WordPress site.<\/li>\n<li>Does not record session replays or keystrokes.<\/li>\n<\/ul>\n\n<p><strong>Why you might want this<\/strong><\/p>\n\n<p>If you run a WooCommerce store and want to see the dead clicks, rage clicks, and broken checkout paths your visitors hit \u2014 without making them click through a GDPR banner \u2014 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.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>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:<\/p>\n\n<ul>\n<li><strong>Endpoint:<\/strong> <code>https:\/\/api.harvv.com\/v1\/track<\/code><\/li>\n<li><strong>When:<\/strong> Events are sent continuously while a visitor is on your site (batched every 5 seconds or on tab close, via <code>navigator.sendBeacon<\/code> when available). WooCommerce order events are sent once, on <code>woocommerce_payment_complete<\/code>.<\/li>\n<li><strong>What is sent (behavioral events):<\/strong> Session ID (random, in-memory, regenerated per browser tab \u2014 never a stable cookie), visitor ID (sessionStorage-scoped, cleared when the tab closes), event type, page path (no query string with sensitive params), referrer, viewport dimensions, CSS selectors of clicked\/hovered elements (tag + id + first class name only, no text content), JavaScript error messages, engagement timestamps.<\/li>\n<li><strong>What is sent (WooCommerce events):<\/strong> Order ID, order status, order total, line-item product IDs and quantities, coupon codes, payment method name, shipping method name, non-reversible customer hash (derived via <code>wp_hash()<\/code> using your WordPress salts).<\/li>\n<li><strong>What is NOT sent:<\/strong> Names, email addresses, phone numbers, postal addresses, IP addresses, raw user IDs, cookies, session replays, keystroke data, form values.<\/li>\n<li><strong>Registration endpoint:<\/strong> <code>https:\/\/api.harvv.com\/v1\/sites\/register<\/code> \u2014 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.<\/li>\n<li><strong>Connect flow:<\/strong> <code>https:\/\/harvv.com\/connect\/wordpress<\/code> \u2014 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 (<code>\/wp-json\/harvv\/v1\/connect<\/code>) with a nonce you generated locally.<\/li>\n<li><strong>Harvv terms of service:<\/strong> <a href=\"https:\/\/harvv.com\/terms\">https:\/\/harvv.com\/terms<\/a><\/li>\n<li><strong>Harvv privacy policy:<\/strong> <a href=\"https:\/\/harvv.com\/privacy\">https:\/\/harvv.com\/privacy<\/a><\/li>\n<\/ul>\n\n<p>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.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin through the WordPress Plugins screen, or upload the plugin folder to <code>\/wp-content\/plugins\/harvv-analytics\/<\/code>.<\/li>\n<li>Navigate to <strong>Settings \u2192 Harvv Analytics<\/strong>.<\/li>\n<li>Click <strong>Connect to Harvv<\/strong> \u2014 this opens harvv.com in a new tab for signup. Once you complete signup, the tab will notify this plugin and your API key will be saved automatically.<\/li>\n<li>Alternatively, expand <strong>I already have an API key<\/strong> and paste your key manually.<\/li>\n<li>On WooCommerce sites, no further action is needed \u2014 order events start flowing on the next completed payment.<\/li>\n<\/ol>\n\n<p>For multisite networks: go to <strong>Network Admin \u2192 Settings \u2192 Harvv Analytics<\/strong> and set one network-wide API key. Each subsite will auto-register with Harvv on its next pageload and receive its own Site ID.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20require%20a%20cookie%20consent%20banner%3F\"><h3>Does this require a cookie consent banner?<\/h3><\/dt>\n<dd><p>No. The plugin sets no cookies and transmits no personal data. Under GDPR, CCPA, and PECR, cookie-consent banners are required only when a site sets non-essential cookies or transmits personal data to third parties. Harvv transmits only behavioral signals (dead clicks, scroll depth, etc.) and a non-reversible customer hash \u2014 these are not personal data under any major privacy regime.<\/p>\n\n<p>If your legal counsel interprets the regulations more conservatively than we do, you can still add Harvv to your privacy policy's third-party services section. The plugin provides suggested language at <strong>Settings \u2192 Privacy \u2192 Policy Guide<\/strong>.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20without%20woocommerce%3F\"><h3>Does this plugin work without WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. The WooCommerce integration loads conditionally \u2014 on a non-Woo WordPress site, the plugin runs as a pure behavioral pixel.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20slow%20down%20my%20checkout%3F\"><h3>Does this plugin slow down my checkout?<\/h3><\/dt>\n<dd><p>No. All outbound HTTP calls use <code>wp_remote_post()<\/code> with <code>'blocking' =&gt; false<\/code>, and the browser tracker uses <code>navigator.sendBeacon()<\/code> or <code>fetch<\/code> with <code>keepalive: true<\/code>. Nothing in the plugin waits on a response from Harvv.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20hpos%20%28custom%20order%20tables%29%20compatible%3F\"><h3>Is this plugin HPOS (Custom Order Tables) compatible?<\/h3><\/dt>\n<dd><p>Yes. The plugin declares compatibility with <code>custom_order_tables<\/code> and uses only the WC_Order CRUD API \u2014 never direct <code>$wpdb<\/code> access against order tables.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20my%20site%20loses%20internet%20connectivity%3F\"><h3>What happens if my site loses internet connectivity?<\/h3><\/dt>\n<dd><p>The browser tracker queues events locally and attempts to flush on each interval; unsent events are discarded silently when the browser tab closes. WooCommerce order events are fire-and-forget \u2014 if your site cannot reach <code>api.harvv.com<\/code> at the moment of <code>payment_complete<\/code>, the event is lost. We do not queue order events for retry on-site because doing so would require creating a custom database table, which this plugin intentionally does not do.<\/p><\/dd>\n<dt id=\"how%20do%20i%20uninstall%3F\"><h3>How do I uninstall?<\/h3><\/dt>\n<dd><p>Delete the plugin from the Plugins screen. All plugin options (<code>harvv_api_key<\/code>, <code>harvv_site_id<\/code>, and related) are removed via <code>uninstall.php<\/code>. The plugin never creates custom database tables on your site, so nothing is left behind.<\/p><\/dd>\n<dt id=\"i%20use%20caching%20plugins%20%E2%80%94%20does%20this%20conflict%3F\"><h3>I use caching plugins \u2014 does this conflict?<\/h3><\/dt>\n<dd><p>No. The tracker is enqueued in the footer and is cache-friendly (same output for every visitor). The Connect-flow REST endpoint is under <code>\/wp-json\/harvv\/v1\/*<\/code> and is gated by a one-shot nonce, so caching that endpoint is harmless.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Behavioral tracker (dead clicks, rage clicks, scroll depth, hover intent, JS errors, engagement).<\/li>\n<li>WooCommerce <code>payment_complete<\/code> order sync.<\/li>\n<li>HPOS (Custom Order Tables) compatibility declared.<\/li>\n<li>Connect-to-Harvv flow with one-shot nonce + HMAC-signed callback.<\/li>\n<li>Manual API-key entry as alternative path.<\/li>\n<li>Multisite support with per-subsite override.<\/li>\n<li>WordPress Privacy API integration (suggested policy text + empty exporter).<\/li>\n<\/ul>","raw_excerpt":"Zero-PII behavioral analytics pixel with WooCommerce order sync. No cookies, no consent banner required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/307215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=307215"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ecommercepros505"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=307215"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=307215"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=307215"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=307215"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=307215"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=307215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}