Identity matching & match rates
You can compute a perfect value for every lead and still get nothing — if the ad platform can't match your conversion back to the click that drove it. Match rate is the silent multiplier on everything else.
Two ways a conversion gets matched
- Click IDs — the strongest signal.
gclid(Google),fbclid/fbc(Meta),li_fat_id(LinkedIn),ttclid(TikTok). Captured on landing, carried through the form, stored on the lead. - Hashed identifiers — email and phone, normalized and hashed with SHA-256 before sending. Used as a fallback (Enhanced Conversions for Leads, Meta advanced matching) when there's no click ID.
Capture click IDs at the source
The most common cause of a low match rate is simply not capturing the click ID. Put a lightweight capture snippet on your landing pages so gclid and friends are written into a hidden field and flow into your CRM with the lead. No click ID, no first-party match — you fall back to hashed email, which matches less often.
Mind the conversion window
Offline conversions must land inside the platform's conversion window (often up to 90 days for clicks). B2B deals that close in four months can fall outside it — which is why you usually feed an early, valued signal (an SQL worth €X) rather than waiting for closed-won.
Privacy is built in, not bolted on
Direct identifiers are never sent in the clear: emails and phones are hashed before transmission, click IDs are opaque strings, and access tokens are encrypted. Good matching and good privacy aren't in tension — hashing is exactly how platforms expect first-party identifiers.
Diagnose with upload reports
Every platform exposes a diagnostics view (e.g. Google Ads → Conversions → Uploads). Check it: it tells you how many events were accepted, rejected, or unmatched, and why. A rejected fake-gclid test still proves your pipe and auth work — a useful first checkpoint before real traffic.