Postback URL explained: what it is and S2S setup

A postback URL is how a network reports a conversion back to your tracker. This guide covers the flow, macros, statuses, deduplication and a setup checklist.

TDS Team Author
Published
10 min Reading time
All posts

A postback URL is a web address that your tracker exposes so that an affiliate network or advertiser can tell it about a conversion. When someone buys, signs up or deposits, the network sends an HTTP request to that address and attaches the click ID, the payout and the status. This server-to-server call (S2S, hence "s2s postback") is how a conversion gets matched back to the exact click that produced it.

Setting it up takes about fifteen minutes once you understand which value goes where. Most of the pain comes from skipping one link in the chain: the click ID has to leave your tracker, travel through the offer link to the network, and come back in the postback.

Short answer

Your tracker gives every click a unique ID and appends it to the offer URL as a parameter. The network stores that ID next to the visitor. When the visitor converts, the network requests your postback URL and fills in the click ID, payout and status. The tracker looks up the click, records the conversion and updates revenue and ROI. To set it up you copy the postback URL from your tracker, paste it into the offer settings on the network, replace the placeholders with the network's own macro names, and run a test conversion.

How a postback travels, step by step

Here is the whole path from ad click to a conversion in your report.

  1. The click arrives. A visitor clicks your ad and lands on your tracking link. The tracker logs the click and generates a unique click ID, for example a8f3c21d.
  2. The click ID goes into the offer URL. The tracker redirects the visitor to the offer and puts the click ID into a URL parameter such as ?subid=a8f3c21d. The parameter name is whatever the network expects for its sub ID field.
  3. The network stores it. The network saves that value together with its own record of the visit and the visitor's session.
  4. The visitor converts. A sale, lead or install happens on the advertiser's side, sometimes minutes later, sometimes days later.
  5. The network calls your postback URL. It sends a request to your tracker with the stored click ID, the payout and the conversion status filled in.
  6. The tracker records the conversion. It finds the click by ID, attaches the conversion to it, and from that point you see the source, the campaign, the geo and the revenue on one row.

The request is made by the network's server, not by the visitor's browser. That is the "server-to-server" part. It keeps working when the visitor has closed the tab, uses an ad blocker or has cookies disabled.

Anatomy of a postback URL

A postback URL is a normal URL with placeholders where values will be inserted. Here is a generic example:

Code
https://track.example.com/postback?clickid={clickid}&payout={payout}&status={status}&txid={transaction_id}

Break it into parts:

  • Domain and path. track.example.com/postback is the endpoint on your tracker that receives conversion calls. Your tracker generates this for you.
  • Click ID parameter. clickid={clickid} is the key. Without it the tracker cannot tell which click converted.
  • Payout. payout={payout} is the amount the advertiser pays for this conversion, usually in the currency of your network account.
  • Status. status={status} says whether the conversion is approved, pending or rejected.
  • Transaction ID. txid={transaction_id} is an optional unique value for the conversion itself. It is useful for deduplication, covered below.

The curly-brace parts are macros. The network replaces each macro with a real value at the moment it fires the request. The important detail is that macro names differ from network to network. One network writes {clickid}, another {subid}, another {aff_sub} or {sub1}. The example above is not a format you can copy to a real network as is. Open the network's documentation, find its list of postback macros, and substitute them one by one.

The parameter names on the left side of the equals sign (clickid, payout, status) are defined by your tracker. The macros on the right side are defined by the network. Mixing the two up is the most common setup mistake.

Conversion statuses: approved, pending, rejected

Not every conversion that the network reports is money in your pocket. Advertisers check leads and sales before they pay, so a conversion usually moves through statuses.

StatusMeaningHow to count it
Pending (hold)The conversion is registered, the advertiser has not checked it yetShow separately, do not count as revenue yet
ApprovedThe advertiser confirmed it and the payout is dueCount as revenue
RejectedThe advertiser declined it: fraud, duplicate, a refund, bad qualityExclude from revenue

Networks usually send a postback each time the status changes, so one conversion can produce two or three calls over its life: pending first, approved or rejected later. Your tracker has to update the existing conversion rather than create a new one. That is where the transaction ID matters.

The values that mean "approved" also differ. Some networks send the word approved, others send a number or a letter code. Check what your network actually sends before you build any rule on top of the status.

Deduplication by transaction ID

Networks retry failed requests. If your server was slow for a moment, the same postback may arrive twice or three times. If your tracker counts each call as a new conversion, you see revenue that does not exist.

The usual defence is a unique transaction ID for each conversion. The tracker remembers the IDs it has seen. When a call arrives with an ID it already knows, it treats it as an update or ignores it instead of adding a second conversion. Say the network sends a pending postback with txid=5521 at 10:00 and an approved postback with the same txid=5521 at 14:00. A tracker that deduplicates shows one conversion that changed status. A tracker that does not shows two.

If your network offers a transaction or conversion ID macro, add it to the postback. If it does not, check how it handles retries.

S2S postback vs pixel

A tracking pixel is a small snippet loaded in the visitor's browser on the thank-you page. It fires only if that page loads fully in a browser that allows it.

S2S postbackPixel
Who sends the callThe network's serverThe visitor's browser
Affected by ad blockers and cookie settingsNoYes
Works if the visitor closes the page earlyYesOften not
Can report later status changesYesRarely
Needs the advertiser's cooperationYes, in the network settingsYes, code on the thank-you page

When a network supports both, S2S is the more reliable choice for affiliate work. Pixels are what you fall back to when the advertiser will not send server calls.

Setup checklist

Follow these steps in order. Each one removes a class of problems before they show up in your numbers.

  1. Find the click ID parameter your network expects. Look in the network's docs for the sub ID field. Note its exact name.
  2. Add the click ID to the offer URL in your tracker. Your tracker has its own macro for the click ID. Put it as the value of the network's sub ID parameter.
  3. Copy the postback URL from your tracker. It already contains your domain and the parameter names your tracker reads.
  4. Open the offer or account postback settings on the network. Some networks set it per offer, some per account, some per offer group.
  5. Replace the placeholders with the network's macros. Match the click ID, payout, status and transaction ID to the network's macro list.
  6. Choose which events trigger the postback. If the network lets you pick statuses, send at least approved and rejected. Add pending if you want to see conversions in the hold stage.
  7. Check the protocol. Use https if your domain has a certificate.
  8. Save and run a test conversion. Details in the next section.

Testing with a test conversion

Do not wait for a real sale to find out whether the setup works. Test it end to end.

  1. Open your own tracking link in a browser. You become a click in the log with a known click ID.
  2. Follow the redirect to the offer and check that the sub ID parameter in the address bar holds a real value, not an empty string and not the literal text of the macro.
  3. Ask the network to register a test conversion for that click, or complete the offer yourself if it is cheap enough. Some networks have a "send test postback" button that lets you enter the click ID by hand.
  4. Open your tracker's conversion report. The conversion should appear on the row of your test click, with the right payout and status.
  5. If nothing appears, work through the checks in Postback not firing: a troubleshooting checklist.

Run the test again after any change to the offer link, the landing page or the redirect method. Each of them can break the chain.

Postbacks in TDS.SO

TDS.SO is first of all a traffic distribution system: one link in the ad, rules behind it for geo, device and other conditions, bot filtering before the click reaches the offer. The tracker part, with postbacks, conversions, revenue and ROI, is in beta. In the tracker, revenue is the sum of approved conversions, and cost is counted from all clicks, so ROI reflects what the advertiser actually confirmed.

Because the tracker is in beta, check the current postback URL and the parameter names in your dashboard rather than copying them from an article. For the overview of what the analytics section covers, see Analytics. If you route traffic through rules, Redirects describes how a click reaches the offer, which is the path your click ID has to survive. For the wider question of whether you need a tracker at all, read When you need a tracker.

Keep the click ID alive

The click ID is the one value you cannot lose. If a prelander, a redirect or a landing page drops the parameter, the network never sees it and the postback comes back empty. Whenever you add a step between the tracking link and the offer, open the final URL and confirm that the click ID is still there. It costs ten seconds and saves a week of unexplained missing conversions.

FAQ

What is a postback URL in simple words?

It is the address a network calls to tell your tracker that a visitor converted. The call carries the click ID, so your tracker knows which click to credit, along with the payout and status.

What is the difference between a postback and a pixel?

A postback is sent from the network's server to yours. A pixel runs in the visitor's browser. Postbacks are not affected by ad blockers or closed tabs, so they are the standard for affiliate tracking.

Why do my postback macros not work when I copy a URL from a guide?

Macro names belong to the network. A name like {clickid} in one guide may be {subid} or {aff_sub} on your network. Use the network's own list.

Do I need a postback if the network shows conversions in its own dashboard?

The network's dashboard shows totals, but it does not know your source, campaign or creative. A postback brings the conversion into your tracker, where you can split it by your own parameters and compare it with spend.

Can one conversion send several postbacks?

Yes. Many networks send one when the conversion is registered and another when its status changes. The transaction ID lets the tracker treat them as one conversion.

To see how conversion tracking fits with routing and bot filtering on one link, look at TDS.SO Analytics and the plans.

Was this article useful?
TDS Team Author

Guides and write-ups on routing, bot filtering and tracking from the TDS.SO team.

All articles by the author
Keep reading

Related

All posts
Analytics 9 min

Conversion attribution in affiliate marketing: a practical guide

11 Nov 2026 · TDS Team
Analytics 7 min

Postback vs Pixel Tracking: Which One to Use

11 Nov 2026 · TDS Team
Analytics 10 min

Click ID and SubID: Pass Them Through Redirects

10 Nov 2026 · TDS Team

Try it on
your own traffic

Link the Telegram bot and get 3 days free, once per account.

Create account