Meta's Event Match Quality (EMQ): How to Raise Your Score and Lower Your CPA
8 min read · AstraLoop Studio
Every time someone buys, fills out a form, or adds a product to their cart, your site sends Meta an event. But that event is only worth something if Meta can link it to a real person on Facebook or Instagram. If the link fails, the algorithm doesn't know who to credit the conversion to, doesn't learn who actually converted, and you end up paying more for every single acquisition.
Event Match Quality (EMQ) is the score Meta uses to tell you how well that link is working. It runs from 0 to 10, lives inside Events Manager, and depends on almost one thing alone: which and how many customer identifiers you send with every event. The more signal you send, the better optimization works. In this guide we'll look at how to read the score, which identifiers actually move the needle, and how to get it stably above 8.5. If you're starting from zero, it's worth framing the topic first with the complete guide to conversion tracking.

What Event Match Quality is and where to find it
EMQ measures the probability that Meta will match one of your events to a real account, based on the customer information you send (email, phone, technical identifiers, and so on). You'll find it in Events Manager: select the data source, then the individual event, and the dedicated tab shows the score and its trend over time. The value matters most for events sent via Conversions API, i.e. server-side, where you have full control over what you send.
The score reads on a 0-to-10 scale, with qualitative labels. Simplified:
- Poor (under 4): Meta matches very few events, optimization is running almost blind.
- Fair (4 to 6): you're leaving a lot of signal on the table.
- Good (6 to 8): it works, but there's room to recover.
- Great (8 to 10): the algorithm is getting clean signal. The practical target is to stay above 8.5.
Why a low EMQ makes you pay more
The chain is straightforward. Meta optimizes campaigns toward people similar to those who have already converted. To do that, it needs to know who converted. If EMQ is low, part of your conversions stay anonymous: the algorithm struggles to count them, builds weaker lookalike audiences, and allocates budget less precisely. You see the result in a rising customer acquisition cost for the same spend.
There's also a resilience angle. Since browsers started limiting cookies and client-side tracking, the pixel alone loses events. Pairing it with server-side tracking doesn't just recover volume — it lets you send identifiers the browser never exposes, which is exactly what raises EMQ. It's no coincidence the score is the most direct gauge of your first-party data health.

The identifiers that actually matter
Not every parameter carries the same weight. Email and phone are the two strongest signals, because they identify a person almost uniquely. Technical identifiers (fbc, fbp) and your own customer ID add robustness. Demographic data (name, city, zip code) count for little on their own, but combined they help the match. Here's the operational map:
| Identifier | Match strength | Operational notes |
|---|---|---|
| Very high | SHA-256 hash, all lowercase, no spaces | |
| Phone | Very high | SHA-256 hash, international format (E.164) |
| External ID | High | Your customer/CRM ID, sent hashed |
| fbc (click ID) | High | Derived from the fbclid parameter on an ad click |
| fbp (browser ID) | Medium/high | Taken from the site's _fbp cookie |
| First and last name | Medium | Hashed, useful in combination with other fields |
| City, zip, state, country | Medium | Hashed, reinforce the main fields |
| IP and user agent | Medium | Server-side only, must NEVER be hashed |
| Date of birth, gender | Low/medium | Hashed, marginal contribution |
The rule of thumb: start with email, phone, and external_id on every event, then add fbc and fbp for the technical layer. Send these five fields correctly and you'll almost always break the 8.5 mark.
How to break 8.5: the checklist
- Turn on Conversions API alongside the pixel. The most solid way to raise EMQ is to send events twice, from the browser (pixel) and from the server (CAPI), deduplicating them with the same event_id so Meta doesn't count them twice. The server can attach identifiers the browser never sees. You'll find the full process in the guide to pixel and Conversions API.
- Send email and phone on every event. They're the two strongest matchers. They need to go through as a SHA-256 hash, but normalized first: email lowercase with no spaces, phone with the international prefix. Many tools hash automatically — just make sure the upstream normalization is correct.
- Add the external_id. This is your customer identifier (from your CRM or order system). It links events even when email or phone arrive in different formats, and it improves deduplication between pixel and server.
- Capture fbc and fbp. The fbc comes from the fbclid parameter present in the URL when a user arrives from an ad: save it and attach it to subsequent events. The fbp is the pixel's _fbp cookie. Both are identifiers Meta matches with precision — but only if you actually send them.
- Normalize, then hash. An email with a capital letter or a stray space produces a different hash and won't match. The correct sequence is always: clean the data, then hash it. Never the other way around. And remember: IP and user agent are never hashed.
- Don't send empty or made-up fields. A parameter that's present but empty doesn't help and can sometimes confuse the match. Fewer good fields beat lots of dirty ones.
Want to know how much signal you're losing every month? Ask us for an audit of your Meta tracking setup: we'll show you where EMQ is dropping and what it's costing you.
Why the score won't budge (even when you're sending the data)
It happens: everything looks configured, yet EMQ stays flat. The recurring causes are few:
- Double hashing. The tool hashes a value that's already been hashed upstream: the result matches nothing. Decide where hashing happens and do it in exactly one place.
- Missing consent. If the user doesn't consent, a correctly built setup won't send personal data and EMQ drops. That's a trade-off to understand, not a bug — compliance comes before the score.
- Partial coverage. You send email and phone only on the Purchase event, not on Lead or AddToCart. The score needs to be raised across every event you optimize for.
- Leftover test data. Test events with fake data still active and dragging down the average.
EMQ, CRM, and offline conversions
Event Match Quality rewards whoever owns proprietary data. If you have a CRM, you have an edge: you can upload offline conversions from your CRM (sales closed by phone, in-store, contracts signed days later) with email and phone already verified. These are top-quality matches that hand Meta a signal the pixel will never see, because it happens off-site. This is the level where tracking and customer acquisition stop being two separate worlds and start feeding each other.
How to monitor it over time
Check EMQ per event and on a weekly cadence: it naturally fluctuates, so watch the trend rather than any single day's number. Focus on the events you actually optimize for (Purchase, Lead). A sudden drop is almost always a technical issue: a site update that stopped passing email and phone, or a modified server tag. Keep EMQ close to the other metrics that actually matter: when the score climbs steadily, cost per acquisition tends to follow it downward — which is exactly the result you're after.
Frequently asked questions
What's a good Event Match Quality score?
Above 8 you're in the "great" range: aim to break 8.5 and hold it steady. Between 6 and 8 it works, but you're leaving signal on the table; below 6 you're losing real optimization power.
Does EMQ really affect campaign costs?
Yes, indirectly but concretely. The more events get matched to users, the better the attribution and the more precise the algorithm — for the same budget, cost per acquisition tends to fall.
What data do I need to send to raise the score?
The two strongest are email and phone, sent hashed and normalized. Add external_id (your customer ID), plus fbc and fbp for the technical layer: with these five fields you'll almost always break 8.5.
Do I need Conversions API, or is the pixel enough?
The pixel alone rarely breaks 8.5, because the browser exposes few identifiers. Server-side Conversions API lets you send more data and recover lost events, raising the match rate.
Why did my EMQ suddenly drop?
In most cases it's a technical issue: a site update stopped passing email or phone, or broke the hashing. Check the event payload as soon as you notice the drop.
Do I have to hash the personal data myself?
Email, phone, and name need to be sent as a SHA-256 hash; IP and user agent don't. Many tools hash automatically, but the normalization (lowercase, no spaces, correct phone prefix) has to be right upstream.
If you want tracking that feeds both Meta's optimization and your CRM at once, without losing conversions along the way, let's talk.