GA4-measured revenue. Pair with commerce-sibling total to spot attribution divergence.
At a glance
Revenue as Google Analytics 4 measured it from purchase events fired by your store’s tag. GA4 typically captures 75, 90% of actual orders. Use it for traffic and channel attribution, NOT as the source of truth for revenue, your commerce platform (Shopify, BigCommerce, Adobe Commerce) is always the cleaner figure.
| What it counts | Daily SUM(totalRevenue) from GA4’s purchase event, the metric exposed by the GA4 Data API. The card shows it as a daily trend over the selected window. |
| Why GA4 misses orders | The purchase event must fire from the customer’s browser when they reach the order-confirmation page. It fails to fire when (a) ad blockers block the GA4 tag, (b) the user rejects cookies and your consent banner respects that, (c) the network is too slow and the user navigates away before the tag fires, (d) the GA4 SDK has a bug or the GTM container isn’t deployed correctly. The aggregate miss rate is typically 10, 25% for ecommerce stores. |
| Sample basis | GA4 returns totalRevenue directly without sampling for the standard date ranges; sampling kicks in only on very long ranges (> 14 months) or with high-cardinality dimension breakdowns. Vortex IQ’s standard windows (T/7D/30D vsP) are below the threshold. |
| Bot traffic filter | GA4 has a built-in Internal Traffic exclusion for known bots (IAB Tech Lab list). Vortex IQ uses GA4’s filtered runReport output, no further bot filtering needed. |
| Time zone | The GA4 property’s configured timezone, not UTC. Vortex IQ uses the property timezone for windowing. |
| Currency | GA4 stores totalRevenue in the property’s reporting currency (account-level setting). Multi-currency stores see an FX-converted figure (Google’s daily FX rate, applied at event time). |
| Refunds | NOT deducted from totalRevenue. GA4 has a separate refundAmount metric that subtracts refunded transactions, you’d need a custom report for the net view. |
| Tax / shipping | Configurable per merchant. GA4’s purchase event carries value (typically the order total inclusive of tax + shipping by default), tax, and shipping separately. The totalRevenue aggregate uses value. If your tag was set up to send value net of tax, GA4 won’t have tax-inclusive revenue. |
| Time window | T/7D/30D vsP (default 30D vs the prior 30D) |
| Alert trigger | drop >15% vsP, driven by sentiment_key: ga_revenue_trend |
| Roles | owner, marketing, finance |
Calculation
Calculated automatically from your Google Analytics 4 data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK fashion brand running on Shopify with GA4 measurement. The 30-day window covers 14 Mar 26 to 12 Apr 26.| Source | Revenue measured | Note |
|---|---|---|
| Shopify Total Revenue (truth) | £412,600 | Headline from Shopify Total Revenue, every order, all channels |
GA4 totalRevenue (this card) | £348,900 | What GA4 measured |
| The gap | £63,700 (15.4%) | The missing 15.4% is the GA4 tracking gap |
- GA4 is missing £63,700 of real revenue. That’s 15.4%, comfortably inside the 10, 25% normal band. The gap comes from a mix of ad blockers (~5%), consent rejection on the cookie banner (~6%), tag-fire failures (~3%), and a small batch of B2B orders that bypass the storefront entirely (~1.4%).
- The gap is roughly stable week-over-week. That’s the test for whether GA4 is healthy. If the gap suddenly jumped to 35% one week, the merchant’s GA4 tag is probably broken (rolled back to GA UA, or the consent banner started blocking by default).
- Channel attribution still works. GA4’s strength isn’t the absolute number, it’s the channel breakdown. So even though GA4 is undercounting by 15%, the relative share of organic vs paid vs direct vs email is still informative because the bias affects all channels roughly equally.
- The card alert won’t fire. Day-by-day GA4 revenue is down 4% vsP, well below the 15% threshold. The merchant should still investigate any sudden GA4-only drop, that’s usually a measurement issue, not a real revenue issue.
Sibling cards merchants should reference together
| Card | Why pair it with GA4 Revenue Trend |
|---|---|
| GA4 Sessions | The traffic side. Revenue ÷ Sessions gives you Revenue per Session, the per-visit value of your traffic. |
| GA4 Conversion Rate | What % of sessions ended in a purchase. The denominator-aware view. |
| GA4 Revenue by Channel | The actually-useful GA4 view: revenue split by Default Channel Group (Organic, Paid Search, Direct, Email, Social, Referral, Display). |
| GA4 Revenue by Source/Medium | Finer-grained channel attribution using UTM parameters. |
| GA4 Tracking Gap vs Commerce | This card ÷ commerce platform total. Lets you see if the gap is widening (broken tag) or stable (normal). |
| Shopify / BC / Adobe Total Revenue | The truth side. Always reconcile against this; never use GA4 for revenue figures. |
| Klaviyo Email-Attributed Revenue | Email channel revenue. GA4 typically claims less email revenue than Klaviyo because of attribution-window differences. |
Reconciling against the vendor’s own dashboard
Where to look in GA4: Reports → Monetization → Ecommerce purchases for the headline. The Total revenue column should match this card to within a few pounds. Other GA4 views that look like the same number but aren’t:- Reports → Acquisition → Traffic acquisition: shows revenue per channel but the row totals can differ from the headline due to attribution-model interactions.
- Explorations: custom reports can use any date filter and may include sampling, the standard report doesn’t.
- Realtime → Revenue: last-30-min only, useful for tag-fire validation but not for trends.
| Reason | Direction of divergence |
|---|---|
| Currency conversion lag. GA4 applies daily FX; if Vortex IQ caches an hour-stale FX rate, multi-currency stores see micro-drift. | <0.5% |
| Late-arriving event ingestion. GA4 ingests events with up to 4-hour delay. Vortex IQ reads the snapshot at sync time. | Marginal on the most recent 24h |
| Sampling on long ranges. Date ranges > 14 months trigger GA4 sampling. Vortex IQ’s standard windows are below this threshold. | None for standard windows |
| Card | Expected relationship | What causes the divergence |
|---|---|---|
shopify.total_revenue | GA4 = Shopify × (1 − tracking gap). Typical gap 10, 25%. | Ad blockers (~5%), cookie consent rejection (~5, 10%), tag-fire failures on slow networks (~2, 5%), B2B / draft orders that bypass the storefront entirely (~0, 5%). |
bigcommerce.total_revenue | GA4 = BC × (1 − tracking gap). Typical gap 10, 25%. | Same shape. BC’s Incomplete and Declined orders aren’t in GA4 either (purchase event only fires on success), so GA4 is “cleaner” in that one sense. |
adobe_commerce.total_revenue | GA4 = Adobe × (1 − tracking gap). Typical gap 10, 25%. | Same shape. Adobe Commerce’s pending_payment orders aren’t in GA4 (purchase event fires only on processing or complete). |
stripe.stripe_total_revenue | GA4 may be lower or higher than Stripe depending on payment mix | Stripe sees only Stripe-routed payments; GA4 sees all (modulo tracking gap). For a Stripe-only store, GA4 ≈ Stripe × (1 − tracking gap). |
Known limitations / merchant FAQs
Why is GA4 lower than Shopify? Is GA4 broken? GA4 isn’t broken; it’s structurally undercounting. Thepurchase event must fire from the customer’s browser at the order-confirmation page. That event fails when ad blockers run, when cookie banners are rejected, when networks are slow, or when GTM containers are mis-configured. The aggregate miss rate sits at 10, 25% for healthy ecommerce stores. Treat the commerce platform as the source of truth.
Can I “fix” the gap?
Partially. Server-side tagging via Google Tag Manager Server (or a Cloudflare Worker proxy) bypasses ad blockers on the client. Consent Mode v2 with modelled conversions narrows the gap further (Google fills in some of the missing data using machine-learned models). Realistically you can shrink the gap from 25% to about 8, 12% with a serious tag-side investment, but never to zero.
The gap suddenly jumped from 15% to 35%, what happened?
Almost always a tag regression. Check (1) your GTM container is publishing correctly (a Preview Mode test will confirm), (2) your consent banner hasn’t started defaulting to Reject, (3) your ecommerce JavaScript hasn’t been swapped (Shopify theme update, headless redeploy), (4) Apple’s Safari ITP rolled an update that breaks the event. The “GA4 missing X% more orders” symptom usually maps to one of these four root causes.
What’s the difference between this card and “Shopify with GA4 channel filter”?
Different things entirely. This card is GA4’s measurement of revenue as fired by the GA4 tag. The Shopify-with-channel-filter view is Shopify’s own attribution of which marketing source drove the order. They use different attribution models and different event data. Don’t compare them directly.
My multi-currency store, does GA4 show me one currency or multiple?
One. GA4 stores totalRevenue in the property’s reporting currency (account-level setting), with daily FX conversion applied at event time. Multi-currency stores see all revenue normalised to the reporting currency. This is one of the few areas where GA4 is cleaner than the commerce platform, which sums original-currency totals.
Does Klaviyo-attributed revenue show up here?
Yes, every order with a purchase event shows up here regardless of which channel drove it. To see the per-channel breakdown (including email), use GA4 Revenue by Channel. Note that GA4’s “Email” channel won’t equal Klaviyo’s claim, GA4 uses last-non-direct click; Klaviyo uses last-touch within 5 days.
Can I trust GA4’s “Today” number?
Less than the rolling-7-day or 30-day numbers. GA4 has up to 4-hour event-ingestion delay, plus the tracking gap is structural, plus today’s revenue is incomplete data. Use the rolling windows for trends.
My GA4 says revenue is up but my Shopify says it’s flat, what’s going on?
This usually means either (a) you fixed a tagging issue that was previously suppressing GA4 conversions (good news, just be aware the lift is artificial in the GA4 view), or (b) Google rolled out a Consent Mode v2 modelling improvement that increased modelled conversions for your account. Open the GA4 Tracking Gap vs Commerce card to see if the gap narrowed.