← 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

  1. Export the pixel conversion count and value for the window, tagged by campaign and ad set
  2. Export the server-side event log for the same window, filtered to the matching event type
  3. Deduplicate the two sets by event_id or order_id to produce a matched-conversion count
  4. Divide matched conversions by total server-side events to get the match rate, and compare it to the platform benchmark
  5. Apply the agreed attribution window to the server-side log to produce the attributed-conversion count
  6. Subtract pixel-reported conversions from server-side attributed conversions to get the variance, and flag it if it exceeds 10%
  7. Divide spend by server-side attributed conversions to get the corrected CPA
  8. 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