“Our EMQ is 4.2. Is that bad?” I get this question almost every week. Event Match Quality is Meta’s score, out of 10, for how well it can connect your events to real people on Facebook and Instagram. A low score means Meta cannot see who converted, so it cannot learn who to show your ads to.
Where to find your score
Events Manager → your dataset → click an event (start with Purchase) → Event Match Quality. Meta also shows which customer parameters you send and which ones it suggests adding.
The parameters that matter most
| Parameter | Key | Notes |
|---|---|---|
em | The biggest single boost, hashed (SHA-256) | |
| Phone | ph | Include country code, digits only, hashed |
| External ID | external_id | Your own customer or user ID |
| Click ID | fbc | From the fbclid in the ad URL |
| Browser ID | fbp | The _fbp cookie |
| IP address and user agent | client_ip_address, client_user_agent | Server container sends these automatically |
| Name, city, zip, country | fn, ln, ct, zp, country | Helpful extras, hashed |
Step by step to raise it
- Check what you send today. In server preview, open a Purchase event and look at the outgoing Meta request.
- Add email and phone on purchase and lead events. Push them into the dataLayer on the thank-you page or after form submit. Send them to the server with the event.
- Normalise before hashing. Lowercase and trim email. Phone in full international format, digits only. Most server templates hash for you, so do not hash twice.
- Make sure fbc and fbp are present. A custom domain (Blog 1) keeps
_fbpalive. Capturefbclidon landing sofbcexists later in the journey. - Add external_id everywhere. Use a stable ID like your customer ID, or a first-party cookie ID for guests.
- Carry user data to earlier events. Logged-in users have an email even on PageView or AddToCart. Stape’s Store or Enricher power-ups can remember user data and add it to later events.
- Wait and re-check. EMQ updates over a few days, not instantly.
Mistakes to avoid
- Sending empty strings. A blank
emfield can confuse matching. Send the field only when it has a value. - Phone without country code.
01712345678and8801712345678are different to Meta. - Double hashing. You hash in the web container, then the server tag hashes again. Meta receives nonsense.
- Sending user data without consent. Respect the user’s consent choice. A better score is not worth a privacy problem.
What changes in practice
A pattern I see often: purchase events send only IP, user agent and fbp, and EMQ sits around 4–5. Once email, phone and external ID are added and normalised correctly, Purchase EMQ usually moves into the 7–9 range. Meta then has far more conversions it can actually attribute and learn from.
Bottom line
EMQ is mostly about one question: are you sending the customer data you already have? Start with email, phone and external_id on your money events.
Source reading: Meta — customer information parameters