Facebook retargeting after iOS 14: which audiences still work
Website custom audiences shrank because membership depends on the browser: shortened cookies, declined tracking prompts and blockers each break part of the chain. The sources that held up are the ones Meta recorded on its own surfaces (video views, page and profile engagement, lead form opens) plus a customer list you upload yourself, because none of them need a cookie to work.
Retargeting did not stop working after iOS 14. One source of retargeting audiences did, and it is the one most small accounts were built on: people who visited your website. Almost everything else in the audience picker was never in the browser's hands to begin with.
Why the website audience shrank
A website custom audience is not a list your site keeps. It is a list Meta keeps, and a visitor joins it only when two things happen: the pixel fires on the page, and Meta ties that hit to a real account. Three forces break one half or the other. A blocked request keeps the person out of the pool entirely. A cookie capped at days rather than months lets them in and forgets them sooner, so the longer windows stop filling. A declined tracking prompt keeps the visit but leaves fewer identifiers to match on.
Those failures do not add up to one number, which is why "how much did I lose" has no answer you can compute inside the account. The same forces cost the pixel its conversions, which is the subject of the piece on the Conversions API. Here the consequence is narrower: fewer people join the pool, and the ones who joined leave it sooner.
A two-minute check: put the size of your 30-day website visitor audience beside sessions in your own analytics for the same 30 days. They will not match, because one counts Meta accounts and the other counts sessions. What matters is the ratio: if the audience is a small fraction of traffic and shrinks again next month while traffic holds, matching is the problem, not demand.
Sort every source by where the interaction happened
One question separates the audiences that held up from the ones that did not: did the thing happen inside Facebook or Instagram, or on a page in somebody's browser? On Meta's own surfaces the person was signed in and the app recorded the action itself, with no cookie involved.
| Audience source | Where the interaction happens | Needs the browser to cooperate |
|---|---|---|
| Website visitors, product views, add to cart | The visitor's browser | Yes |
| Video views on Facebook or Instagram | In feed, on Meta's own player | No |
| Instagram account: profile visits, post and ad engagement, messages | Inside the app | No |
| Facebook Page: page visits, post and ad engagement, messages | Inside the app | No |
| Lead form opened, opened and not submitted, submitted | Inside a form Meta hosts | No |
| Instant Experience opened or clicked | Inside the ad unit | No |
| Customer list uploaded from your CRM | Your own records | No |
| Server events through the Conversions API | Your server | Partly: needs an identifier you already hold |
Retention caps differ by source, and Meta moves them: engagement sources run up to a year for video views and for page or profile engagement, while website audiences cap at 180 days and lead form audiences shorter still. Treat that as the current shape rather than settled law: the number worth trusting is the one the picker shows when you build the audience, not the one in an article, this one included.
Why a small pool gets expensive
A shrinking pool is not only fewer people to reach. Past a point it changes what reaching them costs, for four reasons that are all arithmetic.
- –Delivery runs out of choices. Given a large pool it buys the impressions it expects to be cheap and skips the rest. Given a pool the daily budget covers in full, there is nothing to skip: it buys the worst matches too, at auction price.
- –Frequency climbs in days instead of weeks. It is impressions divided by reach, and a small denominator gets there fast. Frequency rising while link CTR falls is the fatigue pattern, arriving earlier than on a cold audience.
- –The ad set can sit at learning limited. Meta's benchmark is roughly fifty optimization events per ad set per week, and a pool that cannot produce fifty conversions does not get there by waiting.
- –Your own ad sets bid against each other, because the same person sits in viewed-7-days, viewed-30-days and watched-a-video at once.
Splitting feels like precision. Four ad sets over one small pool are not four experiments: they are one audience paying four entry fees and learning nothing, four times over.
How to combine what is left
The move is the opposite of segmenting: one pool large enough to be worth delivering into, carried by the sources that never needed a cookie.
- 1.Build the platform-side audiences first: video viewers, page and profile engagers, lead form openers. Then read the size the picker reports for each one, your website audience included. That comparison is specific to your account, and no average substitutes for it.
- 2.Include them together in one ad set instead of one ad set per source. Several custom audiences in the same ad set are combined with OR, so delivery works the union rather than its smallest piece.
- 3.Put the website audience inside that union rather than on its own. It is the only source here where the person left the feed for your site, and also the one that stopped filling reliably: keep it, do not lean on it.
- 4.Exclude existing customers with a list from your CRM, not with a pixel event. A pixel-based exclusion has the same holes as pixel-based inclusion, so you keep paying to show ads to people who already bought. Re-upload it on a schedule: a one-time upload decays quietly and nothing complains.
- 5.If the union still cannot deliver, stop pointing budget at it and use it as a lookalike seed instead. Meta's documented minimum is 100 people from a single country, and it recommends more. What you control is what the seed is made of: a list of buyers is a different instruction from a list of everyone who ever loaded the page.
What server events give back, and what they do not
The Conversions API is usually filed under reporting, but the same events can build audiences. An event sent from your server carries a hashed email or phone, so Meta can match the person without any cookie having survived, and a website custom audience built on that event fills from the server copy too.
The limit is built into the mechanism. Your server can only send an identifier you already hold, which means the steps where somebody handed one over: a form submit, a checkout, a booking. Anonymous page views stay in the browser. Server events restore the bottom of the retargeting funnel and leave the top of it thin, one more argument for letting the platform-side sources carry the pool.
In Aevin that path starts in the CRM: a lead reaching a stage flagged qualified or won sends the event from the server, with email and phone hashed before they leave. The flags fire it, not the stage name, so renaming a column changes nothing.
The check that keeps this honest
Audience sizes drift down quietly, and cost per result moves last, the way it always does.
- –Write down the size of every audience you use, once a month. The trend tells you more than the number.
- –Watch frequency on the retargeting ad set specifically. A shrinking pool shows up there before it shows up in cost per result.
- –Confirm each source in the union is still producing. A page that stopped posting stops producing engagers, a video that stopped running stops producing viewers. Neither raises an error, the audience just gets smaller.
Do website custom audiences still work after iOS 14?
They work, they just fill more slowly and hold fewer people. Membership needs the pixel to fire and Meta to tie the hit to an account, and shortened cookies, declined tracking prompts and blockers each break one of those. Rather than assume a percentage, compare your audience size with your session count and watch that ratio month to month.
Which Meta retargeting audiences are not affected by iOS tracking?
The ones built from activity on Meta's own surfaces: video views, Facebook Page engagement, Instagram account engagement, lead form opens and submits, Instant Experience opens. The app recorded those directly from a signed-in person, so no browser cookie is involved. A customer list you upload from your CRM is browser-independent too.
How small is too small for a retargeting audience?
There is no single number, and any threshold you read is a heuristic rather than a rule. The practical test is delivery: frequency climbing within days, an ad set stuck at learning limited, or cost per result rising while CTR holds. Any of those means the pool is too small for the budget pointed at it, so combine sources or lower the budget instead of splitting further.
Does the Conversions API bring my retargeting audiences back?
Partly. Server events can add people to an audience without a cookie, but only for the steps where you already hold an email or phone: a form submit, a purchase, a booking. Anonymous page views cannot be recovered that way, so the top of the retargeting funnel stays browser-dependent.
- The monthly ad account review: eight checks and the order to run themA monthly Facebook ads audit in eight checks, run in the order that saves time: what to compare month to month, and which checks live outside Ads Manager.
- Facebook Conversions API in plain English: why the pixel alone is not enoughWhat the Facebook Conversions API is, why the pixel loses events to iOS, Safari and ad blockers, how event_id deduplication works and what to check after.
- Your Meta ads stopped delivering: what to check, in orderFacebook and Meta ads stopped spending? Check status, rejections, spend limits, billing, audience size, overlap, schedule and learning, in this exact order.
