How to improve Event Match Quality on Meta
Event Match Quality decides how many of your sales Meta can tie back to an ad. These are the parameters that feed it, how to normalise and hash them, and five changes that raise the score.
By Mohammad Ayan · · 3 min read
Meta scores how well it can match each of your events to a real Facebook or Instagram account. That score is Event Match Quality (EMQ), shown in Events Manager for each event on a scale up to 10. Better matching means Meta can attribute more of your sales to the ads that caused them, and optimise delivery against more complete data. Here is what feeds the score and how to raise it.
What EMQ actually measures
EMQ is not about how many events you send. It is about how many of them carry enough customer information parameters for Meta to recognise the person. An event with only an event name and a value is nearly impossible to match. The same event with a hashed email, a phone number and the visitor's browser identifiers is easy to match.
Meta rates each event separately, so your Purchase event can score well while AddToCart scores poorly, usually because buyers are known at checkout but browsers are anonymous earlier.
The parameters that matter
These are the main customer information fields you can send with the Conversions API:
- Email (
em) and phone (ph): usually the strongest signals. - First and last name, city, state, postcode and country: smaller signals that add up.
- External ID (
external_id): your own ID for the customer, such as a user ID. - Browser ID (
fbp) and click ID (fbc): the_fbpcookie and the value built from thefbclidin the ad click URL. - Client IP address and client user agent: sent with every server event.
Meta asks you to hash personal fields (email, phone, names, location, external ID) with SHA-256 before sending. The browser and click IDs, the IP address and the user agent are sent as they are, not hashed.
Normalise before you hash
Hashing makes two different spellings of the same value look unrelated, so tidy the value first:
- Email: trim spaces and lowercase it.
- Phone: digits only, including the country code, with no
+, spaces, dashes or leading zeros. For a Bangladeshi number that means starting with880, not0. - Names and cities: lowercase, no punctuation.
- Country: the two-letter ISO code in lowercase.
If these are wrong, the hash is valid but matches nobody, and your score quietly drops.
Five changes that move the score
- Send the server event with the IP and user agent. They are free and often missing when events are relayed through another service. They must be the visitor's, not your server's.
- Capture email and phone at checkout and send them on every event after. Once a visitor identifies themselves, attach their details to later events too.
- Forward
fbpandfbc. Read the_fbpcookie and thefbclidon the landing page and keep them with the order so the server event can include them. Losing the click ID is one of the most common causes of unattributed sales. - Send a stable external ID. Using your customer ID for logged-in users gives Meta another way to link events across sessions.
- Deduplicate properly. Matched browser and server events need the same event name and event ID, or you double-count and muddy the data. See how event deduplication works.
Cash-on-delivery stores
If most of your orders are paid on delivery, the sale is confirmed days after the click, often by a courier update rather than a page view. That makes the browser pixel unreliable for the real conversion. Sending the confirmed order from the server, with the customer's phone number and the original click identifiers saved at order time, is what keeps EMQ healthy for these stores.
Check your work
In Events Manager, open the event and look at the match quality breakdown. Meta lists which parameters you are sending and which would improve the score. Change one thing at a time and give it a few days of traffic before judging the result.