B2B match rates.
Why B2B contact lists match so poorly on ad platforms, native match-rate benchmarks for LinkedIn, Meta, Google, Reddit, and X, and how identity enrichment pushes them to 70-99%.
A B2B match rate is the percentage of your uploaded contact list that an ad platform can connect to real accounts. Raw B2B lists match 2-20% because people register their personal accounts with personal emails, not the work emails in your CRM. Identity enrichment maps the two together and pushes match rates to 70-99%.
If you've ever uploaded a clean list of 3,000 target contacts to LinkedIn and watched it match 600, you already know the problem. You did everything right. The platform still couldn't find most of your people.
This is the single most misunderstood number in B2B paid advertising. So let me break it down.
This article covers what a match rate actually is, why B2B lists match so badly (the structural cause, not the surface symptom), per-platform benchmarks for LinkedIn, Meta, Google, Reddit, and X, how to read the number correctly, and how to fix it.
It's part of the contact-level marketing system. Matching your list is the step that has to work before any of the rest does.
What a match rate is.
You take a list of contacts. You upload it to an ad platform as a custom audience. The platform tries to find each person and connect them to a real account.
The match rate is how many it found, as a percentage of what you uploaded.
Upload 1,000 contacts, the platform matches 400, your match rate is 40%. The other 600 will never see your ads. They're on your list, you're paying for the campaign, and they're invisible.
LinkedIn defines it as "the percentage of the entries in your source data that successfully matched with either member accounts or Pages" (LinkedIn Help). Google calls it "the percentage of your uploaded customer list that can be connected to Google users" (Google Ads Help). Same idea everywhere.
Here's the part most people miss: a match rate tells you about your data, not your campaign. Google says it plainly — the number "isn't an indicator of list performance." It's an indicator of whether you uploaded identifiers the platform can actually use.
That distinction is the whole article.
Why B2B lists match so poorly.
The cause is structural. It's not your list quality.
Your CRM stores business emails. sarah.chen@acme.com. That's how your sales team reaches her. That's what HubSpot or Salesforce captured when she filled out a form.
But Sarah didn't sign up for Facebook with sarah.chen@acme.com. She used sarah.chen@gmail.com, the personal email she's had since college. Same for her Instagram. Probably her personal Google account. Her Reddit handle has no email you'd recognize at all.
So when you upload her work email, the ad platform searches its database — which is built almost entirely from personal account registrations — and finds nothing.
The business email you have and the personal identifier the platform matches on are two different things. That gap is why B2B match rates collapse.
Primer measured a B2B list with only business emails matching a "mere 2%" on Google, and put Meta at a "modest 10-20%" on the same kind of list (sayprimer.com).
That's not a bad list. That's the wrong identifier.
In a typical CSV you have 1-3 data points per contact — name, company, work email. Identity enrichment adds 50-70 data points per contact, including the personal identifiers the platform was looking for the whole time. More correct identifiers, more matches. That's the entire mechanism.
And it compounds with audience size, which most people forget. The match isn't all-or-nothing per person — the platform tries each identifier you give it. Hand it one work email and you get one shot, against the one database where that email almost certainly isn't registered. Hand it a personal email plus a phone plus a name, and you get three shots against the databases where those identifiers actually live. Google's own figures show this directly: a second match key grows the matched list by 28% on average, a third by 35% (Google Ads Help).
So the structural cause has a structural fix. You're not improving the list. You're changing what the platform gets to look for.
I break down exactly how that enrichment works in contact-level targeting.
Match-rate benchmarks by platform.
Native ranges below come from each platform's own docs or from published B2B practitioner data, cited inline. The enriched column is what we see at ContactLevel: 70-99%, versus roughly 30% on a native CSV upload and as low as 20-50% on some platforms.
One honest caveat first. Most platforms don't publish a single "typical" number — Google's own match-rate page states no average, and LinkedIn's gives a floor, not a benchmark. So the native ranges are the most credible figures I could verify, not official guarantees. I've hedged where the data is thin.
| Platform | Native B2B match (business emails) | Activation minimum | With identity enrichment |
|---|---|---|---|
| ~60-85% on contact lists with multiple fields; far lower with email only | 300 matched members (LinkedIn) | 70-99% | |
| Meta | ~10-20% B2B with business emails (sayprimer) | 100 matched | 70-99% |
| Google Customer Match | B2B ~2% with work emails; 29-62% typical mixed lists (sayprimer, Store Growers) | 100 to show a match rate, ~1,000 to serve (Google) | 70-99% |
| No published B2B figure; hashed-email upload, personal-account-based | 1,000 matched (Reddit) | 70-99% | |
| X | No published B2B figure; personal-account-based | 100 matched to target (X) | 70-99% |
A few things jump out of that table.
LinkedIn is the outlier on the high side. It's the one platform people register with a work-adjacent professional identity, and it's the only one with native professional filters. So a clean contact list with a work email plus a LinkedIn URL plus a name matches well. Strip it down to email only and even LinkedIn drops.
One LinkedIn-specific thing worth knowing: a company list and a contact list behave differently. A company list matched by name plus Company Page URL routinely matches 90%+, because there are far fewer companies than people and the identifiers are public. A contact list is the hard one — that's where the personal-versus-business email gap bites, and where enrichment earns its keep. If you're targeting named buyers, you're running a contact list, so the contact-list numbers are the ones that matter to you.
Meta and Google are where B2B lists go to die. No professional filters, personal-account databases, and a 2-20% native match on business emails. Without enrichment, B2B targeting on these platforms is mostly guesswork — which is exactly why so many B2B teams stay stuck on expensive LinkedIn inventory at ~$30 CPMs instead of reaching the same person on Meta for as little as ~$3.
Reddit and X don't publish B2B match figures, so I won't invent one. What I can tell you: both build audiences from personal accounts, so the same business-email problem applies, and each enforces its own audience-size floor before you can target — 100 matched accounts on X, 1,000 on Reddit.
What is Google Customer Match.
Since "what is Google match" is one of the questions that sends people to this page, here's the direct answer.
Google Customer Match is the feature inside Google Ads that lets you upload a list of customer emails, phone numbers, or mailing addresses and show ads to those exact people across Search, YouTube, Gmail, and the Display network.
You upload the list. Google hashes it, matches it against signed-in Google accounts, and builds an audience segment you can target or exclude.
The catch for B2B is the same one running through this whole article. A "customer match list" built from business emails matches a personal Google account about 2% of the time. Google needs the personal email or personal phone number to connect the dots — the work email rarely does it.
That's why Customer Match feels broken for B2B teams and works fine for B2C. B2C customers hand over the personal email they signed up to Google with. B2B contacts never do.
Enrichment closes that gap by supplying the personal identifiers Google can actually match.
How to read a match rate.
Two numbers matter, and people fixate on the wrong one.
Match rate is a percentage. Audience size is an absolute. You need both, and they trade off against each other constantly.
A 90% match on a 1,000-person list reaches 900 people. A 40% match on a 5,000-person list reaches 2,000. The lower percentage reaches more humans. Percentage alone lies to you.
Now flip it. A 95% match rate on a 250-person ABM list looks great — until you remember LinkedIn needs 300 matched members to activate the audience at all. High percentage, dead campaign. The absolute number was always the constraint.
So read it like this:
→ Check the absolute first. Will enough people match to clear the platform minimum? 300 on LinkedIn, 100 on Meta and X, and 1,000 on Reddit and Google Customer Match.
→ Then check the percentage. A low rate on a list that clears the minimum still means you're paying to chase people you can't reach, and your contact-level attribution gets noisier because half your list is invisible.
→ Watch the obvious-error signal. LinkedIn shows a match rate under 5% when fewer than 300 accounts match. A near-zero rate is almost never a real result — it's a formatting or column-header mistake. Fix the file before you blame the list.
The reason I care so much about the absolute: with a native 30% match rate, 70% of your list never sees a single ad. You built the audience. You're paying for it. Most of it is dark.
How to improve B2B match rates.
Three levers, in order of impact.
1. Add identifiers per contact.
This is the biggest one. Every platform matches better with more fields.
Google's own data shows advertisers who upload a second match key grow their matched list by 28% on average, and a third key by 35% (Google Ads Help). LinkedIn match rates climb when a contact has a work email plus a LinkedIn URL plus a name, not just one field.
So stop uploading email-only. Upload everything you have: work email, personal email, phone, first name, last name, company.
The problem is your CSV doesn't have most of those. It has the 1-3 fields the form captured. Which is why this lever runs straight into the next one.
2. Enrich the identity.
You can't match on identifiers you don't have. Identity enrichment maps the business email you do have to the personal email, personal phone, and account-level identifiers the platforms match on — adding 50-70 data points per contact.
This is the lever that moves 2-20% native to 70-99%. The other two help at the margins. This one changes the category of result.
It's the difference between handing Meta a work email it's never seen and handing it the personal email Sarah actually signed up with.
3. Clean the formatting.
The boring one that still trips people up. Wrong column headers, unhashed data where hashing is required, country codes missing from phone numbers, trailing spaces.
If your match rate comes back near zero, this is usually why. Check the file format against the platform's template before you conclude anything about your data.
Do these three and the same list that matched 600 out of 3,000 matches 2,400+. Same contacts. You just gave the platform identifiers it could use.
Where match rates fit.
A high match rate isn't the goal. It's the prerequisite.
It's what makes every other contact-level play possible. You can't run a contact-level advertising campaign to people the platform can't find. You can't reach a full buying committee on Meta if 85% of it is unmatched. You can't attribute an ad click to Sarah Chen by name if Sarah never matched in the first place.
Match rate is the floor everything else stands on.
It's also why the same enriched list works across all five platforms at once. Once you've mapped business identities to personal identifiers, the same person is reachable on LinkedIn, Meta, Google, Reddit, and X — and you get to pick the cheapest inventory instead of overpaying for one channel. I covered that cost math in contact-level advertising.
If you're running B2B paid ads and your match rates sit below 50%, you're not reaching most of the people you're paying to reach. Fix the identifiers, and the rest of the system finally has something to stand on.
Go deeper.
B2B match rates are one piece of the contact-level marketing system.
System:
→ Contact-level targeting — how identity enrichment works, the business-to-personal identity graph, and match-rate mechanics by platform.
→ Contact-level advertising — the paid distribution layer: multi-platform reach, CPM math, and contact-level attribution.
Playbook:
→ LinkedIn matched audiences — the step-by-step setup for uploading and matching a contact list on LinkedIn, including the 300-member gotcha.
Pricing:
→ See pricing — ContactLevel starts at $1,000/month for 10,000 contacts, with a 14-day free trial and 1,000 contacts included.