ITP + ad-blockers
Safari's Intelligent Tracking Prevention caps client-side cookies at 7 days. uBlock-class extensions strip native pixel calls outright. Combined hit on browser-only attribution: 18–25% loss.
▸ Implementation · 2026 edition
Pixel-based attribution lost 18–35% of native conversions in 2025. Privacy Sandbox killed the rest in October. S2S is the way the auction now expects you to report — and the operators who shipped it in time saw their cost-per-action drop on paper without changing anything in the campaign.
▸ Why this matters now
Safari's Intelligent Tracking Prevention caps client-side cookies at 7 days. uBlock-class extensions strip native pixel calls outright. Combined hit on browser-only attribution: 18–25% loss.
Google removed the Topics API and most third-party-cookie surface in October 2025. Any tracking that depended on cross-site identifiers stopped working overnight.
Native networks bid against their own conversion data. If you under-report, their optimization engines bid you down — even when the campaign is profitable. Reporting accurately literally makes the auction cheaper for you.
▸ Per network
| Network | S2S endpoint | Click ID param | Maturity |
|---|---|---|---|
| Taboola | Conversions API (S2S) | tblci | Mature |
| Outbrain / Teads | OBClickID Postback | obclid | Mature |
| MGID | S2S Postback URL | click_id | Solid |
| Yahoo Native | DOT Server-side API | dotpid | Solid |
| Newsbreak | CAPI v2 | nb_clid | Solid |
| Mediago | S2S Postback URL | click_id | Early |
| RevContent | S2S Postback URL | rev_id | Solid |
▸ Walk-through
Below is the exact sequence we run when onboarding a new client at native-advertising.net. The whole pipeline ships in 2–4 working days, and the moment it’s live the in-platform CPA numbers drop by the amount that was previously missing from the report.
Add a single first-party script (or your tag-manager equivalent) that reads tblci, obclid, mgid_id, dotpid, nb_clid, click_id, rev_id from the URL on landing-page load and writes each one to a first-party cookie + your session/order context.
When the user converts (Shopify checkout, lead form, etc.), write every captured click ID into the database row alongside the conversion. This is the bit most operators skip — and it's why their S2S accuracy stays bad.
A queue worker that listens for new conversion events and POSTs each one to the matching network's S2S endpoint with click ID + value + timestamp. Retries on 5xx. Dedupes on order ID to survive replay.
Pull each platform's reported conversions for the last 30 days, compare to your shipped-orders table by click ID. Discrepancy over 5%? You have a bug. We typically hit sub-2% match within the first reconciliation pass.
Inside each platform, switch the campaign's optimization goal from the pixel event to the S2S event. From this point onwards the platform's bidder is optimizing against your real conversions, not the under-reported pixel ones — which is when in-platform CPA drops cleanly.
60-min call. We map your stack, identify the gaps, and quote a fixed scope to get every network onto S2S. Most accounts go live in under a week.