Attribution & Measurement

Server-to-Server (S2S) Postback

Also known asS2SServer-to-Server PostbackServer Postback

A backend-to-backend HTTP request that delivers conversion event data from your servers to ad networks / MMPs — bypassing client-side SDK reliance.

Key takeaways

  1. 01S2S postback = server-side event delivery from your backend to ad networks / MMPs. Bypasses client-side SDK.
  2. 02More reliable than SDK-based attribution: not affected by ad-blockers, doesn't require app open, more accurate for delayed events.
  3. 03Standard for subscription / purchase event tracking; increasingly used for all conversion events post-ATT.

A server-to-server (S2S) postback is a backend-to-backend HTTP request that delivers conversion event data from your servers to ad networks, MMPs, or attribution platforms. Instead of relying on the mobile SDK in the app to fire conversion events (which requires the user to have the app open), S2S postbacks fire from your servers whenever events happen — independent of whether the user is currently using the app.

How S2S postbacks work

  1. User completes a conversion event (subscribe, purchase, milestone) — recorded in your backend.
  2. Your backend fires an HTTP POST to the MMP / ad network's S2S endpoint with: user ID (or device ID, hashed), event name, event timestamp, revenue (if applicable), other metadata.
  3. The receiver (MMP or ad network) deduplicates against existing data and processes the event for attribution / optimization.
  4. The event flows downstream to ad-network optimization algorithms (Meta, TikTok, Google) for bidding signals.

The key difference from SDK-based attribution: the SDK fires events from the device when the app is open. S2S fires from your server independent of the device state.

Why S2S is more reliable than SDK-based

  • Not affected by ad-blockers — some users run network-level ad-blockers that intercept SDK calls. S2S bypasses this entirely.
  • Doesn't require the app to be open — purchase confirmations from Apple's StoreKit, subscription renewals, server-side webhook events can fire S2S even when the user isn't in the app.
  • More accurate for delayed events — subscription renewals, trial-to-paid conversions, monthly billing events all happen async; S2S can fire them in real time.
  • Better for sensitive events — events involving payment data or user identity are safer to fire server-side.
  • Easier deduplication — your backend can ensure each event fires exactly once; SDK-based events can fire multiple times if sessions overlap.

Common use cases

Implementation considerations

  • Major MMPs all support S2S — AppsFlyer, Adjust, Singular, Branch, Kochava expose S2S endpoints.
  • Ad networks support varies — Meta Conversions API, TikTok Events API, Google Conversion Tracking all support S2S. Smaller networks may not.
  • Identifier hashing — when firing user identifiers via S2S, hash emails / phones (SHA-256 standard) before sending. Required by major networks.
  • Idempotency keys — use event-unique IDs to prevent double-firing if your retry logic fires the same event multiple times.
  • Rate limiting — major receivers have rate limits; batch events when possible.
  • Latency tolerance — S2S can be slightly slower than SDK-based; networks tolerate a few seconds of delay but not hours.

Quick answers

What is a server-to-server (S2S) postback?

A backend-to-backend HTTP request that delivers conversion event data from your servers to ad networks, MMPs, or attribution platforms. Bypasses client-side SDK reliance — fires from your server when events happen, independent of whether the user is currently using the app. Standard for subscription / purchase tracking; increasingly used for all events post-ATT.

Why use S2S postbacks instead of SDK-based event firing?

Five reasons. (1) Not affected by ad-blockers (some users run network-level blockers that intercept SDK calls). (2) Doesn't require the app to be open — subscription renewals, async events fire reliably. (3) More accurate for delayed events. (4) Safer for sensitive events involving payment data. (5) Easier deduplication — your backend can ensure each event fires exactly once.

How do I implement S2S postbacks?

Major MMPs (AppsFlyer, Adjust, Singular, Branch, Kochava) all expose S2S endpoints — implement HTTP POST from your backend with event details. For ad networks: Meta Conversions API, TikTok Events API, Google Conversion Tracking all support server-side. Hash user identifiers (SHA-256), use idempotency keys to prevent double-firing, watch rate limits. Subscription event triggers come from Apple StoreKit Server-Side Notifications and Google Play Real-Time Developer Notifications webhooks.

Back to glossary