Tracking & Attribution

How Do You Get a 9+ Event Match Quality Score?

EMQ 9+ needs hashed email and phone on every event, plus fbp, fbc, IP and user agent. Most accounts cap at 6-7 because their form only collects email.

Quick answer

Reaching a 9+ Event Match Quality score requires sending both hashed email and hashed phone on every conversion event, plus the _fbp and _fbc cookies, IP address, and user agent. Most accounts cap at 6–7 for a reason that has nothing to do with their tracking setup: their form only collects an email. You can only transmit what you collect, so your EMQ ceiling is set by your form, not your pixel.

Tell us what's broken. We'll fix your tracking — free.

Describe the tracking/attribution problem you're stuck on and we'll map it to a fix: server-side conversions to Meta, Google, TikTok and Pinterest, plus first-party tracking that survives Safari. No code required.

Reaching a 9+ Event Match Quality (EMQ) score requires sending both hashed email and hashed phone on every conversion event, plus the _fbp and _fbc cookies, the IP address, and the user agent. Most accounts cap at 6–7 for a reason that has nothing to do with their tracking configuration: their form only collects an email address.

That’s the thing almost nobody says out loud. You can only transmit what you collect. Your EMQ ceiling is set by your form, not your pixel — and no amount of server-side tooling raises a ceiling that was decided the day someone designed the signup form.


What counts as a good EMQ score?

Meta publishes four EMQ bands, and the practical implications differ sharply between them:

EMQ score Band What it means in practice
8.0 – 10.0 Great Events match reliably; the algorithm has full signal to optimise against
6.0 – 7.9 Good Most events match; some optimisation signal lost
4.0 – 5.9 OK Roughly half-strength signal; campaigns run but scale noisily
0 – 3.9 Poor Events arrive but aren’t usable — close to running no server-side tracking at all

Most guidance stops at “aim for 8.” That’s the floor of acceptable, not the target. The gap between 8 and 9.5 is smaller in raw score than the gap between 5 and 8, but it compounds differently: at 9+, Meta is matching effectively all of your conversions, so every optimisation decision the algorithm makes is based on the full picture rather than a sample. On a mature account spending real money, that difference shows up as steadier scaling and less erratic cost per result.

The practical target is therefore 9+ on your primary conversion event — Purchase or Lead, whichever you optimise toward. Upper-funnel events like ViewContent will always score lower for everyone, because anonymous browsers simply carry fewer identifiers.


Why is your EMQ stuck at 6 or 7?

Almost always because you’re sending an email and not much else — and that isn’t a bug in your tracking, it’s a consequence of your form.

Meta weights match parameters unequally. Hashed email carries the most weight; hashed phone is second. Everything after those two — names, location fields, browser cookies, IP, user agent — adds meaningful but smaller increments. Which produces a fairly predictable arithmetic:

What you send Typical EMQ band
IP + user agent only (no PII) 2 – 4
Hashed email only 5 – 7
Hashed email + _fbp / _fbc + IP + user agent 6 – 8
Hashed email + hashed phone + _fbp / _fbc + IP + user agent 9 – 10

Look at where the jump happens. Adding phone is the single largest step available to most accounts — bigger than any amount of server-side re-plumbing. An account running a flawless Conversions API integration on an email-only form is operating at its ceiling at 7. The integration isn’t underperforming; the form is.

This is why “improve your EMQ” advice so often disappoints. It’s written as a tracking problem — check your hashing, verify your event IDs, confirm your cookies — and those things genuinely matter. But if the email field is the only identifier your form ever collects, every one of those fixes lands you at the top of a band you can’t escape.

The ceiling is upstream. It’s a form-design decision, made before a single event fires.

A form collecting only an email producing a capped match-quality gauge, beside a form collecting email and phone producing a full gauge


Doesn’t requiring a phone number hurt conversion rate?

Yes — and pretending otherwise would be dishonest. Every additional required field costs some completion rate, and phone is among the more sensitive asks. A form that requires phone will typically convert a bit lower than one that doesn’t.

So the real question isn’t “does it cost anything” but “what does it buy, and can the cost be offset?”

What it buys: a jump from roughly 7 to 9+ on your primary conversion event, which means the bidding algorithm trains on matched conversions rather than a partial subset. For accounts where paid acquisition is the growth engine, better optimisation signal compounds over every future dollar spent. A slightly smaller number of leads, each of which teaches the algorithm properly, frequently outperforms a larger number it can’t match.

How the cost gets offset: by not losing the people who started. Conventional tracking only ever sees a phone number if the visitor completes and submits the form. Capture-as-they-type changes that arithmetic — a visitor who fills in email and phone and then abandons at the next field has already handed over the two highest-weight identifiers. Their event still carries full match data.

That reframes the trade-off. The conversion-rate cost of a phone field is real, but it’s calculated against completed submissions. When abandoned forms also produce usable, high-match events, the field earns its keep across a much larger share of traffic than the completion rate alone suggests.

Practical guidance: put email first and phone second, before any qualifying questions. If someone abandons, they abandon after the identifiers rather than before.


What else has to be right?

Collecting email and phone sets the ceiling. Four technical details determine whether you actually reach it:

  1. Normalise before hashing. Email must be lowercased and trimmed before SHA-256; phone must be reduced to E.164 digits only. +1 (415) 555-1234 and 14155551234 hash to completely different values, and a mis-normalised hash is accepted by the API while silently failing to match. This is the most common way a full-PII payload still scores badly.
  2. Never hash what shouldn’t be hashed. _fbp, _fbc, client_ip_address, and client_user_agent are sent as plain text. Hashing them doesn’t just fail to help — it removes signal the matcher would otherwise have used.
  3. Send _fbc in Meta’s format. When someone arrives from a Meta ad, the fbclid in the URL has to be wrapped as fb.1.<timestamp>.<fbclid>. The raw click ID on its own doesn’t match.
  4. Include external_id. A stable identifier for the person across events gives Meta an additional handle, particularly for repeat conversions. Get the collection right and these four wrong, and you’ll sit in the 6s wondering why. Get both right and 9+ is the expected outcome, not a lucky one.

How does PartialLeads deliver 9+ consistently?

When a form requires both email and phone, PartialLeads customers consistently land at EMQ 9 or higher. That’s an observed outcome across customer accounts, and it isn’t luck — it’s what happens when the collection problem and the technical problem are both solved in the same pipeline.

Both high-weight identifiers get captured — including from people who never submit. The tag records email and phone field by field as the visitor types, with a final flush before the page unloads. Completed submissions carry full PII, and so do abandoned ones, which means the share of your traffic producing a high-match event is substantially larger than your form’s completion rate.

Normalisation and hashing happen server-side, to Meta’s specification. Email lowercased and trimmed, phone reduced to E.164 digits, names lowercased — then SHA-256. The silent mis-hashing failure mode doesn’t occur, because the customer never writes the hashing.

The unhashed parameters are sent unhashed. _fbp and _fbc as cookie values, client_ip_address and client_user_agent from the actual session. When the _fbc cookie is missing but a fbclid was in the landing URL, it’s reconstructed in Meta’s required format server-side.

The visitor identity survives long enough to matter. The visitor ID is set by the server rather than by JavaScript, so Safari’s tracking prevention doesn’t sever it after seven days — which matters whenever the conversion happens days after the click.

And external_id ships on every event, giving Meta a stable handle across a person’s repeat conversions.

The result is a payload carrying the complete high-weight set — em, ph, fn, ln, fbp, fbc, client_ip_address, client_user_agent, external_id — on every dispatched event. That’s the configuration Meta scores in the 9–10 band.

The honest conditions. The 9+ outcome depends on the form requiring both email and phone — that’s the load-bearing precondition, and it’s why this article spends so long on form design. Beyond the payload, EMQ also has a platform-side component: Meta has to be able to resolve those people in its own graph. An audience of work email addresses with no consumer footprint can score lower even with a flawless payload. And keep a base Meta Pixel installed — the _fbp cookie it sets is a match input your server events reuse.

A complete set of match parameters flowing into a conversion event and producing a high match-quality score

The path to 9+, in one view:

What determines your score The mechanism How you verify it
Your form only collects email → hard ceiling ~7 Email and phone captured as the visitor types Both fields present on lead records, including abandoned ones
Submitted forms only → small high-match pool Partial capture: abandoned forms still carry full PII Partial leads in the dashboard with email + phone
Mis-normalised hashes silently fail to match Server-side lowercase / trim / E.164 before SHA-256 user_data values in Meta’s Test Events
Hashing fbp / fbc / IP / UA kills their signal Those four sent as plain text, per spec Readable values in the Test Events payload
Missing _fbc when the cookie didn’t set Reconstructed from fbclid in Meta’s format fbc beginning fb.1. on ad-click sessions
Safari severs the visitor ID before conversion Server-set first-party cookie, not JavaScript-written Conversions attributing days after the click

Setup is one tag. The free tier is enough to watch your EMQ move in Meta’s Events Manager before paying anything — and because the score refreshes roughly every 48 hours on a rolling seven-day window, you’ll know inside a week.


Tell us what's broken. We'll fix your tracking — free.

Describe the tracking/attribution problem you're stuck on and we'll map it to a fix: server-side conversions to Meta, Google, TikTok and Pinterest, plus first-party tracking that survives Safari. No code required.

Sources

  1. Meta Business Help — About Event Match Quality: https://www.facebook.com/business/help/765081237991954
  2. Meta for Developers — Customer information parameters: https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters
  3. Meta for Developers — Conversions API best practices: https://developers.facebook.com/docs/marketing-api/conversions-api/best-practices
  4. Meta for Developers — fbp and fbc parameters: https://developers.facebook.com/documentation/ads-commerce/conversions-api/parameters/fbp-and-fbc
  5. Meta for Developers — Test Events tool: https://developers.facebook.com/docs/marketing-api/conversions-api/payload-helper

Frequently asked questions

QWhat is a good Event Match Quality score?
Meta classifies 8–10 as "Great," 6–7.9 as "Good," 4–5.9 as "OK," and below 4 as "Poor." Most advice says aim for 8, but 8 is the floor of acceptable rather than the target. On your primary conversion event — Purchase or Lead — aim for 9 or higher, because that's where Meta is matching effectively all your conversions and the bidding algorithm optimises on the full picture. Upper-funnel events like ViewContent score lower for everyone and shouldn't be held to the same bar.
QWhy is my EMQ stuck at 7 even though my Conversions API setup is correct?
Because your form probably only collects an email. Hashed email is Meta's highest-weight parameter and hashed phone is second; with email alone plus browser cookies and IP, the structural ceiling is around 7 no matter how perfect the integration. This is a collection limit, not a configuration limit — which is why the fix is a form change rather than a tracking change. Add a phone field and the same pipeline typically moves into the 9s.
QDoes adding a phone field to my form actually raise EMQ that much?
It's the single biggest available increase for most accounts. Email-only payloads sit around 5–7; email plus phone plus `_fbp`/`_fbc`/IP/user agent typically reaches 9–10. Nothing else on the list moves the score as far, because the weighting is concentrated in those two identifiers. The caveat is that the phone number has to be normalised to E.164 digits before hashing — a formatted number hashes to a value Meta can't match, so a badly normalised phone field adds effort without adding score.
QWon't requiring a phone number reduce my form conversion rate?
Somewhat, yes — every required field costs completion, and phone is a sensitive ask. The honest trade is a slightly smaller number of leads that the algorithm can actually match and learn from, versus a larger number it partly can't. The cost also shrinks when abandoned forms still produce usable events: with capture-as-you-type, a visitor who enters email and phone and then leaves has already provided both high-weight identifiers. Put email first and phone second, ahead of any qualifying questions, so abandonment happens after the identifiers rather than before.
QCan I reach 9+ without collecting a phone number?
Rarely, and not reliably. Without phone you're leaning on email plus lower-weight fields — names, location, cookies, IP — which can reach the 8s in favourable conditions but doesn't hold there consistently. If a phone field genuinely isn't viable for your funnel, the next best levers are complete `_fbp` and `_fbc` values, `external_id` on every event, and correctly formatted name and location fields. Expect the high 7s to low 8s as a realistic outcome rather than 9+.
QHow long after making changes does EMQ update?
Meta refreshes the score roughly every 48 hours, calculated over a rolling seven-day window of events. Changes begin appearing at the next refresh and continue improving over the following week as older, lower-quality events age out. Validate the payload immediately in Meta's Test Events tool rather than waiting on the production score, then give the live number at least a week before judging the result.
QDoes a high EMQ guarantee better ad performance?
No — EMQ is a hygiene metric, not a performance metric. It measures whether Meta can match your events to real people, not whether those events represent valuable customers. A high-EMQ stream of low-quality conversions will still teach the algorithm to find more low-quality conversions. Get EMQ above 9 so the signal is usable, then make sure the events you send are the ones worth optimising toward. Both have to be right.

Find the qualified leads your forms are currently throwing away.

Install PartialLeads on one landing page, send traffic, and compare what your CRM captured against what PartialLeads recovered and qualified.