← All insights
Tracking QAS2S postbackAttribution7 min

S2S vs pixel tracking for advertisers: when to use which (and why)

Pixels are easier to install. S2S is harder to break, harder to spoof, and the only thing iOS Safari still trusts. Here is how I decide for each client.

Published June 5, 2026 · Osama Malik

The 30-second version

If you are running affiliate offers on paid social, native, or email — anywhere the user might browse in private mode, on iOS Safari, or behind an ad blocker — your primary attribution must be server-to-server. Pixels are fine as a secondary signal for in-platform optimization (Meta CAPI, TikTok Events API), but they are not the source of truth.

For closed environments where you control both the click and the conversion (a Shopify checkout you own, a CRM you run), you can get away with a pixel — but you will pay for it later when a partner disputes a payout and you have no server log to back you up.

What a pixel actually does

A conversion pixel is a 1x1 image or JavaScript snippet that fires from the user's browser on the thank-you page. It carries the click ID stored in a cookie or local storage, and reports back to the network. Simple to deploy. Trivial to break.

  • iOS Safari Intelligent Tracking Prevention caps third-party cookies at 7 days and strips many first-party cookies set via script after 24 hours.
  • Ad blockers (uBlock Origin, Brave, DuckDuckGo browser) silently drop pixel requests.
  • Page reloads, single-page-app navigation, and async checkouts can fire the pixel zero, one, or three times.
  • Affiliates can spoof pixel fires from their own server — there is no way to verify the conversion is real.

What S2S actually does

S2S (server-to-server, also called postback tracking) works differently. The click ID is captured server-side when the user hits your offer URL, stored against the order in your CRM, and when the order reaches a terminal state your backend fires a direct HTTP request to the network — with no browser involved.

  • Immune to ad blockers, ITP, cookie clearing, and incognito mode.
  • Fires exactly once per order (you control the trigger).
  • Carries verified server-side values (real payout, real status).
  • Leaves a log on both ends, so disputes are resolvable.

Where pixels still earn their keep

Meta, TikTok, and Google Ads in-platform optimization needs a browser-side event to feed their pixel-trained models (CAPI/Events API close the loop server-side, but the client-side fire still helps for view-through and re-engagement). Use the pixel for paid-platform optimization. Use S2S for affiliate payout truth. Do not mix the two.

Decision matrix

  • Affiliate / CPA networks (Everflow, HasOffers, Trackier): S2S, always.
  • Meta / TikTok / Google paid: pixel + CAPI/Events API for optimization.
  • Email and SMS partners: S2S with unique sub IDs per send.
  • Native ad networks (Taboola, Outbrain, MGID): S2S — they expect it and pixels are blocked at scale.
  • Influencer / link-in-bio: S2S; pixel only if you cannot pass a click ID.
Frequently asked

FAQ

Can I run S2S and pixel tracking at the same time?
Yes, and you should — for different purposes. S2S is the source of truth for affiliate payouts; pixels feed paid-platform optimization. Just make sure your network deduplicates so you do not pay twice.
Does iOS 17 break S2S tracking?
No. S2S happens server-side after the order is committed — iOS and Safari ITP have no visibility into it. That is exactly why S2S has become non-negotiable for advertisers running iOS-heavy traffic.
How do I migrate from pixel to S2S without losing attribution?
Run them in parallel for 7–14 days, with the network deduplicating on transaction ID. Compare reported conversions; once S2S matches or exceeds the pixel for a full week, turn the pixel off as the payout source.

Need this fixed on a live offer?

I run hands-on tracking QA, postback validation, and launch readiness for direct advertisers. Book a 30-minute readiness call — no pitch, just a real diagnosis.

Book a readiness call