RPV Measurement

A working methodology for measuring Revenue Per Visitor — picking the right denominator, choosing which revenue layer to divide by, and reconciling GA4 against Shopify without double-counting.
RPV Measurement
The methodology for calculating Revenue Per Visitor — choosing the denominator, the revenue layer, and the segmentation that make the number trustworthy.
RPV Measurement is the set of decisions you make before you can trust a Revenue Per Visitor number: whether to divide by sessions or users, whether the numerator is gross revenue, net revenue, or contribution margin, and how to segment by device, source, and landing page without double-counting.
It sounds mechanical, but most stores running Shopify alongside GA4 report two different RPV figures from the same week — usually because one tool counts sessions and the other counts users, or because refunds and discounts are netted in one place and not the other. Getting the methodology right is what makes RPV a comparable metric across months, channels, and experiments.
Revenue Per Visitor is deceptively simple: revenue divided by traffic. The trouble is that both terms are ambiguous. "Revenue" can mean gross sales, net of refunds, net of discounts, or contribution after COGS and payment fees. "Traffic" can mean sessions, users, or unique visitors — and GA4 and Shopify count those differently.
Pick the wrong combination and you'll either over-report RPV (gross revenue ÷ users) or under-report it (net contribution ÷ sessions) by 30-50%. Worse, you'll get a different answer every time someone re-pulls the data. The fix is to lock the definition once and document it — that's what this framework does.
1. Pick the denominator: sessions or users
The session denominator answers "how much revenue does an average visit generate?" The user denominator answers "how much revenue does an average person generate across all their visits in the window?" They're both legitimate — but they're not interchangeable, and a 3-visit buyer pulls the user-RPV up while leaving session-RPV flat.
For CRO and landing-page work, use sessions — you're optimising the visit, not the person. For paid-acquisition reporting, use users — you paid for the human, not each return visit. Whichever you choose, write it into the metric name (RPV-session vs RPV-user) so a Slack screenshot is never ambiguous. The RPV Calculator on Metricuno lets you toggle between the two so the team can sanity-check both.
2. Pick the revenue layer
Four layers exist, and they get progressively more honest: gross revenue (everything on the order line), net revenue (after refunds and cancellations), net-of-discounts (after promo codes and automatic discounts), and contribution margin (after COGS, payment fees, and shipping subsidy). A typical apparel store running 20% promo codes and a 40% return rate sees contribution-RPV land at roughly half of gross-RPV.
For weekly CRO dashboards, net-of-discounts is the sweet spot — it reflects what experiments actually move without making you wait 30 days for the refund window to close. Use contribution-RPV when comparing channels (paid social vs SEO often look very different once you net out promo-driven AOV inflation) or when justifying spend to finance.
GA4 and Shopify will not agree
GA4 records purchase events at checkout completion; Shopify records the order when payment captures. Cart abandons, failed payments, and fraud cancellations create a gap of 3-8% on most stores. Always treat Shopify as the source of truth for the numerator, GA4 as the source of truth for the denominator, and stitch them on order_id rather than trusting GA4's revenue field.
3. Segment before you average
A storewide RPV figure is a vanity number. It bundles together first-touch organic visitors, repeat buyers clicking a Klaviyo flow, and bots — all averaged into a single value that nothing actionable hangs off. Before you do anything with RPV, segment at least by device, traffic source, and landing-page template. For more on the channel split see RPV by Traffic Source; for vertical context see RPV Benchmarks by Industry.
Two segmentations earn their place on every CRO dashboard: device (mobile RPV typically runs 30-50% below desktop, and you need to know if the gap is widening) and new-vs-returning (returning RPV is often 3-5x new, which means a small shift in traffic mix can look like a CRO win that isn't). Filter out internal IPs and known bot user-agents before you divide — otherwise your denominator inflates by 5-15% and your RPV silently drifts down.
How the same week's data produces five different RPV figures
RPV measurement questions
Revenue per session divides by every visit; revenue per visitor (or per user) divides by unique people. A shopper who visits three times before buying counts once in RPV-user but three times in RPV-session, so RPV-session is always lower. Use sessions for CRO work and users for paid-channel reporting.
Use Shopify for revenue and GA4 for traffic, joined on order_id. GA4's purchase event misses failed payments and is sensitive to consent-mode and ad-blocker drop-off, so its revenue figure typically runs 3-8% below Shopify's. The traffic side is the opposite — Shopify's session count is unreliable because it doesn't see no-purchase visits accurately.
For weekly CRO reporting, no — the refund window is too long and you'd be reporting on stale data. For monthly business reviews and channel ROI, yes — net of refunds is the only figure that reflects what actually banked. Pick one for each report cadence and label it clearly.
Exclude known bot user-agents (GA4's bot filter catches most), exclude internal IP ranges, and exclude any session under 2 seconds with no events. Without these filters the denominator inflates 5-15% and RPV drifts down for reasons that have nothing to do with your site.
Yes. Mobile RPV typically runs 30-50% below desktop because of smaller AOV and weaker checkout conversion. A blended figure hides device-specific regressions — if mobile traffic share grows 5 points, blended RPV will fall even when both device-level RPVs are flat or up.
It depends heavily on vertical and AOV — apparel typically lands €2-€5, beauty €3-€8, electronics €5-€15. The number alone is meaningless without segment context. See RPV Benchmarks by Industry for ballpark ranges by vertical and order-value tier.
Email and SMS traffic are heavily skewed toward repeat buyers with a saved cart or a discount code, so their RPV often runs 5-10x site average. If you blend them into the storewide RPV, a successful flow launch will look like a site-wide CRO win. Always segment email/SMS out before you read RPV trends.
Daily for live experiments, weekly for landing-page and channel reviews, monthly for finance and forecasting. Daily is noisy — don't make decisions off a one-day swing unless traffic volume is in the tens of thousands. Use a 7-day rolling average for the dashboard widget.
Yes, and you often should — RPV captures AOV shifts that conversion rate misses (a variant that lifts CR but kills AOV can show flat or negative RPV). The trade-off is sample size: RPV has higher variance than CR, so tests need more visitors to reach significance. The RPV Calculator includes a quick variance check.
Almost always because they're using different denominators (sessions vs users) or different revenue layers (gross vs net). Lock the definition in writing — "RPV-session, net of refunds and discounts, excluding email/SMS, mobile and desktop split" — and the disagreement disappears. This is the single highest-leverage hour you'll spend on reporting.
Get an AI expert review of your site
Paste your URL — Metricuno's AI runs the same heuristic checks a senior CRO consultant would, scoring your page and prioritising the fixes that'll move conversion fastest.