← All playbooks·Digital attribution
Playbooks · Digital attribution
Track conversions server-side instead of by pixel
This job produces a server-side-verified conversion count and CPA for the reporting period, reconciled against pixel-reported numbers. It feeds the decision to report performance and set CPA targets on server-side data instead of a degraded pixel.
What you need first
- Pixel conversion count and value by campaign/ad set for the period, from the ad platform's reporting export
- Server-side event log (event_id, order_id, timestamp, value) for the same period, from the CAPI/CDP tracking server
- Deduplication key mapping event_id or order_id between pixel and server events, from the tag management setup or ecommerce backend
- Agreed attribution window (click and view lookback), from the media plan
- Platform's typical CAPI match rate for the vertical, from platform documentation or the account's prior campaign history
- Actual media spend for the period, from the platform billing export
The procedure
- Export the pixel conversion count and value for the window, tagged by campaign and ad set
- Export the server-side event log for the same window, filtered to the matching event type
- Deduplicate the two sets by event_id or order_id to produce a matched-conversion count
- Divide matched conversions by total server-side events to get the match rate, and compare it to the platform benchmark
- Apply the agreed attribution window to the server-side log to produce the attributed-conversion count
- Subtract pixel-reported conversions from server-side attributed conversions to get the variance, and flag it if it exceeds 10%
- Divide spend by server-side attributed conversions to get the corrected CPA
- Record the dedup key, window, and match rate used, for the client-facing report
Worked through with numbers
Spend for the week is €18,400. The pixel reports 210 conversions. The server-side log holds 260 events for the same window. Deduplicating by order_id matches 235 of them, so the match rate is 235/260 = 90.4%, above the 85% Meta CAPI benchmark for this vertical, so the log is trustworthy. Applying the 7-day click window removes 15 of the matched conversions that fall outside it, leaving 220 attributed conversions. Variance against the pixel is 220 - 210 = 10, or 4.8% more volume than the pixel counted. CPA on server-side data is 18,400/220 = €83.64, against 18,400/210 = €87.62 on pixel data, a 4.5% gap. Read this as the pixel understating both volume and efficiency by about the same margin, so the server-side CPA is the one to report.
Where it goes wrong
- Dedup by event_id or order_id, not by matching timestamp and value, because two same-value orders placed minutes apart will falsely match on proximity
- Apply the same attribution window to the pixel figure and the server-side figure before comparing them, because the platform's default pixel window can differ from the agreed plan window and the variance will be an artifact of that mismatch
- Strip test and internal traffic from the server-side log before computing the match rate, because staff and QA orders inflate the server-side total and understate the match rate
- Treat a match rate below benchmark as a CAPI implementation problem to fix (missing fbp/fbc, bad hashing), not as proof the server-side count is the low one
How to know it is right
The matched count plus the genuinely unmatched-but-valid server events should reconcile to the server-side total within a few percent, and the match rate should sit at or above the platform benchmark before the CPA is reported out.
Terms used