Facebook Event Match Quality low for CRM events: what decides it and how to raise it
Short answer
Send both email and phone, lowercase and trim before hashing, format phones as digits with country code, and include fbclid, IP and user agent. Empty or throwaway CRM contacts cannot match.
Event Match Quality is that 0 to 10 score in Events Manager next to your server events. Most people see a low number, shrug, and move on.
Don't. It's the most honest report you'll ever get about your CRM, and it comes free.
What it measures is how well the details you sent let Meta match an event to a real person: hashed email and phone, the click ID, IP address, user agent. More good details, better score. The word to focus on is "good".
Here's what actually moves it, roughly in order of how much it hurts when it's wrong.
Send both email and phone, not just one. Two chances to match instead of one. A lead who gave a work email on your form and uses a personal one on Facebook can still be found by their phone.
Clean before you hash. Lowercase and trim the email. Format the phone as digits with the country code. A badly formatted value hashes into something that matches nobody, and the hash looks perfectly fine, so nothing tells you it's broken. Here's the classic: "+1 (555) 010-0199" hashed as typed is a different value from "15550100199". Same phone, two hashes, only one that matches.
Include the click ID (fbclid) when you have it. It's the strongest single signal for a lead who clicked an ad, because it names the click.
Include IP address and user agent for website events.
And then the uncomfortable one: look at the CRM itself. Half-empty contacts, throwaway emails and numbers with no country code can't match no matter how perfectly you send them. Match quality is partly a data hygiene score, and it will happily tell you your CRM is a mess. If half your contacts have neither an email nor a phone, no tool can fix that.
The easiest way to see what Meta actually received is the Test Events tab in Events Manager. It shows the parameters that arrived, so you can see whether the phone number came through in the right shape.
There's a bigger idea worth taking away. Match quality is not a sending problem, it's a capture problem. The moment to get good data is when the person is in front of you, on the form. Fixing it downstream, in an export, is like trying to un-scramble an egg.
A second-order point people miss: a low match score doesn't just mean fewer matched sales. It means the sales that do match are a biased sample: the people who happen to have clean, complete contact details. Meta ends up learning the profile of "customers with tidy records", which isn't the same as "customers".
So raising match quality improves both the size of the signal and its honesty. If you can only do one thing this month, make the form require a phone number that includes the country code, and validate the email. It's the cheapest improvement in the whole pipeline.
A 15-minute test you can run today. Submit a test lead through your own form with a made-up but well-formed email and phone, and move it through one stage. Then open Test Events and look at the parameters that arrived. If the phone isn't there, or the email arrived in a strange shape, you've found where your score is being lost. It's the fastest way to turn "our match quality is low" into a specific thing to fix.
What's your score, and what was the biggest single thing that moved it?
For reference, DataCops sends the click ID plus hashed email and phone with each event, and the delivery log shows whether each one was sent, held, skipped or failed. A low score is usually a CRM data problem, not a sending problem.
DataCops in short
For this question: DataCops sends hashed email and phone, formatted before hashing, plus the click ID, IP and user agent where it has them, which is what lifts match quality on CRM events.
DataCops is a tool that makes the ads learn from real sales: it sends booked, showed, won and paid stages from your CRM back to your ad platforms, gives every visit a bot verdict with a Real people only switch per platform, warms up new campaigns with your existing customers, and logs every send. It is not an attribution report.
How DataCops does it
- The sale after the form. HighLevel natively (lead, booked, showed, won with value, paid; cancelled, no-show and lost are never sent), any other CRM through a private webhook, matched to the click by click ID or hashed email and phone.
- The click is kept on the server. Click IDs are stored for up to 90 days, so a deal that closes weeks later still finds its click.
- Real people only. Every visit gets a bot verdict against 360+ billion IPs and 350+ monitoring points, with a Real people only switch per ad platform, off by default. CRM events carry no bot flag.
- Counted once, logged every time. Pixel and server events share an event ID, and a delivery log shows each send as sent, held, skipped or failed, with the reason.
- One script, one DNS record. Collection runs on your own domain; with DNS on Cloudflare, the free Worker reads the click at the edge before the page loads.
Best for: ad-funded businesses whose sales close in a CRM or on a call: clinics, home services, agencies, B2B and lead gen.
Ads Warmup: tell the ads who pays
Ads Warmup, DataCops' flagship feature, sends customers you already have to Meta, Google Ads and TikTok before a new campaign spends: upload a CSV (only email is required, up to 20,000 rows), see a 0 to 10 match score per person, pick the event, and send. Rows are dated when you send, and Google Ads credits only people who clicked a Google ad. Preview is free; sending needs a paid plan. Check your own consent basis for the list first. See Ads Warmup.
Ways to do this job
| Option | Best for |
|---|---|
| DataCops | CRM stages to Meta and Google Ads, with a bot verdict and a delivery log |
| Zapier or Make | One simple CRM-to-ad flow you build and maintain |
| Direct API upload | Teams with an engineer |
| Manual CSV upload | Occasional batches |
When not to use DataCops
- You want a reporting dashboard. DataCops cleans and sends what goes into your ads. It is not a multi-touch reporting layer.
- Your sales never leave one store checkout. If everything happens in one checkout, the platform's own pixel plus server events may be enough.
Sources and further reading
More on this: Meta offline conversions, and the complete guide to offline conversion tracking.
If your score is stuck, try this order: fix the phone format, add the second identifier, then look at how many contacts have neither an email nor a phone at all. That last number is often bigger than people expect.