Support

S2S Postback Setup Guide for Media Buyers 2026

S2S Postback Setup Guide for Media Buyers 2026
0.00
β˜…β˜…β˜…β˜…β˜…
(0)
Views: 14
Reading time: ~ 8 min.
Media Buying
04/12/26
NPPR TEAM Editorial
Table Of Contents

TL;DR: Server-to-server (S2S) postback is how your tracker receives conversion data from CPA networks without relying on cookies or pixels. A correctly configured postback is the difference between optimizing on real data and guessing. Setup takes 20–45 minutes depending on your tracker. If you need verified ad accounts that work with CAPI and S2S tracking β€” check Facebook accounts for advertising β€” accounts with Business Manager access for full server-side integration.

S2S postback is the backbone of every performance marketing operation. It replaces client-side pixel tracking with a direct server-to-server signal β€” meaning conversions register even when users block cookies, use browsers with ITP, or turn off JavaScript. According to Voluum's 2025 data, mobile traffic represents 78% of affiliate volume, and iOS Safari's cookie restrictions make S2S postback the only reliable tracking method for iOS users.

βœ… Works for you if❌ Not for you if
You run CPA/CPL offers via affiliate networksYou only run direct-response ads on platform
You use a tracker (Keitaro, Binom, BeMob)You have no tracker and no network integration
You need conversion data in your trackerYou rely purely on platform-reported conversions
You run multi-source trafficYour single-platform setup has native tracking

What Changed in S2S Postback in 2026

  • Postback URL encryption became standard. Most top CPA networks (Leadbit, Dr.Cash, Alfaleads) now require HTTPS postback URLs β€” HTTP endpoints are rejected outright.
  • Click ID parameter standardization. Networks migrated toward {clickid} and {click_id} macros; legacy {subid} parameters still work but generate deprecation warnings in some networks.
  • Duplicate postback deduplication. Platforms like Meta now deduplicate server-side events against pixel events using the Event ID field β€” missing this creates double-counting in attribution.
  • CAPI + S2S hybrid flows are now default. The professional setup in 2026 fires both a tracker postback (for optimization data) AND a CAPI event to the ad platform (for bidding optimization) β€” from the same conversion signal.
  • IP and User-Agent forwarding required. Facebook's CAPI now requires hashed client IP and User-Agent in server events for accurate match scoring; trackers that don't forward these fields see 20–30% lower Event Match Quality.

Need accounts ready for this workflow? Browse verified Google Ads accounts with high spend limits β€” pre-warmed, no learning phase delays.

How S2S Postback Works

The postback flow has 5 steps:

  1. User clicks your ad β†’ Tracker receives the click, assigns a unique Click ID (e.g., abc123xyz)
  2. Tracker appends Click ID to the offer URL: https://offer.com/landing?clickid=abc123xyz
  3. CPA network stores Click ID in its system along with the user session
  4. User converts (makes a purchase, submits a lead, deposits)
  5. CPA network fires postback to your tracker: https://yourtracker.com/postback?clickid=abc123xyz&status=approved&payout=12.50
  6. Tracker records conversion, attributes it to the original ad/campaign/placement

This entire flow happens server-to-server β€” no browser involvement after step 1. That's why it works regardless of browser privacy settings.

Related: Conversion Tracking and Postback: How to Integrate Your Tracker with Twitter/X Ads

Step 1 β€” Get Your Tracker Postback URL

Every tracker generates a system postback URL. This is the endpoint you give to CPA networks.

Keitaro: Go to Campaigns β†’ select campaign β†’ Tracking URLs β†’ copy the S2S Postback URL. It looks like: https://yourdomain.com/postback?clickid={clickid}&status={status}&payout={payout}

BeMob: Settings β†’ S2S Postback β†’ copy Global Postback URL. https://yourdomain.com/postback?cid={click_id}&payout={payout}&status={status}

Related: How to Set Up Postback and Conversion Tracking in 2026: S2S Integration Guide

Binom: Settings β†’ Postbacks β†’ copy Binom's postback endpoint, then configure per-campaign.

Note the parameter names β€” they differ by tracker. Most common: clickid, cid, click_id, subid.

Step 2 β€” Configure the Postback in Your CPA Network

Log into your CPA network's affiliate dashboard. Every major network has a "Postback URL" or "Tracking" section in offer settings or global settings.

Steps (universal): 1. Go to Offer Settings β†’ Tracking β†’ Postback URL 2. Paste your tracker's postback URL 3. Map the network's conversion macros to your tracker's parameters: - Network's {transaction_id} β†’ your tracker's {clickid} field - Network's {payout} β†’ your tracker's {payout} field - Network's {status} (approved/pending/rejected) β†’ your tracker's {status} field 4. Save and test using the network's Test Postback button

Common macro naming across networks:

Related: Postback and S2S (CAPI) in Facebook Tracking: Architecture, Deduplication, and Money-Based Goals

ParameterLeadbitDr.CashAlfaleadsZeydoo
Click ID{clickid}{click_id}{sub_id}{clickid}
Payout{payout}{price}{payout}{payout}
Status{status}{status}{status}{lead_status}

Always verify macro names against the network's documentation β€” using the wrong macro means the postback fires but sends empty values.

⚠️ Warning: Never use a global postback URL for all offers in all campaigns. Configure postback per campaign (or at minimum per traffic source). A global postback with wrong campaign attribution will mix conversion data across campaigns and make optimization impossible.

Step 3 β€” Pass Click ID from Tracker to Network

The Click ID needs to travel from your tracker, through the landing page, and into the CPA network's system. This is where most buyers make mistakes.

The flow: 1. Tracker appends ?clickid={clickid} to the offer URL (configured in campaign settings) 2. If there's a landing page in between, the landing page must pass through the click ID to the offer URL 3. Offer URL must accept the click ID parameter and store it

For direct linking (no landing page): - Set offer URL in tracker to: https://offer.example.com/?clickid={clickid} - The {clickid} placeholder gets replaced with the actual ID at click time

For landing page flows: - Tracker sends click to LP: https://yourlp.com/?clickid=abc123 - LP button/form must forward this: https://offer.example.com/?clickid={get("clickid")} - Most LP builders (Landingi, Unbounce) have JS snippets to auto-forward URL parameters

⚠️ Warning: If your landing page doesn't pass through the click ID, every conversion fires the postback with an empty {clickid} parameter. The tracker receives the conversion but cannot attribute it to any campaign, source, or ad. You'll see conversions in your CPA network but zeros in your tracker β€” a silent data leak.

Step 4 β€” Connect to Facebook CAPI (Dual Postback)

Modern setups fire two signals from a single conversion: 1. Postback to tracker (for campaign-level attribution) 2. CAPI event to Facebook (for bid optimization and reporting)

To avoid double-counting in Facebook reports, you must deduplicate using Event ID:

In your tracker (Keitaro example): 1. Enable CAPI integration: Settings β†’ Integrations β†’ Facebook CAPI 2. Enter your Pixel ID and Access Token (from Facebook Events Manager β†’ Settings β†’ Conversions API) 3. Map event: Purchase/Lead β†’ trigger on conversion postback 4. Set Event ID = {clickid} (this deduplicates against any pixel event with the same ID) 5. Forward client IP and User-Agent from the original click β€” Keitaro does this automatically from stored click data

Without deduplication, your Facebook reports will count each conversion twice β€” once from pixel and once from CAPI β€” inflating ROAS by 2x. This breaks your bidding optimization and makes performance look better than it is until you realize the issue.

Case: Media buyer, Facebook campaigns, nutra offer, $400/day. Problem: ROAS appeared at 3.8x in Ads Manager but CPA network showed 40% fewer approved conversions. Investigation revealed postback was firing but click ID was missing β€” LP was not forwarding the ?clickid= parameter. Fix: Added URL parameter passthrough to LP using a 2-line JavaScript snippet. Click IDs started passing correctly. Result: Tracker and Ads Manager data aligned within 5%. Identified 2 ad sets that appeared profitable but were actually losing money β€” paused them. ROAS stabilized at 2.6x real.

Step 5 β€” Test Your Postback Before Spending

Never launch a campaign without testing the full click β†’ conversion β†’ postback flow.

Testing checklist: 1. Test click: Click your tracking link, verify the click appears in tracker with a Click ID 2. Test landing page passthrough: Check the URL on the offer page β€” does it contain your click ID? 3. Fire test postback: In your CPA network, use the "Test Postback" button with the click ID from step 1 4. Verify in tracker: The conversion should appear in tracker stats attributed to the correct campaign 5. Verify CAPI receipt: In Facebook Events Manager β†’ Test Events β€” confirm the server event arrived with the correct event ID

Common failure modes to check:

SymptomLikely Cause
Conversions in network, zeros in trackerClick ID not passing through LP
Postback 404 errorTracking domain SSL issue or wrong endpoint URL
Click IDs arriving emptyWrong macro name in postback URL
Double conversions in FacebookMissing Event ID deduplication
Conversion fires for wrong campaignUsing global postback instead of campaign-specific

Advanced: Postback Security

If your postback URL is discovered and hit with fake conversions, your tracker stats get corrupted. Two protection methods:

Method 1: Postback password/token Most trackers support a postback secret. Example: https://yourdomain.com/postback?clickid={clickid}&payout={payout}&token=YOUR_SECRET_HERE Configure this token in your tracker's postback settings. Any postback without the correct token is rejected.

Method 2: IP whitelist In tracker settings, whitelist only the IPs of your CPA networks. All other IPs are blocked from firing postbacks. Most networks publish their postback sender IP ranges in their documentation.

Need reliable ad accounts for your S2S setup? Browse TikTok Ads accounts β€” accounts with BC access for multi-campaign postback tracking.

Quick Start Checklist

  • [ ] Get tracker postback URL (from Keitaro/BeMob/Binom postback settings)
  • [ ] Configure postback in CPA network β€” map Click ID, Payout, Status macros
  • [ ] Set offer URL in tracker with ?clickid={clickid} appended
  • [ ] If using landing page β€” add click ID passthrough JavaScript
  • [ ] Test: fire a test postback and verify it appears in tracker stats
  • [ ] Configure CAPI integration with Event ID deduplication
  • [ ] Add postback secret token for security
  • [ ] Verify postback delivery rate is 98%+ in first 24 hours of live traffic
Related articles

FAQ

What is S2S postback in affiliate marketing?

S2S (server-to-server) postback is a tracking method where conversion data travels directly between servers β€” from the CPA network to your tracker β€” without using cookies or browser-side pixels. It works independently of browser privacy settings, making it the most reliable conversion tracking method in 2026.

What's the difference between postback and pixel tracking?

Pixel tracking uses JavaScript code on a webpage to fire a conversion event from the user's browser. Postback tracking fires a server request directly from the network to your tracker. Postback is more reliable (not affected by ad blockers, ITP, or cookie restrictions) and provides click-level attribution.

How do I find my tracker's postback URL?

In Keitaro: Campaigns β†’ Tracking URLs β†’ S2S Postback. In BeMob: Settings β†’ S2S Postback. In Binom: Settings β†’ Postbacks. The URL typically looks like `https://yourdomain.com/postback?clickid={clickid}&payout={payout}`.

Why are my conversions showing in the CPA network but not in my tracker?

The most common cause is that the click ID is not being passed through your landing page to the offer URL. Check that your LP forwards the `clickid` URL parameter. Also verify you're using the correct macro names for your specific CPA network.

Do I need S2S postback if I already have Facebook Pixel?

Yes. Pixel tracks on-platform conversions for reporting, but it misses iOS users (40%+ of mobile traffic), users with ad blockers, and conversions that happen after the attribution window. S2S postback in your tracker gives you accurate attribution regardless of browser. Run both, with Event ID deduplication.

How do I prevent fake postback injections?

Add a secret token parameter to your postback URL and configure your tracker to reject postbacks without it. Also whitelist your CPA network's postback sender IPs in tracker settings. This prevents outside parties from injecting fake conversions into your stats.

What is Event ID deduplication for Facebook CAPI?

When you fire both a pixel event and a CAPI server event for the same conversion, Facebook may count it twice without deduplication. By setting the same Event ID in both the pixel event and the CAPI event (using your click ID as the Event ID), Facebook deduplicates them and counts only one conversion.

How long does it take to set up S2S postback from scratch?

For an experienced buyer: 20–30 minutes per offer. For beginners: 45–90 minutes including testing. The most time-consuming parts are mapping the correct macro names for each CPA network and troubleshooting click ID passthrough on landing pages.

Meet the Author

NPPR TEAM Editorial
NPPR TEAM Editorial

Content prepared by the NPPR TEAM media buying team β€” 15+ specialists with over 7 years of combined experience in paid traffic acquisition. The team works daily with TikTok Ads, Facebook Ads, Google Ads, teaser networks, and SEO across Europe, the US, Asia, and the Middle East. Since 2019, over 30,000 orders fulfilled on NPPRTEAM.SHOP.

Articles

β–²