How postback URLs work
When a user clicks your affiliate link, your tracker generates a unique click ID and passes it along to the offer. Example click URL:
https://offer.com/?click_id=abc123xyz
The offer's landing page stores that click_id. Later, when the user converts, the offer's server reads the stored click ID and fires a GET request to your postback URL, replacing macros with real values:
https://your-tracker.com/postback?cid={click_id}&payout={payout}&status={status}
Your tracker receives the request, looks up the click with ID abc123xyz, marks it as a conversion, and records the payout. No browser, no cookie, no pixel — pure server-to-server.
Common macros you'll see
{click_id}— the unique click identifier (sometimessub_id,tid, oroid){payout}— the commission amount for this conversion{status}—approved,pending,rejected, or similar{transaction_id}— the advertiser's order or transaction reference{offer_id}— which offer converted (useful if you run several){event}— event type (sale, trial, deposit, upsell, etc.)
Macro syntax varies between networks — some use {click_id}, others [click_id] or #click_id#. Always check the offer's documentation before setting up.
Postback vs pixel tracking
Both exist to report conversions back to the tracker. They differ in where they fire:
- Pixel: fires in the user's browser when they load a "thank you" page. Can be blocked by ad blockers, privacy settings, or users who bounce before the page loads.
- Postback: fires from the advertiser's server directly to yours. The user's browser is irrelevant. Works even if the user closes the tab.
In 2026, with Apple's ITP, cookie restrictions, and growing ad-blocker adoption, postback URLs are the dominant tracking method for paid affiliate traffic. Pixels still work as a backup or on organic traffic, but any serious campaign runs postback.
Setting up a postback
- In your tracker (Voluum, RedTrack, BeMob, FunnelFlux, Binom), generate a postback URL with macros for the offer's platform
- Copy the URL and paste it into the offer's postback or conversion settings
- Test by sending a real click and completing a small conversion — verify the tracker records it
- Check the
statusvalues you're receiving and map them correctly (approved vs rejected affects reporting accuracy)
When postbacks break
Even server-to-server tracking can fail:
- Click ID not passed through — a redirect or tracker strips the click_id parameter before the offer stores it
- Wrong macro syntax — offer uses
[click_id]but you set up{click_id} - Double-firing — the postback fires twice on one conversion, inflating numbers
- Advertiser delay — some networks fire postbacks once per day in batch, not in real time; expect attribution lag