top of page
Typographic Black and Blue.png

GA4 and Meta Ads Attribution Alignment — Reconciling Two Worlds for D2C

Open your GA4 acquisition report. Meta is credited with 38% of revenue. Open Meta Ads Manager. Meta claims 62%. Same time period. Same Shopify backend. Two different numbers. Which one is right?


Both. And neither. Indian D2C founders spend hours every month trying to reconcile this and end up frustrated. The truth: GA4 and Meta measure different things with different models, and you'll never get them to agree. What you can do is build a framework that uses both honestly.


Why GA4 and Meta Never Match


Different Attribution Windows


Meta defaults to 7-day click + 1-day view. GA4 defaults to 90-day click + 1-day session. A user who saw a Meta ad on day 1 and bought on day 6 via a Google search counts as Meta in Meta's view, but Google in GA4's view.


Different Models


Meta uses last-click within its own attribution window with view-through credit. GA4 uses data-driven attribution that fractionally credits multiple touchpoints across the user journey.


Different Signal Sources


Meta sees its Pixel events plus CAPI. GA4 sees gtag events plus measurement protocol. Different signal pools, different gaps from iOS/ad blockers/consent denial.


Different Modelling


Meta models conversions for iOS users who can't be tracked. GA4 models for cookie-denied users. Each platform's modelling is tuned to its own ecosystem.


The result: a 20-40% gap is structurally normal.


How to Reconcile Without Losing Your Mind


1. Pick One Source of Truth for ROAS


We recommend Shopify backend revenue divided by Meta-reported spend. This is your blended ROAS. It's the only number that actually matters for cashflow. Use Meta and GA4 for diagnostics, not for ROAS reporting.


2. Use Meta for Optimisation Decisions


Meta's view, despite over-attribution, is what its algorithm optimises against. When you tell Meta to chase Purchases, it optimises toward the events its CAPI sees. Pause campaigns based on Meta's view — but never expect Meta's revenue numbers to equal Shopify's.


3. Use GA4 for Cross-Channel Reality


GA4 is your honest broker between channels. When you want to compare Meta vs Google vs organic vs email, GA4's data-driven attribution gives a less biased view than any single platform's self-report. See our [INR vs USD guide](https://www.wittelsbach.ai/post/inr-vs-usd-currency-confusion-in-meta-ads-dashboards-and-the-fix) for the currency wrinkle here.


4. Run Periodic Incrementality Tests


Every 90 days, pause Meta in 2-3 Indian cities for 14 days. Measure Shopify revenue delta. The result tells you what % of Meta-attributed revenue is incremental — typically 60-80% for Indian D2C. Multiply that against Meta-reported revenue to get true contribution.


Common Setup Errors That Widen the Gap


  • Mismatched currency between Meta and GA4. Meta sees INR, GA4 sees USD. Numbers won't even be comparable.

  • Inconsistent purchase event triggers. Meta fires from dataLayer, GA4 fires from Thank You page DOM. Different timing, different counts.

  • No CAPI on Meta. Meta loses 20-30% of conversions to iOS, widening the gap.

  • No Measurement Protocol on GA4. GA4 loses similar volume to cookie blocking.

  • Different `transaction_id` handling. Causes GA4 to double-count refunded orders.


The 5-Step Alignment Process


  1. Standardise the purchase event trigger. Both Meta and GA4 fire from the same dataLayer push.

  2. Same `transaction_id` across both platforms. Use Shopify order_id.

  3. Same currency (INR) and same value (rupees, not paise) pushed to both.

  4. Both running server-side delivery (Meta CAPI, GA4 Measurement Protocol).

  5. Reconcile monthly: GA4 vs Meta vs Shopify in a single spreadsheet, document the structural gap, accept it as normal.


What 'Aligned' Actually Looks Like


After proper alignment, you'll typically see:


  • Meta-reported revenue = 100% baseline (Meta is most generous to itself)

  • GA4 last-click revenue = 65-80% of Meta's number

  • GA4 data-driven revenue = 70-85% of Meta's number

  • Shopify backend = 100-110% of Meta's number (often higher because Meta misses some conversions even with CAPI)

  • Incremental Meta revenue = 55-75% of Meta-reported


If your numbers are wildly outside these ranges, tracking is broken — not attribution philosophy.


How Wittelsbach AI Reconciles Attribution For You


Bach AI pulls Shopify backend revenue, Meta CAPI events, and GA4 attribution into a single view. It shows you the gap between each layer, identifies the bugs causing unusual mismatches, and surfaces incrementality estimates per campaign. Bach AI is live at [app.wittelsbach.ai](https://app.wittelsbach.ai). Two clicks to connect Meta.


Frequently Asked Questions


Should I switch to GA4's data-driven attribution as my source of truth?


No, use Shopify backend revenue as your source of truth and treat GA4 as a diagnostic tool. Data-driven attribution is genuinely useful for understanding cross-channel interactions, but it's still a model — and models can be tuned in ways you don't always see. Backend revenue is unambiguous: a customer paid, an order was created. Compare that against Meta-reported spend for blended ROAS, and use GA4 to understand the journey.


How often should I run incrementality tests on Meta?


Quarterly minimum. Pause Meta in 2-3 Indian cities (similar size, similar AOV) for 14 days. Compare Shopify revenue in pause cities vs control cities. The percentage delta tells you Meta's true incremental contribution. Indian D2C brands typically find this sits at 60-80% of Meta-reported revenue. Use this multiplier when budgeting against Meta-reported ROAS targets. It's the single most useful number you can produce for Meta investment decisions.


Does CAPI fix the GA4 vs Meta gap?


It narrows it, doesn't close it. CAPI restores 18-30% of iOS-lost signal in Meta, bringing Meta's view closer to Shopify reality. But GA4 and Meta still use different attribution models — even with perfect data, structural differences cause 15-25% gaps. The goal isn't to eliminate the gap; it's to make sure the gap is structural (attribution model) rather than infrastructure (tracking bugs).


Why does Meta over-attribute itself?


Three structural reasons. First, Meta uses last-click within its own ecosystem, so any campaign that touched the user's journey gets full credit. Second, Meta credits view-throughs — impressions without clicks that result in a purchase within 1 day. Third, Meta only sees what users do inside Meta, so it can't see when Google search or organic actually closed the sale. All three are honest within their model — they just don't match a multi-touch view of reality.


Can I trust Meta's reported ROAS for budget decisions?


For relative decisions (Campaign A is better than Campaign B), yes — both are measured the same way. For absolute decisions ('we're at 3.2x ROAS so we can scale'), no. Always pair Meta-reported ROAS with Shopify backend revenue and at least one quarterly incrementality test. Indian D2C brands that scale Meta aggressively off platform-reported ROAS alone usually hit a wall around ₹40-60L/month when blended ROAS suddenly drops 30%.

Comments


bottom of page