Conversion API (CAPI)
A Conversion API (CAPI) is a server-to-server interface that sends marketing events directly from your backend to an ad platform such as Meta, TikTok, or Google. It bypasses the browser to deliver more complete and reliable conversion data.
In depth
CAPI is the platform-specific implementation of server-side tracking. Instead of relying on a browser pixel to report a purchase or lead, your server posts a structured event, including hashed identifiers and contextual fields, straight to the ad network's endpoint. The platform then matches that event to a user and an ad click, which feeds its bidding and optimization models. Because the data path does not depend on the visitor's browser, CAPI is resilient to ad blockers and cookie restrictions and can include richer signals like order value or lead quality score.
Why this matters for a quiz funnel: the events that distinguish a good lead from a tire-kicker often occur after the form submit, such as 'qualified' or 'sales-accepted'. Sending these through CAPI lets the ad platform optimize toward the leads that actually convert downstream, not just anyone who clicked. A frequent pitfall is firing the same event from both the pixel and CAPI without a shared event_id, which inflates conversion counts and corrupts optimization. Proper deduplication and accurate event timestamps are essential.
Example in practice
Frequently asked questions
How is CAPI different from server-side tracking?
Server-side tracking is the general approach of collecting events on your own server. CAPI is a specific platform interface, like Meta's or TikTok's, that receives those server events, so CAPI is typically one destination of a server-side setup.
Why do I need to send hashed identifiers to CAPI?
Hashing email or phone numbers lets the platform match a conversion to a user without exposing raw personal data. It improves match rates while keeping the data protected in transit.
Can CAPI double-count my conversions?
Yes, if the pixel and CAPI report the same event without a shared event_id. Always set a consistent event_id so the platform can deduplicate and count each conversion only once.