0% read
Meta Ads

Fixing Meta Ads Attribution: GA4, CAPI and the Numbers You Can Trust

An account can't be optimised faster than it can be measured. Here is the reconciliation test we run before touching any campaign.

We covered the diagnostic order for a Meta Ads account that's stopped converting in an earlier article, and tracking was check #1 for a reason: it's the most common root cause and the least glamorous fix. This is the deeper version of that check, specifically for accounts where the numbers themselves can't be trusted yet.

Why attribution breaks in the first place

Two failure modes cause almost every trust problem we see. Double-counted purchases: browser pixel and server-side CAPI both fire for the same event with no shared deduplication key, so the account reports two purchases for every one that actually happened. Silent platform drift: iOS privacy changes, ad blockers, and cookie consent banners all quietly reduce what the browser pixel can see, while CAPI, if it's even installed, was never reconciled against it.

Neither failure mode announces itself. The account just slowly starts rewarding whichever campaigns happen to over-report, and starves the ones that don't.

The 3% reconciliation test

This is the first thing we run on any new account, before any campaign changes: pull last week's purchase count from Meta Events Manager and compare it against the actual order count in Shopify (or whatever system processes the sale) for the same window.

The testIf Meta's reported purchases are within about 3% of your real order count, tracking is healthy enough to trust for optimisation. Past that, every subsequent decision, budget allocation, creative "winners," audience targeting, is being made against a number that doesn't match reality.

On the skincare brand account, this exact test surfaced a CAPI setup that had been double-counting purchases for five months. The account thought it was closer to breakeven than it actually was, which is a worse failure mode than under-reporting: it makes scaling decisions look safe when they aren't.

Server-side CAPI vs browser pixel

The browser pixel fires from the visitor's device and browser, which means it's subject to ad blockers, cookie consent decisions, and platform privacy restrictions, all of which have only gotten stricter. Server-side Conversions API (CAPI) fires from your own server, which sees the transaction directly and isn't affected by any of that.

Running both is standard practice, and correct, but only if they're deduplicated against each other. Running both without dedup is exactly how double-counting happens.

Event Match Quality: the number that tells you if CAPI is actually working

Installing CAPI isn't the same as CAPI working well. Meta scores every account on Event Match Quality (EMQ), visible in Events Manager, which measures how confidently it can match your server-side events to a real Facebook or Instagram user. This is the number that actually tells you whether the implementation is doing its job, not just whether it's technically live.

What to look forPixel-only setups typically sit around 3.5–5.0 EMQ. A properly implemented pixel-plus-CAPI setup, with strong hashed customer parameters (email, phone, name) sent server-side, should push that into the 7.5–9.0 range. If your EMQ score is still low after adding CAPI, the implementation is incomplete, not just imperfect.

This matters because EMQ has a direct line to attribution quality: a low-EMQ CAPI setup still loses matchable conversions, it just loses fewer than pixel-only. Checking EMQ takes thirty seconds in Events Manager and tells you more about whether tracking is trustworthy than any dashboard reconciliation alone.

Reconciliation checklist

01
Compare Meta's reported purchases to real orders for the same 7-day window. Flag anything outside 3%.
02
Confirm CAPI and pixel share a deduplication key, usually the order ID or event ID, not just event name and timestamp.
03
Reconcile GA4 revenue against your order system separately from Meta. If GA4 and Meta disagree with each other and with your bank account, you have three different stories and none of them is reliable.
04
Re-run the test monthly, not once. Platform updates and site changes both break tracking silently.

Deduplication, the part everyone skips

Meta's own documentation covers event deduplication, but it's the step most in-house setups miss, because it only matters once you're running both pixel and CAPI, and by the time a team adds CAPI (usually in response to declining match rates), the original pixel implementation is often forgotten context nobody revisits.

Putting it together

Fixing this isn't a single afternoon of work, but it also isn't a rebuild. The skincare brand account had server-side CAPI rebuilt, purchase dedup fixed, and GA4 reconciled to Shopify within 3%, all in week one, before a single new creative shipped. Only after that did creative testing and structural consolidation start, because there was finally a real number to optimise against.

3%reconciliation target
1.7x → 3.4xROAS after the fix
-38%CAC after the fix
Week 1when tracking got fixed

Not sure your numbers are real?

We run the reconciliation test on your account before touching a single campaign. If it passes, we say so.

Get your free audit

Once tracking is trustworthy, the next question is usually whether the account has enough room to scale efficiently, which is really a CAC question. We cover that in the four levers that actually move CAC. Separately, if your reported numbers moved on their own sometime after January 2026, that's likely a platform change rather than a tracking problem: see what changed in Meta Ads attribution in 2026.

NS

Nishant Sinha

Founder at Nivaro, a Surat-based performance marketing studio. Owns strategy, creative direction and the tracking/development work that makes performance decisions measurable. Read more about Nivaro.