Postback tracking for affiliate offers.
Every sale on the click that made it.
Your network knows you made a sale. It doesn't know it came from your Tuesday newsletter or the second ad in your campaign. Pass Track Link's click ID into the offer, give the network one postback URL, and every conversion — upsells and refunds included — lands on the exact click.
Free forever · no credit card · sign in with Google in seconds
Quick answer
Postback tracking (S2S) matches affiliate sales to clicks without a pixel. You put your click ID in the network's sub-ID field; when a sale is approved, the network calls your postback URL from its server with that ID, the payout and the order number. Because nothing runs in the buyer's browser, ad blockers and closed tabs can't lose the sale. On Track Link it's free on every plan.
Set it up in three steps
About five minutes per network, and you only do it once.
1. Put {click_id} in the offer's sub-ID
Paste your affiliate link as a Track Link destination and add the network's sub-ID parameter with {click_id} — for ClickBank that's unique_aff_sub1={click_id}. Track Link swaps in each visitor's click ID on the way through, and the Links page offers to add it when it recognises the network.
2. Paste your postback URL into the network
Copy your postback URL from the Conversions page and paste it into the network's postback or S2S settings with its macros. The network fills them in — click ID, payout, currency, transaction ID — every time a sale is approved.
3. See the sale on the click
The conversion shows on the link, in Analytics and in Revenue with the payout attached. Upsells arrive as separate conversions, and refunds the network reports drop out of revenue on their own.
Affiliate link: https://hop.clickbank.net/?affiliate=you&vendor=offer&unique_aff_sub1={click_id}
Visitor gets: https://hop.clickbank.net/?affiliate=you&vendor=offer&unique_aff_sub1=c9hw979uq47q69
Postback URL: https://api.gettrack.link/postback/YOUR_KEY?click_id={unique_aff_sub1}&payout={affiliate_earnings}¤cy=USD&txid={receipt_id}&status={event_type}Postback URLs for popular networks
The Conversions page builds these with your own key. Networks marked * use macro names from a tracker's integration guide — check them in the network before going live.
| Network | Add to your affiliate link | Postback URL |
|---|---|---|
| ClickBank | unique_aff_sub1={click_id} | https://api.gettrack.link/postback/YOUR_KEY?click_id={unique_aff_sub1}&payout={affiliate_earnings}¤cy=USD&txid={receipt_id}&status={event_type} |
| Digistore24 | cid={click_id} | https://api.gettrack.link/postback/YOUR_KEY?click_id={cid}&payout={amount_affiliate}¤cy={currency}&txid={transaction_id}&status={transaction_type}&billing={billing_type}&test={is_test} |
| Impact | subId1={click_id} | https://api.gettrack.link/postback/YOUR_KEY?click_id={SubId1}&payout={Payout}¤cy={Currency}&txid={ActionId}&status={Status} |
| Awin | clickref={click_id} | https://api.gettrack.link/postback/YOUR_KEY?click_id=!!!clickRef!!!&payout=!!!commission!!!¤cy=!!!transactionCurrency!!!&txid=!!!transactionId!!! |
| Rakuten Advertising | u1={click_id} | https://api.gettrack.link/postback/YOUR_KEY?click_id=<u1>&payout=<commissions>&txid=<etransaction_id>&status=<is_event> |
| Everflow networks | sub1={click_id} | https://api.gettrack.link/postback/YOUR_KEY?click_id={sub1}&payout={payout_amount}¤cy={offer_currency}&txid={transaction_id}&event={event_name} |
| CAKE networks | s2={click_id} | https://api.gettrack.link/postback/YOUR_KEY?click_id=#s2#&payout=#price#&txid=#leadid# |
| CPAlead | subid={click_id} | https://api.gettrack.link/postback/YOUR_KEY?click_id={subid}&payout={payout}&txid={lead_id} |
| JVZoo | tid={click_id} | https://api.gettrack.link/postback/YOUR_KEY?click_id={tid}&payout={affiliate_amount}¤cy={currency}&txid={transaction_id}&status={transaction_type} |
| BuyGoods * | subid={click_id} | https://api.gettrack.link/postback/YOUR_KEY?click_id={SUBID}&payout={COMMISSION_AMOUNT}&txid={ORDERID}&event={CONV_TYPE} |
| MaxWeb | subid2={click_id} | https://api.gettrack.link/postback/YOUR_KEY?click_id={SUBID2}&payout={COMMISSION_AMOUNT}&txid={ORDERID} |
| TUNE / HasOffers networks | aff_sub={click_id} | https://api.gettrack.link/postback/YOUR_KEY?click_id={aff_sub}&payout={payout}¤cy={currency}&txid={transaction_id} |
| MaxBounty * | s2={click_id} | https://api.gettrack.link/postback/YOUR_KEY?click_id=#S2#&payout=#RATE# |
| Travelpayouts * | sub_id={click_id} | https://api.gettrack.link/postback/YOUR_KEY |
No per-click postback: CJ (Commission Junction), Amazon Associates, PartnerStack — Track Link counts the clicks, and you can add the tracking script to pages you own. Full macro reference in the conversion tracking docs.
What a postback records
Real affiliate life: retries, upsells, refunds and typos in macros.
Upsells, leads and sales
A click can have many conversions. A new transaction ID is a new sale, and a lead and a sale on the same click count separately.
Pending, approved, refunded
Status updates from the network move the same conversion along. Refunded and declined sales stop counting toward revenue, even when the refund arrives with its own transaction ID.
No double counting
Networks retry postbacks. Repeats of the same click, event and transaction are recognised and ignored.
Keyed postback URL
A postback URL with your workspace key, so even a sale that can't be matched is tied to your workspace instead of disappearing.
Simulate a sale
Open your link, press Simulate a sale, and see the click ID reach the offer and the postback find the click. Nothing is recorded.
Sales we couldn't match
Postbacks whose click ID matches no click are kept for 90 days with the transaction and amount, so a broken link can be fixed before more sales slip.
Alerts when sales stop
A daily check emails you when a link that usually gets sales keeps getting clicks but no sales for three days.
Postback log
Every postback for 30 days, with a plain reason when one didn't count, plus the option to refuse postbacks without your key.
Send sales to your traffic source
Forward each sale to NewsBreak, Taboola, Outbrain, MGID and others so they optimise for buyers, not clicks.
Running paid traffic? See sending affiliate sales back to NewsBreak.
Honest limits
- A postback matches by click ID. If the affiliate link doesn't carry {click_id} in the sub-ID field, the network has nothing to send back.
- CJ (Commission Junction), Amazon Associates, PartnerStack can't send Track Link a per-click postback, so sales there can't be confirmed automatically.
- Google, Meta and TikTok ads need their own conversion APIs. Track Link stores gclid, fbclid and ttclid with each click, but doesn't send conversions to those platforms yet.
- Tracked clicks count toward your plan's monthly click allowance, like any Track Link link.
Postback tracking FAQ
What is a postback URL?
A postback URL is an address the affiliate network calls from its own server when a conversion happens. It carries the click ID you passed into the network's sub-ID field, plus details such as the payout and transaction ID, so the sale can be matched to the exact click that caused it. It's also called S2S (server-to-server) tracking or a callback URL.
Postback or pixel — which should I use?
Use a postback whenever you promote someone else's offer: you can't put a script on the advertiser's checkout, and a postback doesn't depend on the buyer's browser, so ad blockers, cookie banners and closed tabs can't lose the sale. Use the Track Link tracking script on pages you own, such as your own store's thank-you page. Both land in the same conversion reports.
Is postback tracking free?
Yes. Recording conversions from postbacks works on every plan, including Free, with a keyed postback URL tied to your workspace. Pro+ plans add a log of every postback your networks send, and forwarding each sale to the traffic source that bought the click.
Which affiliate networks work?
Any network that can call a URL with its own macros. Track Link has ready-made postback URLs for ClickBank, Digistore24, Impact, Awin, Rakuten Advertising, Everflow networks, CAKE networks, CPAlead, JVZoo, BuyGoods, MaxWeb, TUNE / HasOffers networks, MaxBounty, Travelpayouts, and a custom template for everything else. CJ (Commission Junction), Amazon Associates, PartnerStack can't send Track Link a per-click postback, so only clicks are tracked there.
How are upsells, duplicates and refunds handled?
Each conversion is keyed by click, event and transaction ID. A network retrying the same postback updates the conversion instead of counting it twice, an upsell with a new transaction ID becomes its own conversion, and a refund — a refund status or a negative amount — marks the sale refunded and removes it from revenue. Networks such as Digistore24 give each refund its own transaction ID; Track Link applies it to the sale on the same click, and a resent refund isn't applied twice.
How do I test my postback?
Open your tracked link once, then press Simulate a sale in the setup guide on the Conversions page: it checks the click ID reaches the offer and the postback finds the click, without recording anything. Then press your network's test button, and the guide confirms the test postback arrived. To test by hand, call your postback URL with a click ID from your own click; the X-Tracklink-Result response header says what happened (created, duplicate, unknown_click, unfilled_macro…).
More on tracking sales
ClickBank conversion tracking
unique_aff_sub1 plus one postback URL: every sale on its click.
Digistore24 conversion tracking
cid on the promolink plus one S2S postback, refunds and rebills included.
NewsBreak conversion tracking
Send affiliate sales back to NewsBreak Ads so it bids for buyers.
Affiliate link tracker
Per-placement clicks and sales for every affiliate link.
Revenue attribution
ROI and ROAS per link and campaign.
Conversion tracking docs
Macros per network, destination tokens and forwarding rules.
Stop guessing which click made the sale
Sign in with Google, open Conversions, pick your network. Your postback URL is ready before your coffee is.
Start free