All articles
Paid MediaOct 20267 min read

How to recover Meta Ads performance after iOS signal loss

A practical plan for rebuilding Meta Ads after iOS privacy changes: set up the Conversions API properly, optimise for the right event and measure against your own sales.

Apple's App Tracking Transparency (ATT) rules, introduced with iOS 14.5 in 2021, let iPhone users stop apps from tracking them across other companies' apps and websites, and many said no. Since then Meta has seen fewer of the purchases and leads its ads produce, and it sees them later and in less detail. Yet plenty of accounts still run on the set-up they had before: a browser pixel, campaigns optimising for whichever event still fires, and budget decisions based on numbers everyone knows are incomplete.

Recovering performance comes down to three steps. Send your conversions to Meta from your server through the Conversions API as well as through the pixel, make sure each campaign optimises for the conversion that actually earns you money, and judge results against your own sales figures and occasional holdout tests rather than Ads Manager alone.

This matters for two reasons. Meta's delivery system learns from the conversions you send it, so missing data makes it worse at finding buyers and each customer costs you more. And if your reports undercount, you may cut campaigns that work or keep ones that do not. The sections below show how to spot the problem, fix the data, choose the right event and build a measurement routine you can trust.

What changed, and what did not

Three things reduce what Meta sees. Conversions from iPhone users who decline tracking are handled through Aggregated Event Measurement (AEM), Meta's privacy-preserving method, which reports them in aggregate and with a delay. Browsers such as Safari and Firefox restrict tracking scripts and cookies, and ad blockers stop many of them. And in the EU, visitors who refuse advertising cookies on your consent banner should never load the pixel at all.

As a result, part of what Ads Manager reports is Meta's statistical estimate rather than counted events, and the gap between Meta's figures and your own records can be large in either direction. What has not changed is the mechanism underneath: Meta still optimises towards the signals you send. The better those signals, the better it finds buyers, which is why the fixes below repay the effort.

Signs your account never recovered from the iOS changes

Many accounts were patched in a hurry when the changes arrived and have not been looked at properly since. If any of these sound familiar, start there:

  • Events Manager shows purchases or leads arriving only from the browser, with no server events alongside them.
  • Server events exist but are not deduplicated, so some conversions are counted twice and your cost per result looks better than it is.
  • Campaigns optimise for add-to-cart or landing page views because purchases stopped tracking at some point and nobody switched back.
  • Lead campaigns optimise for any form submission, while your sales team says most of the leads are poor.
  • Budget decisions rest on Ads Manager alone, and nobody compares its figures with the orders or enquiries in your own systems.
  • Nobody has checked that your consent banner, your pixel and your server events work correctly together.

None of this needs a large project. Most of it can be checked in an afternoon in Events Manager and your shop system or CRM, the customer relationship management system where you track enquiries and customers, and fixed within a few weeks.

Set up the Conversions API properly, not just switched on

The Conversions API (CAPI) sends events such as purchases and leads from your server, or from your shop platform, directly to Meta. Because it does not depend on the visitor's browser, ad blockers and short-lived cookies affect it far less. Most shop platforms and tag management tools offer a ready-made connection, so it rarely needs custom development.

Switching it on is the easy part. The value comes from three details that are often skipped, and each is worth checking in Events Manager after launch.

First, deduplication. When the same purchase is sent from both the browser and the server, both copies must carry the same event name and the same event ID, so Meta counts it once. Without that, results are inflated and the system learns from a distorted picture.

Second, match quality. Meta can only connect a server event to a person if you send identifiers with it, such as an email address or phone number, hashed into an unreadable code before sending. Events Manager shows an Event Match Quality score for each event; if it is low, check which customer details you pass and whether your integration sends them correctly.

Third, value and timing. Send the order value and currency with every purchase, and send events as close to real time as you can, because late events are less useful for optimisation. If you collect leads, send their outcome later too, as the next section explains.

One European point is easy to get wrong: server-side tracking is not a way around consent. Under the General Data Protection Regulation (GDPR) and the EU's cookie rules, sending a visitor's data to Meta for advertising generally requires their permission, whether it leaves from the browser or your server. Pass each visitor's consent choice through to your server events, and have your data protection adviser check the set-up.

Optimise for the event that earns you money

When AEM launched, Meta asked advertisers to choose and rank up to eight conversion events per website. Meta has since dropped that requirement and handles the prioritisation behind the scenes, so if you are working from an old checklist, you can skip that step. The thinking behind it still matters, because Meta optimises for exactly the event you choose.

For a shop, that usually means optimising for purchases rather than add-to-carts, because many people who add to cart never buy, and Meta will find you more of whichever group you ask for. Choose the deepest event you get enough of: Meta's long-standing guidance is roughly 50 optimisation events per ad set per week. If purchases fall well short of that, combine ad sets before you settle for a shallower event.

For lead generation the gap between events can be much wider. Say 1 in 20 contact-form leads becomes a customer, but 1 in 4 people who book a demo do. If both count as a lead, Meta will happily find you more of the cheaper, weaker kind, so optimise for the booking, or at least send the two as separate events so you can see what each costs.

Where you can, give events a value. If your average first order is worth €3,000 and 1 in 4 demo bookings turns into a customer, each booking is worth about €750 to you and each contact-form lead about €150. Sending those values lets you compare campaigns on the money they are likely to bring in, not just the number of leads.

The strongest signal of all is what happens after the enquiry. If your CRM sends back, through the Conversions API, which leads became qualified or turned into customers, Meta learns which leads are worth paying for, and campaigns using Meta's instant forms can be set to optimise for the leads that progress once you have enough volume. It takes some set-up, but for a business that lives on enquiries it is usually the most valuable fix on this list.

Measure with your own numbers as well as Meta's

You don't need perfect attribution to make good decisions; you need enough signal to know whether you are pointing in the right direction. For most growing businesses, that signal comes from three layers used together:

  • Use platform reports for direction: Ads Manager is still the right place to compare ads, audiences and campaigns with each other, even when its totals are not exact.
  • Use your own sales data for the real cost: divide total marketing spend by the new customers your shop or CRM recorded in the same month, which gives a blended cost per new customer that no platform can inflate.
  • Use holdout tests for cause and effect: switch Meta off in part of your market for a few weeks and compare sales with the part where it kept running.

You don't need perfect attribution to make good decisions; you need enough signal to know whether you are pointing in the right direction.

A simple holdout works like this. Say you sell across Germany: pick a group of regions that together bring in about a fifth of your sales, pause Meta there for four weeks and keep everything else unchanged. If sales in those regions drop by 15% relative to the rest of the country, compared with how the two groups moved before the test, you have a usable estimate of what Meta adds. Smaller markets such as Austria or Hungary offer fewer regions to work with, so choose ones with similar sales histories and run the test for longer.

Media mix modelling (MMM) is the next step up: a statistical model that estimates each channel's contribution from your history of spend and sales. It needs a long run of weekly data and enough variation in spending to tell channels apart, so for many smaller businesses it is a later project. When you do build one, regular holdout tests are what keep it honest.

What to do this month

  1. Open Events Manager and check, event by event, whether purchases or leads arrive from both browser and server, and whether they are deduplicated.
  2. Compare last month's Meta-reported conversions with the orders or enquiries in your own systems, and record the gap so you can track it over time.
  3. Raise Event Match Quality by sending hashed email addresses and phone numbers with server events, for customers who have given consent.
  4. Move each campaign's optimisation to the deepest event you get enough of, and send strong and weak lead types as separate events.
  5. Start reporting blended cost per new customer every month, and schedule your first holdout test for a period without big promotions.
VP
Valentin Plósz
CEO, scealy
Ready to build a revenue system?
Book a free strategy call and let's scope what's possible for your business.
Let's talk →
Previous
PLG vs. sales-led growth: how to choose, and how to combine them
Next
How to build a CRO programme from scratch in 90 days