Why is Event Match Quality low on my Meta lead events, and how do I raise it for a B2B website form?

TofuAnswer by the Tofu team · checked

Two hands holding up two jigsaw puzzle pieces about to fit together against a background of trees.

Usually because your Lead events reach Meta without the details it matches on, above all the email and the Meta click ID (fbc). Meta scores Event Match Quality from 0 to 10, only for website events sent through the Conversions API, from the last 48 hours of data. To raise it, send the hashed email from your form with every server Lead event, plus fbc, fbp, IP address, user agent and your CRM contact ID as external_id. Then fix what loses those details on B2B sites: redirects that drop the click ID, forms on another domain and placeholder emails.

As of October 2026.

What is Event Match Quality, and where do I find it?

It is Meta's score for how well the customer details sent with a server event can match that event to a Meta account, worked out from the quality of those details and the share of events Meta matches. It covers every standard and custom web event, Lead included, sent with the action source set to Website.

To see it for your Lead event:

  1. Go to Events Manager.
  2. Select the name and ID of your dataset.
  3. Find the Lead event and click View details.
  4. Open the Event matching tab.

The tab shows the share of events sent with customer information, with Meta's tips for better matching. Developers can pull the same score per event, plus Meta's diagnostics, from the Dataset Quality API.

What's a good Event Match Quality score for Lead events?

Meta doesn't publish a target. Its help pages say only that better match quality means more events match, which helps attribute conversions to your ads and can lower your cost per action. Third parties disagree on whether to aim for one. Elevarus, in a May 2026 post on lead gen setups, says a score below 7.0 leaves room to cut cost per lead and that a fixed setup should reach 8.5 to 9.5. Web Tonic's guide (updated October 2026) says to treat the score as relative and watch your own trend. Either way, compare your Lead event with your other web events and check the trend after each fix.

Which details raise the score the most?

Meta ranks each customer detail by priority. Email and click ID come first:

DetailMeta's priorityWhat to send
EmailHighThe address from the form, trimmed, lowercased and SHA-256 hashed
Click ID (fbc)HighThe _fbc cookie value, or one built from the fbclid in the page URL. Not hashed
Phone numberMediumDigits only, with the country code, hashed
CountryMediumThe 2-letter ISO code in lowercase, hashed
External IDMediumYour CRM or form tool's ID for the person. Meta recommends hashing it
Browser ID (fbp)MediumThe _fbp cookie value. Not hashed
Facebook Login ID, birthdateMediumOnly if you have them
Lead (the Meta lead ID)LowExists only for Meta Instant Form leads, not website forms
First name, last name, city, zipLowHashed, if your form asks for them

Meta's developer docs add two more. The browser's user agent is required for website events sent through the Conversions API, and sending it with the IP address may help matching. Neither is added for you on server events, so your server has to send them. Meta prefers IPv6 addresses over IPv4 where people have them.

Meta also rejects events whose only details are a weak set, such as city, state, zip, country, gender and user agent, or first name with gender.

Why is my click ID (fbc) coverage so low?

Because only visits from a Meta ad click carry one. When someone clicks your ad, Meta adds an fbclid parameter to your URL, and the Meta Pixel saves it in the _fbc cookie. Leads who arrive from Google, email or a direct visit with no earlier Meta ad click have none, so some of your Lead events will always lack one.

The gap you can fix is ad clicks that lose the ID before the form:

  • Redirects that drop the URL parameter. Meta's click ID guide points to its Pixel support guide for missing query parameters and broken redirects.
  • A form on another domain. The _fbc cookie is stored under your domain. A form on a separate domain (a hosted landing page from your form or scheduling tool, say) can't read it unless you pass the value along.
  • A server that never reads the cookie. Meta asks you to read _fbc from the request, or build it from fbclid when there's no pixel, and send it with every server event. It recommends keeping it in a 90-day cookie and always sending the latest value.

Meta's Parameter Builder Library, open-source code for the browser and for servers in PHP, Java, Python, Node.js and Ruby, can capture and format fbc and fbp for you, and the IP address in its JavaScript, PHP and Node.js versions. Since September 2026, Meta's Dataset Quality API also flags "FBC coverage" when too few events carry the click ID.

Why is the score low when I already send the email?

Sending a detail doesn't guarantee a match. Meta warns that one detail on its own may not be enough and that some people have no Meta account, so you can send an email on most events and still score low. The usual causes on a B2B form:

  • Placeholder emails or phone numbers. Since September 2026, the Dataset Quality API's diagnostics flag events where a large share use the same placeholder email or phone number instead of a real one, for example a test address or a default value your server fills in.
  • Formatting and hashing. Normalize and hash each detail as in the table above, and don't hash the IP address or user agent. Meta's Business SDK does the hashing for you.
  • A different email from the one on Facebook. Elevarus notes that form data misses leads who use a different email than their Facebook account, so send the other details too.

Do I need the Conversions API, or is the Meta Pixel enough?

You need the Conversions API to get a score at all, because Meta only scores website events sent through it. How you set it up decides what it can send:

  • Meta-enabled Conversions API. Meta's free, one-click option sends the same events and the same customer details as your pixel. It can't add an email your pixel never saw.
  • Automatic advanced matching. This tells the pixel to pick up details people type into forms. Turn it on in Events Manager: select your dataset, open the Settings tab, switch on automatic advanced matching, click Show customer information parameters, and choose at least Email and Phone number, as Meta suggests. It needs the form fields on pages where the pixel runs. It doesn't work if the pixel is in an iframe, if you use an IMG pixel, or if Meta puts your business in a restricted vertical, such as financial services, insurance or health.
  • Manual advanced matching. A developer passes the details into the pixel code. It works in iframes, with IMG pixels and in every vertical, and Meta suggests using it alongside the automatic version.
  • A direct or partner integration. Your server or form tool sends the Lead event with every detail above. Send the same event name and an event_id from both the pixel and the server so Meta can drop duplicates, and aim for Meta's target of 75% event coverage (Conversions API events relative to pixel events).

Why doesn't Meta show Event Match Quality for my CRM or offline lead events?

Because the score exists only for web events. Meta's developer docs say it "is currently available only for web events." For offline and physical store events, app events, conversion leads and integrations still in alpha or beta, Meta says to ask your Meta representative how to improve matching. A Dataset Quality API for offline events, which breaks quality down by match key coverage, frequency and freshness, is in beta.

If you send CRM lead stages to Meta, our guide on sending HubSpot or Salesforce lead stages to Meta covers that setup.

How long until a fix shows up?

About two days. The score uses the last 48 hours of data, and automatic advanced matching can take up to 48 hours to show results in Events Manager. Meta says to send events regularly to keep the score up to date.

Sources (18)

Ask Tofu next

Pick a question and Tofu Ads Agent answers it in chat.

Related answers