Skip to content
Code samples below use example values.

Ad blockers and iOS: why platforms undercount your conversions

If Meta or Google says a campaign drove 40 conversions but your own booking calendar or call log shows more like 60, you're not imagining it. This isn't a broken campaign — it's the default state of browser-based tracking in 2026. Here's what's actually happening and why it matters for how you read your numbers.

Browsers are built to block this

The standard way ad platforms have historically tracked a conversion is a third-party pixel: a snippet from facebook.com or a similar tracking domain, loaded on your site, that sets a cookie and reports back when someone converts. Every major browser now works against exactly that pattern:

  • Safari's Intelligent Tracking Prevention (ITP) caps or blocks cookies set by third-party scripts and shortens the lifetime of tracking cookies dramatically — to as little as seven days.
  • Firefox's Enhanced Tracking Protection (ETP) blocks known tracking domains outright by default.
  • Brave and a wide range of browser extensions (uBlock Origin, Privacy Badger, and similar) block third-party pixel scripts from loading at all — no script, no event, no data point.

Add these up and a meaningful share of a campaign's real conversions never make it back to the ad platform at all — commonly cited at 20–40% of conversions, depending on audience and device mix. That's not a fringe case; it's a large minority of every campaign's results.

iOS made it worse for mobile

Apple's App Tracking Transparency (ATT), which requires apps to ask permission before tracking a user across other apps and websites, cut deeply into the signal Meta's ad platform historically relied on for iOS users. Most people decline the prompt. The practical effect: a large share of iPhone and iPad activity — a huge share of most local businesses' traffic — became much harder for ad platforms to connect back to the ad that drove it.

The algorithm is only as good as what it sees

This isn't just an underreporting problem. Meta's and Google's optimization algorithms decide who to show your ad to based on which conversions they can see. Starve them of signal and they optimize toward a worse audience — the platform isn't just undercounting results, it's actively getting less effective at finding people who convert.

The symptom you'll actually notice

Two things show up together, and they compound each other:

  1. The platform reports fewer conversions than actually happened. Your CRM, booking system, or call tracking shows more real outcomes than the ads dashboard does.
  2. Performance looks like it's degrading even when it isn't, because the algorithm is optimizing against an incomplete picture and drifting toward audiences that generate the conversions it can see, not necessarily the ones that convert best.

Cost-per-result creeps up, reported ROAS looks worse than actual ROAS, and it's easy to conclude a campaign needs a bigger budget cut than it does — when the real problem is a measurement gap, not a performance one.

How first-party, server-side tracking recovers signal

The fix isn't a trick — it's changing where the tracking script lives and how the data travels. A first-party tracking setup, like Adsidian Prism, serves its script from a subdomain of your own site (track.yourdomain.com) rather than a third-party domain, so browsers treat it as first-party traffic instead of a tracker to block, and it uses a server-set identity cookie that isn't subject to the short JavaScript-cookie caps ITP applies. Conversion events are then sent directly server-to-server to Meta Conversions API and Google Ads — a path that doesn't depend on a browser script surviving a blocker or a cookie surviving a week. See What is Prism? for how the pieces fit together, and Meta CAPI for what has to come off your site first.

How Adsidian helps

Adsidian's dashboard reconciles what Prism captured against what each ad platform reports receiving, so you can see the gap directly instead of guessing at it. Once Prism is installed and connected to Meta and/or Google Ads, conversions that would have been lost to a blocked pixel or an expired cookie get delivered server-side instead — recovering signal for both reporting and the platforms' own optimization.

FAQ

Does an ad blocker mean someone didn't convert? No. It means the tracking pixel didn't fire — the person still filled out the form, called, or booked. The conversion happened; the ad platform just never heard about it.

Is this only a Safari/iOS problem? No. Safari's ITP and iOS's ATT are the biggest single contributors because of how widely Safari and iPhones are used, but Firefox's ETP, Brave, and ad-blocking extensions cut into tracking on every browser and platform.

Will fixing tracking make my campaigns perform better, or just report better? Both, over time. Reporting improves immediately because more real conversions get counted. Performance can improve too, because the ad platform's optimization algorithm gets fed more of the conversions that are actually happening, and can target toward them.

Do I need to remove my existing Meta pixel? Yes, once a first-party setup like Prism is live and connected — running both at once double-counts events. See Meta CAPI for the removal checklist.

Is this specific to Meta, or does it affect Google Ads too? Both are affected, though the mechanisms differ slightly — Meta's exposure runs largely through ATT and third-party cookie blocking, while Google Ads conversion tracking is hit primarily by the same browser-level cookie restrictions and pixel blocking.

Adsidian Prism — first-party server-side tracking.