Google Tag Manager, Meta Conversion API, Server Side Tracking

How to Improve Meta Event Match Quality, Step by Step

“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

ParameterKeyNotes
EmailemThe biggest single boost, hashed (SHA-256)
PhonephInclude country code, digits only, hashed
External IDexternal_idYour own customer or user ID
Click IDfbcFrom the fbclid in the ad URL
Browser IDfbpThe _fbp cookie
IP address and user agentclient_ip_address, client_user_agentServer container sends these automatically
Name, city, zip, countryfn, ln, ct, zp, countryHelpful extras, hashed

Step by step to raise it

  1. Check what you send today. In server preview, open a Purchase event and look at the outgoing Meta request.
  2. 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.
  3. 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.
  4. Make sure fbc and fbp are present. A custom domain (Blog 1) keeps _fbp alive. Capture fbclid on landing so fbc exists later in the journey.
  5. Add external_id everywhere. Use a stable ID like your customer ID, or a first-party cookie ID for guests.
  6. 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.
  7. Wait and re-check. EMQ updates over a few days, not instantly.

Mistakes to avoid

  • Sending empty strings. A blank em field can confuse matching. Send the field only when it has a value.
  • Phone without country code. 01712345678 and 8801712345678 are 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

Leave a Reply

Your email address will not be published. Required fields are marked *