Meta CAPI Event Match Quality: How to Get Your Score Above 6.0

Event Match Quality is Meta's grade for your CAPI implementation. Here's what each score means, which parameters move the needle, and how to improve from 3 to 8+.

MetaCAPIEvent Match QualityEMQserver-side trackingFacebook

Event Match Quality (EMQ) is Meta’s 1-10 rating of how well your server-side events match to real Facebook users. A low score means Meta can’t connect your CAPI data to user profiles — which means your conversion data is partially useless even though you’re sending it.

If your EMQ is below 6, your Conversions API is functioning but underperforming. Here’s how to fix it.

What EMQ Actually Measures

EMQ scores how many customer information parameters you send with each event, weighted by their matching effectiveness:

ParameterMatch PowerEMQ Impact
Email (em)Highest+3-4 points
Phone (ph)High+1-2 points
fbp cookieHigh+1-2 points
fbc cookieMedium-High+1 point
External IDMedium+0.5-1 point
First name (fn)Low-Medium+0.5 point
Last name (ln)Low-Medium+0.5 point
City (ct)Low+0.25 point
State (st)Low+0.25 point
Zip (zp)Low+0.25 point
Country (country)Low+0.25 point
IP addressLow+0.25 point
User agentLow+0.25 point

The big three: Email, phone, and fbp cookie. Getting these three right typically moves EMQ from 3-4 to 7-8.

Checking Your Score

  1. Go to Meta Events Manager
  2. Select your pixel
  3. Click Overview tab
  4. Scroll to the Event Match Quality section
  5. Click each event type to see its individual EMQ score

EMQ is scored per event type. Your Purchase event might score 8 while PageView scores 3 (because page views rarely have email/phone data). Focus on getting purchase and lead events to 6+.

Score Interpretation

ScoreMeaningAction
8-10Excellent match rateMaintain. Your CAPI is well-configured.
6-7GoodAdd phone number or address data
4-5FairEmail likely not being sent or not properly hashed
1-3PoorCAPI is sending data but Meta can’t match anyone

Common Reasons for Low EMQ

Problem 1: Email Not Being Sent

The most common issue. Your CAPI sends purchase events but without the customer’s email — so Meta has no way to match the conversion to a Facebook user.

Where to get email:

  • Shopify: order.email or order.contact_email in the webhook payload
  • WooCommerce: $order->get_billing_email() in the order hook
  • Custom: Whatever field captures the customer’s email at checkout

Verification: In Events Manager → Test Events, complete a purchase. Click the server event and check “Customer Information Parameters” — is em (email) listed?

Problem 2: Email Not Properly Hashed

Meta requires SHA-256 hashed, lowercase, trimmed email:

Input:  "  Customer@Example.com  "
Step 1: trim → "Customer@Example.com"
Step 2: lowercase → "customer@example.com"
Step 3: SHA-256 → "b4c9a289323b21a01c3e940f150eb9b8c542587f..."

Common mistakes:

  • Hashing before lowercasing (different hash)
  • Not trimming whitespace (different hash)
  • Double-hashing (already hashed, then hashed again)
  • Sending raw email (Meta rejects unhashed PII)

The _fbp cookie (Meta’s first-party browser ID) is one of the highest-value parameters. It connects server-side events to browser-side pixel events for deduplication.

How to capture it:

  • At checkout time, read document.cookie and find _fbp
  • Pass it to your server (via hidden form field, data layer, or checkout attributes)
  • Include it in the CAPI event as fbp

On Shopify, the cookie bridge pattern captures _fbp during pixel events and forwards it to the webhook handler.

The _fbc cookie contains the Facebook click ID (fbclid). It’s set when a user clicks a Facebook ad. Forwarding it to CAPI connects the server event to the specific ad click.

How to capture:

  • Same as _fbp — read from cookies at checkout time
  • Or extract fbclid from the URL query string and format as fb.1.{timestamp}.{fbclid}

Without _fbc, Meta can’t attribute the conversion to a specific ad click — your ROAS reporting suffers.

Problem 5: No External ID

External ID is your internal customer identifier (Shopify customer ID, WooCommerce user ID). It helps Meta match across sessions when cookies are cleared.

Implementation: Hash the customer ID (SHA-256) and send as external_id in the CAPI event.

Step-by-Step Fix: 3 to 8+

Step 1: Add Email (Biggest Impact)

Make sure every purchase and lead event includes the hashed email. Verify:

  • The email is from the ORDER, not from the logged-in user (they may differ)
  • It’s SHA-256 hashed AFTER lowercasing and trimming
  • It appears in Events Manager → Test Events → Customer Information Parameters

Expected improvement: EMQ jumps from 3-4 to 5-6.

Step 2: Add fbp and fbc Cookies

Capture these from the browser at checkout time and forward to your server:

// In browser at checkout
const cookies = document.cookie.split(';').reduce((acc, c) => {
  const [k, v] = c.trim().split('=');
  acc[k] = v;
  return acc;
}, {});
// Pass cookies._fbp and cookies._fbc to your server

Expected improvement: EMQ goes from 5-6 to 7-8.

Step 3: Add Phone and Address

If available at checkout:

  • Hash phone number (remove spaces, include country code, SHA-256)
  • Hash first name, last name, city, state, zip (all lowercase, trimmed, SHA-256)
  • Send country code as ISO 2-letter code (unhashed)

Expected improvement: EMQ goes from 7-8 to 8-9.

Step 4: Add External ID

Hash your customer ID and include as external_id. This helps Meta match users across devices and sessions.

Expected improvement: EMQ goes from 8-9 to 9-10.

Monitoring EMQ Over Time

EMQ can change when:

  • Your site updates break cookie capture (shop redesign, theme update)
  • iOS changes degrade cookie availability
  • Your checkout flow changes (adding/removing fields)
  • A plugin update breaks data forwarding

Check EMQ monthly. If it drops by 2+ points, something broke. Common culprits:

  • Cookie banner blocking _fbp/_fbc capture
  • Checkout theme update removing email forwarding
  • Server-side code change breaking hash function

For a complete CAPI implementation guide, see Meta CAPI Setup Guide.

Not sure if your CAPI is configured correctly? Run a free tracking scan — we check your Meta Pixel, CAPI implementation, dedup, and customer parameter coverage.