"Google Ads vs. Meta Ads — which is more efficient on the same budget?" I hear this question almost every week from ecommerce operators. Most compare by sessions, but that leads to the wrong answer. The only metric that compares revenue efficiency across ad channels is RPS (Revenue Per Session).
In Japan, RPS awareness lags far behind AOV (Average Order Value) and CVR (Conversion Rate) — the keyword draws under 30 monthly searches as of April 2026. Overseas, however, analytics platform documentation refers to it as Revenue per Visit / Revenue per Session as a standard metric. RPS is the only indicator that directly connects "increasing sessions" to "increasing revenue," and it's indispensable for ad investment decisions.
This article walks through the formula, GA4 implementation, the relationship to AOV and CVR, and the operational pitfalls — all from a practitioner's perspective.
Key takeaways#
- RPS = Revenue ÷ Sessions. The only metric that says "how much revenue you earn per visit." With the relationship AOV × CVR = RPS, it functions as the integrated decision axis combining AOV and CVR
- Looking at AOV alone or CVR alone misjudges initiatives. When raising the free-shipping threshold causes "AOV ↑ / CVR ↓," AOV alone reads as a win — but RPS goes down. Only RPS reveals the impact on the overall business
- RPS is the axis for judging ad ROI through channel comparison. If Google Ads RPS is $1.20 and Meta Ads RPS is $0.80, the same budget makes Google Ads 1.5x more efficient. Sessions alone never reveal this
1. Definition and formula#
RPS (Revenue Per Session) represents the average revenue per visit.
RPS = Revenue ÷ Sessions
For example, if a month has 10,000 sessions and $12,000 in revenue, RPS = $1.20. This means "on average, each site visit earns $1.20."
Relationship with AOV and CVR#
RPS can be decomposed as the product of AOV (Average Order Value) and CVR (Conversion Rate).
RPS = AOV × CVR
To verify: AOV $60 × CVR 2.0% = RPS $1.20. Same answer as before.
This decomposition shows there are only two ways to move RPS — raise AOV or raise CVR. Conversely, if sessions grow but neither AOV nor CVR changes, RPS stays exactly the same — meaning session-only growth is RPS-neutral.
Naming variations#
RPS goes by several names depending on the platform: Revenue Per Visit (RPV), Average Revenue Per Session (ARPS), Revenue Per User (RPU). The GA4 reference defines "Average purchase revenue per user" — close to RPS but with users (not sessions) as the denominator[1]. Whatever the name, the substance is the same — revenue divided by visits.
This article uses the most operationally tractable unit, "session," and refers to it as RPS (Revenue Per Session).
2. Why RPS is needed — three industry misconceptions#
RPS hasn't taken off in Japan because of three persistent misconceptions.
Misconception 1: "Increase sessions and revenue will follow"#
The most common one. Doubling ad spend to double sessions doesn't move revenue if RPS halves. This frequently happens when adding a new ad channel: traffic of different quality flows in, CVR drops, and RPS drops. Revenue is sessions × RPS — without RPS in view, "we doubled sessions" alone tells you nothing about revenue impact.
Misconception 2: "CVR should be the top KPI"#
CVR optimization matters, but CVR alone hides the true effect. Pushing bundles to lift CVR can drag AOV down. CVR ↑ × AOV ↓ may end up dropping RPS. Baymard Institute's checkout usability research[2] catalogs many tactics for removing checkout friction to lift CVR — but failing to keep CVR optimization in balance with AOV and margin leads to overall-business misoptimization.
Misconception 3: "Just raise AOV"#
AOV-only optimization has the same problem. Raising the free-shipping threshold from $50 to $100 might raise AOV — but customers who were "$20 short of free shipping" will drop off, lowering CVR. AOV ↑ × CVR ↓, and RPS goes down.
The shared structure#
All three misconceptions share one structure — maximizing a single metric sacrifices another. The reason RPS is needed as the integrated axis across the three metrics is that it makes this interaction judgable as a single number.
| Metric | How to move it | Likely side effect | Integrated axis |
|---|---|---|---|
| Sessions | Paid ads, SEO | RPS drops if traffic quality differs | RPS |
| CVR | UX, discounts | AOV drops with discounting | RPS |
| AOV | Thresholds, bundles | CVR drops past thresholds | RPS |
Revenue moves only when all three metrics align. RPS folds these interactions into one number.
3. How to compute RPS — GA4, Shopify, in-house DB#
In GA4#
GA4's standard reports don't expose "Revenue Per Session" explicitly. Instead, "Average purchase revenue per user" exists, which is conceptually close to RPS but per user, not per session[1].
To produce session-level RPS in GA4, you need a custom calculation in Explorations:
RPS = "Total revenue (purchase)" ÷ "Sessions"
The denominator must be all sessions, not just purchasing sessions. GA4 standard reports make it hard to surface "purchasing sessions" and "all sessions" simultaneously, so you typically need a custom Exploration query to get this number out.
In Shopify#
Shopify Analytics shows "Online store conversion rate," "Average order value," and "Total sales" by default — but no native RPS. You'll calculate it yourself: "Total sales ÷ Total sessions."
In an in-house DB#
The most flexible approach is to join your sales data with session logs in a data warehouse (Postgres / BigQuery / Snowflake). One SQL query gets you channel-level RPS:
SELECT
channel,
SUM(revenue) / COUNT(DISTINCT session_id) AS rps
FROM
sessions s
LEFT JOIN
orders o ON s.session_id = o.session_id
GROUP BY
channel
One query, channel-level RPS. The real value of RPS comes from channel comparison, so you want an environment that can produce this granularity — that's the key to data-driven ad budget allocation.
4. Judging initiatives by RPS — three real examples#
Example 1: Raising the free-shipping threshold#
A D2C brand raised the threshold from $50 to $80. Result:
| Metric | Before | After | Change |
|---|---|---|---|
| AOV | $62 | $74 | +19% |
| CVR | 2.4% | 1.8% | -25% |
| RPS | $1.49 | $1.33 | -11% |
AOV alone says "+19%, big win." But RPS shows -11% — the initiative loses revenue overall.
Example 2: Channel-level comparison#
Same $10,000 budget across three channels:
| Channel | Sessions | Revenue | RPS | Efficiency |
|---|---|---|---|---|
| Google Ads | 8,000 | $9,600 | $1.20 | Baseline |
| Meta Ads | 12,000 | $9,600 | $0.80 | -33% |
| TikTok Ads | 20,000 | $8,000 | $0.40 | -67% |
By sessions, TikTok wins handily. By RPS, Google Ads is 3x more efficient. Ad budget allocation should be judged by RPS — that's the takeaway.
Example 3: Bundle discount effect#
A retailer launched a 3-item, 20%-off bundle:
| Metric | Before | After | Change |
|---|---|---|---|
| AOV | $48 | $52 | +8% |
| CVR | 2.0% | 2.6% | +30% |
| RPS | $0.96 | $1.35 | +41% |
Both AOV and CVR move up, and RPS jumps. When AOV and CVR align, RPS jumps dramatically.
5. Limits and operational notes#
RPS is powerful but not a silver bullet. Three notes for production:
Note 1: Session definition drift#
GA4, Shopify, and your in-house DB define "session" slightly differently[1]. GA4 defaults to a 30-minute inactivity timeout. Shopify treats same-day cookie continuity as one session. In-house DBs are whatever the designer chose. Confirm session definitions before comparing RPS across tools.
Note 2: Multi-touch effects#
Last-click attribution inflates RPS for Brand Search and Direct traffic. When ads drive awareness and the customer returns later via Direct, that ad contribution accrues to Direct's RPS. When using channel-level RPS to judge ads, align attribution models (First-touch / Last-touch / Linear, etc.).
Note 3: Refund / cancellation timing#
Shopify and GA4 typically compute RPS on order-time revenue, often without reflecting later refunds and cancellations. In high-return industries (apparel, etc.), the gap between effective RPS (post-refund) and surface RPS (at order) widens. Ad ROI judgments need effective RPS.
6. Beyond RPS — the "Sessions × RPS" worldview#
Once RPS is established, ecommerce decision-making changes at its root.
Revenue = Sessions × RPS
Middle-school math, but all of "budget allocation" and "initiative impact" lives in this equation.
- Initiatives that grow sessions (SEO, ads) → move sessions
- Initiatives that lift unit price (bundles, thresholds) → move RPS through AOV
- Initiatives that improve conversion (UX, LP optimization) → move RPS through CVR
Every initiative ultimately moves one of these two axes. Operators with reliable RPS measurement can judge initiative impact across two axes — "did sessions grow?" and "did RPS move?". Ad investment, channel selection, and LP optimization priorities become genuinely data-driven.
According to METI's e-commerce market survey[3], Japan's BtoC e-commerce market reached approximately ¥24.8 trillion in 2024. Despite this market size, only a small fraction of operators run integrated metrics like RPS as a primary KPI. Conversely, operators who adopt RPS early have meaningful room to differentiate from competitors.
Related articles on /en/news:
- AOV (Average Order Value): Formula, 10 Tactics, and the CVR/RPS Trap
- GA4 isn't a revenue tool — the attribution blind spot
- Marketing KPI Design — the difference between metrics that move and metrics that don't
References#
[1] Google "Analytics dimensions and metrics — Average purchase revenue per user" 2025
[2] Baymard Institute "E-Commerce Cart & Checkout Usability Research" 2024
[3] Ministry of Economy, Trade and Industry (METI) "FY2024 E-Commerce Market Survey" August 2025
See which ads actually drive revenue, at a glance
14-day free trial. No credit card required. Up and running in 5 minutes.
Start 14-day free trial