E-Commerce — Recovering Conversions After iOS 14
Series B brand · $2M+ monthly ad spend across Meta and Google · Fashion & apparel
iOS 14 cut 40%+ of purchase signals overnight
Purchase event reporting dropped from ~850/day to ~490 after iOS 14 ATT enforcement hit. The Meta pixel could no longer observe conversions from users who opted out of tracking — which on iOS was the majority.
Campaigns were under-reporting ROAS across the board. The performance team was making budget decisions — pausing ad sets, killing creatives, reallocating spend — based on a dataset that was missing nearly half its purchases. Profitable ad sets were being killed because they appeared not to convert.
The core issue wasn't the iOS 14 policy itself. It was that the brand had no server-side infrastructure to supplement what the browser could no longer see.
Server-side CAPI with deduplication and advanced matching
Implemented Meta Conversions API via server-side Google Tag Manager. The sGTM container receives purchase events directly from the server — independent of the browser, independent of ad blockers, independent of iOS ATT.
Built a deduplication layer to prevent double-counting events that were reported by both the browser pixel and the server. Used the event_id parameter to match and deduplicate on Meta's side.
Added advanced matching parameters to every server-side event: hashed email, hashed phone number, and external purchase ID. This gave Meta the signal it needed to match server events back to real users — even without cookies.
Rebuilt the GA4 event schema in parallel to align custom dimensions with the new server-side data flow. Configured GA4 → Meta offline conversion import as a secondary signal layer.
Purchase event volume recovered within 2 weeks of going live. Event Match Quality jumped from 4.2 to 7.8 — meaning Meta could now match most server-sent events to real accounts, dramatically improving optimization signal quality.
The campaign algorithm restabilized within 10 days. Ad sets that had been incorrectly flagged as underperformers were reinstated. The team had a dataset they could trust — and for the first time, their ROAS numbers aligned with what the server reported.
Have a similar tracking gap? Let's figure out what it's costing you.
Book a free audit call