TL;DR
Meta, GA4, and Shopify disagree because client-side pixels get blocked, cookies expire, and each platform uses different attribution windows. The fix is server-side events — Meta Conversions API and GA4 Measurement Protocol converged with Shopify order data on one stream — so the numbers match and a dashboard can show ROAS you can trust.
If Meta, GA4, and Shopify each report a different number of orders, you are not alone — and it is not your imagination. The cause is client-side tracking that browsers, ad blockers, and privacy features increasingly drop. The fix is to move your events server-side so every platform reads from one reliable stream.
Why the numbers never match
- Blocked pixels. Ad blockers and tracking-prevention stop browser-side tags from firing, so conversions go uncounted.
- Lost cookies. Short cookie lifetimes break the link between an ad click and a later purchase.
- Different windows and models. Each platform counts conversions over different attribution windows, so totals diverge even when tracking works.
The fix: server-side events
Instead of relying on the browser, send the key events (page view, add to cart, purchase) from the server to each platform's API:
- Meta Conversions API (CAPI) for ad attribution that survives blockers.
- GA4 Measurement Protocol for reliable analytics.
- Shopify's own order data as the source of truth.
Converge all three on a single server-side event stream and the figures line up no matter who you ask. This is exactly the kind of thing a theme plus a stack of apps tends to get wrong — and where a headless build, or a focused attribution project, fixes it properly.
Client-side vs server-side, briefly
| Client-side pixels | Server-side events | |
|---|---|---|
| Blocked by ad blockers | Often | No |
| Depends on cookies | Heavily | Much less |
| Data accuracy | Leaky | Reliable |
| Effect on page speed | Adds main-thread work | Off the critical path |
Seeing it in one place
Once events are server-side, an attribution dashboard can show channel-level ROAS, blended CAC, and contribution that actually match the platforms — so you can spend with confidence instead of arguing with three dashboards.
The short version
Mismatched numbers come from leaky client-side tracking. Move to Meta CAPI + GA4 Measurement Protocol + Shopify order data on one server-side stream, and your attribution finally agrees with itself.
Published 5 May 2026 · the tilde team
← All posts