WordPress + WooCommerce

Catch broken checkouts before your customer emails you.

Behavioral analytics that watches the rage clicks, JS errors, and silent cart failures your other analytics miss. One wp plugin install harvv-analytics or one click from the Plugin Directory. Zero PII, no cookie banner, HPOS-ready.

Zero PII · no emails, names, IPs transmittedNo consent banner requiredWooCommerce-nativeHPOS-ready~9 KB pixel
1. InstallCLI or 1 click
$wp plugin install harvv-analytics --activate
2. Connect10s
Settings → Harvv Analytics → Connect
3. Donelive
Pixel auto-injected via wp_enqueue_scripts on every page.

Free plan: 1 site, 50,000 events/month. No card required.

See it in 15 seconds

01What you see in the first 5 minutes

The pixel hooks into wp_enqueue_scripts, so every page WordPress renders fires events immediately. No theme edits, no template hacks. By the end of the day you have:

Behavioral signals
Dead clicks · Rage clicks · Scroll depth · Hover intent · JS errors · Engagement time · Network failures
WooCommerce events
Order total · Line items · Coupons · Payment method · Subscription flag · Hashed customer ID
Page-level performance
LCP, INP, CLS percentiles per URL. Slow product pages surface within hours.
What we do NOT transmit
Names · Email addresses · Phone · Billing/shipping addresses · IP addresses · Session replays · Raw user IDs

02Why WordPress stores switch

No cookie banner
Harvv sets no cookies. Visitor IDs live in sessionStorage, scoped to the browser tab, cleared when the tab closes. GDPR/CCPA/PECR consent banners are only required for non-essential cookies or personal-data transmission. Harvv has neither.
Checkout-safe
All outbound calls use wp_remote_post() with 'blocking' => false. The browser tracker uses navigator.sendBeacon. Nothing in the plugin blocks a pageload or checkout.
HPOS-ready
Declares compatibility via FeaturesUtil::declare_compatibility('custom_order_tables', __FILE__, true) and uses the WC_Order CRUD API only — no raw $wpdb against orders.
Multisite
One network-level API key at Network Admin → Settings → Harvv Analytics. Each subsite auto-registers on first admin pageload with its own Site ID. Per-subsite admins can override.

03Install in 60 seconds

Three steps. No theme edits, no Google Tag Manager, no wp-config.php changes.

Install the plugin

From WP Admin → Plugins → Add New → search "Harvv Analytics" → Install → Activate. Or use WP-CLI: wp plugin install harvv-analytics --activate.

Click "Connect to Harvv"

Navigate to Settings → Harvv Analytics. Click Connect. A new tab opens on harvv.com to sign up or log in. Your site auto-registers when you complete the OAuth flow.

Watch events flow

The pixel starts firing on the next pageview. Open your Harvv dashboard to see live sessions. First issue detections appear within a few hours of real traffic.

Prefer to install manually? Create an API key at Settings → API Keys in your Harvv dashboard, paste it into Settings → Harvv Analytics → I already have an API key. No OAuth round-trip needed.

04Fixing the problems visitors actually hit

A button on my WordPress site is not working, but there is no error. How do I find the cause?
A button that does nothing with no console error usually has one of four causes: a JavaScript file that failed to load (check Network tab for red rows, not just Console), a transparent element sitting on top of the button and swallowing the click (in DevTools, hover the button and check what element actually highlights), a click handler that never got attached because a plugin loaded out of order, or a caching or minification plugin that broke the script. The hard part is that it often only breaks for some visitors: a specific browser, a cached copy, a plugin conflict you cannot reproduce. Harvv catches this from the visitor side. When real people click an element and nothing happens, that is recorded as a dead click, and repeated dead clicks on the same element automatically become an issue with the exact element, page, browser split, and number of visitors affected.
How do I find every broken button or link on my WordPress site?
Crawlers can find broken links (a URL that returns 404), and free tools like a dead link checker do that fine. What a crawler cannot find is a button or link that loads fine but does not respond when clicked, because that failure only happens in a real browser session. The reliable method is behavioral: watch what real visitors click and flag the elements where clicks repeatedly lead nowhere. That is the core of what the Harvv plugin does on WordPress, and it also reports images and scripts that failed to load during real visits, which a page-by-page check misses when the failure depends on cache state or device.
My site works on desktop but buttons do not work on iPhone or Safari. Why?
Safari and iOS WebKit handle hover states, fixed positioning, and some tap events differently from Chrome. The usual suspects: a menu that opens on hover (there is no hover on touch), an element that needs a double tap because the first tap triggers a hover state, a sticky header overlapping tap targets, or JavaScript using events Safari fires differently. Because you probably develop on desktop Chrome, you never see it. Harvv splits every dead click and rage click by device and browser, so a Safari-only or iPhone-only failure shows up labeled exactly that way, with the element and page attached.
Why is my WordPress site getting traffic but not converting?
If people arrive and do not buy or enquire, the answer is almost always visible in what they do: where they stop scrolling, what they click that goes nowhere, which forms they start and abandon, and which pages are slow enough that they leave first (Google's own threshold data says mobile bounce probability rises 32 percent when load goes from 1 to 3 seconds). Guessing from pageview counts cannot tell you which of those it is. Behavioral analytics can: Harvv reports the specific page, element, and visitor segment where momentum dies, ranked by how many sessions are affected.

05FAQ

Do I need a cookie-consent banner?
No. Harvv sets no cookies. Visitor IDs live in sessionStorage, scoped to the browser tab, cleared when the tab closes. Under GDPR, CCPA, and PECR, consent banners are required for non-essential cookies or transmission of personal data — Harvv transmits neither.
Does it slow my checkout?
No. All outbound calls use wp_remote_post() with 'blocking' => false. The browser tracker uses navigator.sendBeacon or fetch with keepalive. Nothing in the plugin blocks a pageload or checkout.
What about HPOS (Custom Order Tables)?
Fully supported. The plugin declares compatibility via FeaturesUtil::declare_compatibility('custom_order_tables', __FILE__, true) and uses only the WC_Order CRUD API.
Can I uninstall cleanly?
Yes. Delete from the Plugins screen. uninstall.php removes harvv_api_key, harvv_site_id, and all related options on both single-site and multisite networks. The plugin creates no custom DB tables.
Will it work with my caching plugin / CDN?
Yes. The pixel is a single <script> tag with async attribute, served from harvv.com behind global edge caching. WP Rocket, W3 Total Cache, Cloudflare, and Bunny all pass it through normally. We never write back to your DB on a pageview.

Ready to see what your site is actually doing?

Free plan covers one site and 50,000 events per month. No card. Install + connect in under a minute.

Install from WordPress.org →