Meta’s in-page Pixel misses 30–50% of real conversions on iOS due to ITP, ad blockers, and consent blockers. The Conversion API runs server-side, so none of those affect it. The combined setup — Pixel for browser-side enrichment, CAPI for the durable record — is the standard for any B2B SaaS team running serious Meta spend.
What to send and how
Send Meta’s standard events (Lead, CompleteRegistration, Purchase, Subscribe) plus custom events for your specific funnel stages (MQL, Demo Booked, New Customer). Include every identifier Meta accepts: hashed email, hashed phone, hashed first/last name, IP, user agent, and the Facebook click ID (`fbclid`) captured at landing.
Generate a stable event_id for each conversion and pass it both through the in-page Pixel and the server-side CAPI event. Meta uses the event_id to dedupe — without it, every conversion gets double-counted across the two channels.
- Standard events: Lead, CompleteRegistration, Purchase, Subscribe
- Custom events: MQL, Demo Booked, Demo Attended, New Customer, Closed Won
- Identifiers: hashed email + phone + name + IP + UA + fbclid
- Dedupe key: shared event_id between Pixel and CAPI
- Run both Pixel and CAPI for maximum durability
Match score validation
After CAPI is live, check Meta Events Manager → Diagnostics → Event Match Quality. Cometly customers typically see scores in the 8.5–9.3 range. Below 7 usually means missing identifiers — most often the click ID isn’t being passed through, or hashed phone isn’t being captured.
If match quality is below 8 after a week, audit the event payload in Cometly’s Event Manager and confirm every identifier is being forwarded. Match quality below 7 cuts effective audience quality roughly in half.
What to watch for.
- Running CAPI without the in-page Pixel
The Pixel captures browser-side identifiers (cookies, browser ID) that CAPI alone can’t. Run both together.
- Forgetting the event_id dedupe
Without a shared event_id, conversions get counted twice. Cometly handles it automatically — verify the toggle is on.
- Sending only Lead events
Lead is the cheapest, lowest-quality signal. Push deeper events (MQL, Demo Booked, New Customer) for better optimization.
Recap.
- Send standard events (Lead, CompleteRegistration, Purchase) plus your custom funnel stages
- Include hashed email, phone, IP, user agent, and click ID for the highest match score
- Use a stable event_id between the in-page pixel and the CAPI event for dedupe
- Map MQL, Demo Booked, and Closed-Won as custom events for SLG
- Map New Customer and First Payment as custom events for PLG