Skip to content
adscapi

Match quality

Ad platforms optimize on the conversions they can match back to a user. A conversion they can't match is wasted signal. Match quality is the difference — and the single biggest thing you control from the server side.

Three levers, in order of impact

1. Send more identity (raise the match rate)

Every identifier you add gives the platform another way to match. Pass raw fields on user and clickIds — see Identity & hashing. Priority if you can only capture some: email + phone + click IDs, then IP + user-agent, then name + address, then externalId.

2. Optimize for value, not just count (raise ROAS)

Send the real value and currency on every conversion. Platforms with value-based bidding then bid for high-value customers, not just for anyone who converts. For considered purchases, send predicted lifetime value so the platform optimizes for long-term worth, not the first order.

3. Close the loop and protect the signal

  • Dedup — set a stable eventId so your browser pixel and this server event dedupe. Full coverage without double-counting. See Dedup & retries.
  • Consent — pass consent (and gppString / tcfString / limitedDataUse where you have them). Under iOS ATT and cookie loss, consent is what lets Google and Meta model unobserved conversions. See Consent.
  • Test first — send with testEventCodes: { meta: 'TESTxxxxx' } to land the event in the platform’s Test Events view and confirm it matches, before you trust the data or optimize on it. (dryRun sends nothing.)

Measure it — the EMQ loop

adscapi verify surfaces Meta’s Event Match Quality (EMQ) in its output when available. Treat it as the scoreboard:

shell
# 1. Send a real (or test) event with the identity you have
npx adscapi test-event --event purchase --email you@example.com

# 2. Read Meta EMQ (and other live checks)
npx adscapi verify --platform meta
#   [OK ] meta — EMQ 6.1

# 3. Add more match keys in your track() call, redeploy, re-verify
#   [OK ] meta — EMQ 8.4

# Higher EMQ → more conversions attributed → lower CAC

Higher match quality → more conversions attributed → lower cost per acquisition. That is the whole game.

Related