Even after implementing all three layers above, GA4 revenue attribution has structural limitations that make it unreliable for subscription businesses.
No native Stripe webhook listener
GA4 has no built-in way to receive Stripe webhooks. Every subscription renewal, failed charge retry, upgrade, and refund requires a custom backend handler that transforms the Stripe event payload into a GA4 Measurement Protocol call — and correctly matches it to a historical client_id.
Subscription revenue gaps
GA4's ecommerce model is transaction-based. Monthly recurring revenue, annual plan renewals, seat expansions, and trial conversions all happen outside any browser session. You can log them via Measurement Protocol, but they will never have source/medium attribution — they land as "(direct) / (none)". When we audited the GA4 setups of our first 30 beta customers, every single subscription business had this exact problem; renewal revenue had zero channel attribution.
Consent mode data loss
Under GDPR and ePrivacy Article 5(3), GA4 requires a consent banner before any non-essential cookie is set. When visitors reject cookies, GA4 Consent Mode v2 switches to "modeled" (estimated) data. For sites with European traffic, 30-40% of revenue events are estimates, not measurements. The model's accuracy degrades for low-traffic channels.
Data-driven attribution is opaque
GA4's default attribution model uses machine learning to distribute credit across touchpoints. You cannot audit the model, explain why a channel received credit, or override it for specific conversions. For compliance-sensitive businesses or investor reporting, this is a significant problem.
No Revenue per Visitor metric
GA4 does not expose Revenue per Visitor (RPV) as a built-in metric. To compare channel quality by RPV, you need a custom Exploration or a BigQuery query. Neither updates in real time.
Side-by-side, here is what each platform handles natively versus what requires custom engineering. Every GA4 row links back to the official Google documentation that defines (or limits) the behavior.