foco

ecommerce

E-Commerce — Meta CAPI Deduplication Fix

Meta was double-counting 40% of conversions due to broken deduplication between browser pixel and CAPI. Fixed the event matching and recovered accurate ROAS reporting.

server-side tracking / 3 weeks

The Situation

A mid-market e-commerce brand was seeing inflated conversion numbers in Meta Ads Manager. Their reported ROAS looked great, but actual revenue didn't match. The media buyer suspected Meta was double-counting conversions but couldn't prove it or fix it.

What We Found

  • Meta Pixel (browser) and Conversions API (server) were both sending purchase events, but the event_id parameter wasn't being passed from the browser to the server — so Meta couldn't deduplicate
  • Event Match Quality score was at 2.8 out of 10 — Meta was essentially guessing on 70% of event matches
  • The server-side implementation was sending events 4-6 hours after the browser pixel, outside Meta's deduplication window

What We Did

  • Implemented consistent event_id generation in the data layer, passed through both browser pixel and sGTM to CAPI
  • Fixed server-side event timing to fire within seconds of browser events via sGTM streaming
  • Added proper user data parameters (hashed email, phone, fbp, fbc) to improve Event Match Quality

Before & After

MetricBeforeAfter
Reported conversions (Meta)1,847/month (inflated)1,122/month (accurate)
Event Match Quality2.8 / 108.4 / 10
Actual ROASUnknown (data unreliable)4.2x (verified against Shopify)
Deduplication rate0% (no dedup happening)98.7%

Outcome

Reported conversions dropped 39%, which initially alarmed the team — but actual revenue hadn't changed. They were now seeing real performance for the first time. The media buyer reallocated budget from campaigns that looked good on paper to ones that were actually driving revenue, improving true ROAS by 22% over the following month.