What your custom audience match rate breaks
Your Facebook custom audience match rate decides how much of your exclusion holds and which customers your lookalike was built on.
Your Facebook custom audience match rate decides how much of your exclusion holds and which customers your lookalike was built on.
You export 6,000 buyers from the shop, upload the CSV, and Meta builds an audience of about 2,000. Nobody stops on that gap. You set the audience as an exclusion on the prospecting campaign, because the whole point of prospecting is finding people who have not bought yet, and you get on with the creative.
Four weeks later the campaign reports 340 purchases at a cost per acquisition you are happy to defend in a meeting. Some of those 340 were customers. You have no way of knowing how many.
Short answer: Your Facebook custom audience match rate is the share of your uploaded list that Meta could link to a real account. It is not a reporting detail. Everything built on that list, the exclusion that keeps buyers out of prospecting and the seed under your Lookalike Audience, only covers the matched share. The rest still sees the ads.
The takeaways
The match rate is the share of your uploaded list that Meta could tie to a real account. You hand over a file, the identifiers get hashed (Meta's Marketing API documentation requires SHA256 and states it supports no other hashing mechanism), the hashes are compared against Meta's own records, and whatever lines up becomes the audience. That is the whole mechanism. It is a property of your file and of Meta's records on the day you uploaded, and it moves every time you refresh.
There is no certified figure handed back to you. You get an audience with a size on it, and if you want a rate you divide that size by the number of rows you sent. So the number every guide tells you to optimize is one you estimated yourself.
Every reason is the same reason: the identifier you hold is not the one that person used on Meta. Someone signed up with a private address in 2014 and gave you their work address at checkout. Someone changed jobs, so the company domain sitting in your CRM now belongs to nobody. Someone never opened an account. Someone's number is in your file without a country code.
Here is the part that matters. None of this removes a random slice of your list. A file of business email addresses loses the buyers who keep their private life off a company domain. A file collected at checkout with a phone number matches better than one collected by a webinar form that asked for an email and a company name. Whatever your data collection favors, your matched subset inherits.
Half of it holds. The audience Meta built is the fence, and the rows that did not match are not inside it. They stay eligible for the prospecting campaign like anybody else. They see the ad, a few of them buy again, and that purchase gets counted in the campaign you were reading as new-customer acquisition.
The wasted spend is the small part of this. A returning buyer is usually a cheap conversion, so the leak makes prospecting look better than it is, and you scale toward an audience that was warm all along. Ads Manager will not flag any of it, because from its side nothing went wrong.
Treat the exclusion as partial by design. Fence existing customers structurally as well: a separate campaign or ad set for them, and a new-customer share you measure in your own shop data, where a customer ID is a fact rather than a matching attempt.
A Lookalike Audience models the seed you give it, and the seed is the matched subset. Hand Meta 2,000 matched rows out of 6,000 buyers and it goes looking for people who resemble those 2,000. If matching were random, that would cost you a little precision and nothing else.
It is not random, which is the problem. The seed leans toward buyers whose private address or phone number you happened to capture, who are on Meta, and who have changed nothing since. The model is faithful to that group. It is a poor model of your customer base.
Value-filtered seeds get thin twice over. Take the same 6,000, cut to your top 500 spenders, match 300 of them, and the lookalike rests on 300 people selected once for how much they spent and once for how findable they were.
Send more columns. Meta's documentation lists email addresses, phone numbers, names, dates of birth, gender and locations among the identifiers a customer file can carry, and a single email column gives it exactly one way to find each person. Most CRMs hold three or four of those fields and export one.
Clean the file before you blame the platform: trim the whitespace, dedupe, lowercase everything, and put every phone number in one format with the country code in front of it.
Split by recency. A list of everyone who ever bought drags a decade of dead addresses behind it, and the last 12 months both matches better and makes a sharper seed.
Then stop. No match rate closes the exclusion, so the final step is structural: assume a leak, size it against your own data, and stop reading the platform's audience as a complete record of who you already sold to.
None of this answers the question underneath it, which is who your buyers are and how they talk. A match rate only reports which of them Meta recognized.
Adscalr does not upload customer lists, connect to a CRM, or build custom audiences. It never sees your buyer data. The audience intelligence side works from the other direction: it searches 5 named public sources (Reddit, Amazon reviews, the App Store, Google Play, and forums you seed with your own and competitors' URLs), pulls the exact phrases people use, and maps them to awareness stages. Knowing what your buyer says does not depend on a file matching.
If the targeting side is what you are stuck on, broad versus detailed targeting covers the other half of the question. And when the campaign numbers themselves look off, Meta's conversion count against your real sales is the related read.
This is the thinking behind Adscalr.
See the product →