Conversions API "Match Quality" low
Quick Answer
Send at least 5 user data parameters with every event: hashed email, hashed phone, hashed first name, hashed last name, and IP/user agent. With those five, match quality typically jumps from 4/10 to 8/10 within 24 hours.
Step-by-step fix
- Open Events Manager → your dataset → Overview → check the Event Match Quality score for each event.
- Click into a low-scoring event → see which parameters are missing or unhashed.
- Update your CAPI integration to send the following user_data fields with every event:
em — hashed email (SHA-256, lowercase, trimmed)
- ph — hashed phone (SHA-256, E.164 format, no spaces)
- fn — hashed first name (SHA-256, lowercase)
- ln — hashed last name (SHA-256, lowercase)
- ct — hashed city (SHA-256, lowercase, no spaces)
- zp — hashed postal code (SHA-256)
- country — hashed country code (SHA-256, lowercase)
- client_ip_address — raw IP, not hashed
- client_user_agent — raw user agent, not hashed
- fbp — Facebook browser ID (from _fbp cookie)
- fbc — Facebook click ID (from _fbc cookie or fbclid query parameter)
- Verify hashing. SHA-256, lowercase, trimmed. Don't include surrounding quotes or whitespace. Hash AFTER normalisation.
- Test in Test Events. Send a test event and check that all parameters are received.
- Wait 24-48 hours for the match quality score to recalculate.
Why it happens
Match quality measures how reliably Meta can match your CAPI events to actual Facebook user accounts. The score is based on:
- Number of user identifiers sent. More identifiers = higher confidence match.
- Quality of identifiers — email and phone are highest-value; IP alone is lowest.
- Hashing correctness — events with malformed hashes are silently dropped.
- Normalisation — emails must be lowercase and trimmed BEFORE hashing.
- fbc and fbp parameters — these come from cookies set by the Pixel and link the event to a specific browser session.
Low match quality usually comes from:
- Sending only IP and user agent (the bare minimum, which scores 2-3/10).
- Hashing without normalising first.
- Forgetting to send
fbcandfbpfrom cookies. - Sending raw email instead of hashed (which gets dropped, not scored).
- Missing first/last name even when you have it.
- Not handling user opt-outs correctly so all events are anonymous.
In 2024 Meta introduced a Match Quality multiplier in the auction — high-match-quality advertisers get a structural boost to estimated action rate, which means they win more auctions at the same bid.
How to prevent it
- Send every available parameter for every user. Don't be selective.
- Hash on the server, not in the browser, to avoid client-side mistakes.
- Normalise before hashing — lowercase, trim, remove formatting characters.
- Capture fbc/fbp on every page load and pass them through to your server with the conversion event.
- Audit your forms — collect first name, last name, and phone wherever possible.
- Use the official Meta Business SDK (Node, PHP, Python) — it handles hashing and normalisation for you.
- Send events within 1 hour of the actual conversion. Events older than 7 days lose match quality.
When to escalate to Meta support
Escalate if:
- Match quality stays below 5/10 even after sending 6+ parameters correctly.
- Test Events shows parameters but Events Manager doesn't reflect them in the score.
- Your match quality dropped suddenly with no code changes (often a Meta-side regression).
Use Pro Team Chat with the dataset ID, an example raw event payload (with parameters showing), and a screenshot of the score history.
Pix-Vu mention
Match quality fixes attribution; clean creative drives the actual conversions. Pix-Vu helps you upgrade ad imagery so the conversions you're now matching properly are actually happening in higher volume.
Ready to automate your Facebook ads?
Let AI handle your ad creative, targeting, and optimization. Launch profitable campaigns on autopilot.
Get Started Free