What is Meta event match quality, and why is mine low?
By the HonestTag team ยท Published October 28, 2026
A low score is Meta telling you your events are hard to match to real people.
Event match quality is a score from 0 to 10 that Meta gives each website event you send through the Conversions API. Meta bases it on "the quality of customer information you're sending for a specific server event and the percentage of event instances matched to Meta accounts," and uses the last 48 hours of data (Meta Business Help). Email and click ID are the two details Meta ranks High. So a low score points at two things: the details your events carry, and how many of them match a Meta account. Meta does not publish how it weighs the two. To help improve the rate at which events match, Meta says to "send multiple customer information parameters when available," formatted the way it documents.
What the score measures
Meta says the score "indicates how effective the customer information parameters sent with your server event may be at matching events to Meta accounts" (Meta Business Help). A few things follow from Meta's own wording:
- It is per event. Events Manager shows a score "for each event" (Meta for Developers), and Meta scores "all standard and custom web events, such as page view, add to cart, and purchase" (Meta Business Help). Your Purchase can score differently from your Add to cart.
- It covers server events on the web. It applies to events "sent through the Conversions API with the action source parameter set to Website."
- It is recent. Meta uses the last 48 hours, so the score follows what you sent in the last two days.
- Matching decides what an event is used for. Meta writes: "You can use only matched events for ads attribution and ad delivery optimization." Unmatched events can still be used for "basic measurement."
What Meta matches on
Meta lists the customer details it accepts and ranks each one (Meta Business Help):
| Priority | Customer details |
|---|---|
| High | Email, click ID |
| Medium | Facebook Login ID, birthdate, country, phone number, external ID (a unique ID from the advertiser), browser ID |
| Low | Lead, first name, last name, city, zip or postal code |
How they are sent matters too. Meta's systems "are designed to not accept customer information that is unhashed Contact Information," so email, phone and name go as hashes. "Phone numbers must include a country code to be used for matching." The IP address "must never be hashed," and the browser user agent "is required for website events shared using the Conversions API" (Meta for Developers).
Stop guessing which ads bring new customers, and give Meta and Google a new-customer signal you can bid on. HonestTag sends verified purchases to Meta, Google and 7 more, each buyer marked new or returning. Start free beside your current tracking.
A worked example: why coverage has a ceiling
For each detail, ask what share of your Purchase events carried it. Some of those shares can never reach 100%, and it helps to know which before you chase them.
Say your store takes 200 orders in 48 hours. 60 of those shoppers arrived by clicking a Facebook or Instagram ad. The other 140 came from search, email, or typed your address.
- Click ID. Meta's click ID "is passed with the URL of an advertiser's website when a user clicks an ad on Facebook and/or Instagram" (Meta for Developers). Only the 60 had one. The most your Purchase can show is 60 of 200, or 30%. A click ID share near 30% on this store is not a fault.
- Email. 190 of the 200 orders carry an email, so email can reach 190 of 200, or 95%. Say only 100 Purchase events (50%) carried one: 90 orders had an email that the event never carried. That gap is worth fixing.
- Phone. If 120 orders have a phone number but 20 of them are stored without a country code and nothing tells you which country, only 100 can be used for matching: 50% of 200, not 60%.
The question to ask of each detail is not "why is this under 100%?" It is "did the shopper give us this, and did the event carry it?"
Why a score drops
- A changed click ID. Meta: "ClickID value is case sensitive - do not apply any modifications before using, such as lower or upper case." A tool that lowercases or cuts the fbclid breaks that rule (Meta for Developers).
- A click ID in the wrong shape. Meta wants fbc as fb.1.<time>.<fbclid> when a server builds it without saving the cookie, with the time "when you first observed or received this fbclid value."
- Old browser and click IDs. Meta says fbp and fbc "are subject to change," and "you should regularly refresh their values" (Meta for Developers).
- Phones without a country code. Meta cannot match them.
- Browser and server out of step. Meta asks you to "apply the same set of customer information parameters your system is currently sharing to the browser side to the server side," and says an external ID sent through other channels "should be in the same format as when sent via the Conversions API" (Meta for Developers).
One case is worse than a low score. Meta calls an event invalid if its only details are a subset of one of four sets, such as city, country, state, zip, gender and user agent, or first name and gender, and says such an event "would be rejected" (Meta for Developers).
Send Meta the details on the order. HonestTag sends each verified web purchase with the hashed customer details from the Shopify order, and the click ID unchanged when the shopper came from a Meta ad.
What to check, in order
- The score for Purchase, not the dataset. Open Events Manager and look at the event you optimize on. Meta says: "Recommended actions to take to improve your event matching can be found in Events Manager."
- Which tool sends that event. The score reflects what the sender includes. If two tools send Purchase, you may also be counting sales twice: see duplicate purchase events, and the Meta Conversions API on Shopify for what Shopify's own Facebook & Instagram app does at each data-sharing level.
- Each detail against its ceiling. Use the worked example above: compare what your orders hold with what the event carried.
- Formatting. Hashed contact details, a country code on phones, an unchanged click ID in Meta's fbc shape, the IP address and user agent sent unhashed.
- Test with your own details. Meta says test events with made-up details "may get discarded if they don't match a Facebook or Meta account."
What a higher score does not fix
- Missing events. The score grades the events Meta received. A purchase that never reached Meta is not in it. What a conversions API is covers sending purchases from a server.
- Consent. More details are not a way around a shopper's choice. Meta asks you to have "the proper lawful permissions and any necessary consents before you share any information with a third party" (Meta Business Help).
- Meta's numbers against your orders. Meta says better matching "may result in an increase in your additional conversions reported." More credit for Meta is not proof that Meta drove more sales. Judge that against your own orders.
- Other event types. Meta says the score "is currently available only for web events," so in-store and other offline sales get none.
- Browser limits. Browser IDs live in cookies, and Safari's tracking prevention limits how long some cookies last.
How HonestTag handles this
- The free Mirror plan sends Meta no purchases. It puts what Meta reports beside the new customers whose first recorded ad click or ad-tagged link was for Meta, counted from your own orders.
- On a paid plan, each verified web purchase goes with the customer details the Shopify order holds: email and phone hashed with SHA-256, plus hashed first name, last name, city, state or province, zip and country. The phone carries the buyer's country code; when no country code can be worked out from the order, the phone is left out rather than guessed.
- The click ID is never changed. When the shopper arrived from a Meta ad, the fbclid is kept exactly as it arrived and sent as fbc in the server format Meta documents, fb.1.<time>.<fbclid>. When a Meta pixel on your store has set its browser ID, HonestTag's pixel picks it up and sends it as fbp.
- The IP address and user agent go as Shopify recorded them on the order, unhashed as Meta asks, and never on an in-store or other sale with no shopper's browser behind it. The external ID is HonestTag's random visitor ID, or a hash of the Shopify customer ID when there is none, or the hashed email when there is neither.
- Its own events, its own score. By default HonestTag sends custom events such as HonestTag_Purchase, which Meta scores separately and which do not add to your Purchase count. The standard Purchase starts on only when you tell HonestTag you don't use Shopify's Facebook & Instagram app or its data sharing is off. At Standard, or if you are not sure, it goes only when you turn it on and confirm nothing else sends Meta purchases. At Enhanced or Maximum it stays off. If Shopify's Facebook & Instagram app sends your Purchase, that event's score still reflects what the app sends.
- Within the consent rules. An EU, EEA, UK or Swiss order with no visitor record is not sent, unless you asked HonestTag in writing to turn that gate off because you collect consent somewhere else; it cannot be switched off from the app.
Everything sent is listed on Connect Meta and server-side delivery.
Frequently asked questions
What is a good event match quality score?
Meta's help page names no target. It scores each event from 0 to 10 and says better event match quality means events are more likely to match to Meta accounts. Watch the score of the event you optimize on over time, and read the recommended actions Events Manager shows for it.
Why is my click ID (fbc) coverage low?
Only shoppers who clicked a Facebook or Instagram ad have a click ID, so coverage can never pass the share of orders that came from an ad click. Below that, check that nothing changes the fbclid's case or length, that fbc follows Meta's fb.subdomain-index.time.fbclid shape (a server that builds it without saving the cookie uses 1 as the index), and that old values are refreshed.
Should the IP address be hashed?
No. Meta says the client IP address must never be hashed, and that the browser user agent is required for website events. Email, phone and name must be hashed.
Will HonestTag raise my event match quality?
HonestTag makes no score promise. On a paid plan it sends each verified web purchase with what the order holds: hashed email, phone, name, city, state or province, zip and country, the click ID unchanged when the shopper came from a Meta ad, and the IP address and user agent from the order. When no country code can be worked out from the order, the phone is left out. Meta scores HonestTag's own events separately, and a Purchase sent by another tool keeps the score of what that tool sends.
Send Meta the details on the order
HonestTag sends each verified web purchase with the hashed customer details from the Shopify order, and the click ID unchanged when the shopper came from a Meta ad.
- Feed your ads a clean signal. The platforms you send to get each verified purchase, new customers marked as new.
- Catch the sales your pixels miss. Purchases are sent from your Shopify orders, server to server.
- Know what to scale. A weekly scale, hold or cut call when the data supports one, and proof behind every attributed order.
- Start free. Keep your current tracking while you look.
Related reading: the Meta Conversions API on Shopify, duplicate purchase events, and what a conversions API is.