When Google Ads or Meta report noticeably fewer conversions than you have real orders, some data is lost on the way from the browser to the ad platform. Unlike duplicate conversions, this is undercounting — and it has clear causes.
Symptoms
- Consistently fewer conversions in advertising than orders in the store.
- The gap is larger for mobile and Safari/iOS traffic.
- Automated bidding strategies underperform because they learn on incomplete data.
Why data disappears
- Ad-blockers block the client-side Google Ads and Meta Pixel scripts — such users' conversions are never sent at all.
- Safari ITP caps cookie lifetime at 7 days, so longer buying journeys fragment and conversions go unattributed.
- iOS and Private Relay further reduce the accuracy of client-side measurement.
How to recover the loss
- Deploy server-side tracking. Data flows through your domain server-to-server, so it gets through even where client-side fails.
- Turn on Enhanced Conversions (Google Ads) and send hashed first-party data so conversions match even without a cookie.
- For Meta, run the Pixel and CAPI with deduplication so CAPI fills in what the pixel loses.
How to verify improvement
After deployment, watch the conversion count in advertising move closer to the order count in your store. It will never match exactly (because of attribution windows), but the gap should shrink considerably.
Why the numbers never fully align is explained in why GA4 and Google Ads don't match. The loss mechanism is covered in ITP, iOS and ad-blockers, and the Enhanced Conversions fix in this article.