All guides
Conversions

Conversion Postback Setup (S2S)

ClicksTracker tracks conversions server-to-server, no pixels required. This guide covers both directions: the inbound conversion URL that your affiliate network fires when a sale lands, and the outbound postback ClicksTracker sends back to your traffic source so it can optimize.

How S2S tracking works

On every redirect, ClicksTracker generates a unique click ID (a UUID). You forward that click ID to your offer or affiliate network. When the user converts, the network calls your ClicksTracker conversion URL and echoes the same click ID back, so the conversion is matched to the exact click that produced it, along with the campaign, zone, device, and geo captured on that click.

1. The inbound conversion URL

Affiliate networks report conversions to a single public endpoint. It is identified by your install UUID and takes the click ID, an optional transaction ID, and an optional payout:

GET https://conversion-tracker.com/conversion/{installUuid}?cid={click_id}&tid={transaction_id}&payout={amount}

Copy the exact URL, with your install UUID already filled in, from Settings → Tracking Setup in the dashboard. The endpoint is public (no auth) and identifies your install by that UUID. It accepts GET and POST, with the parameters in the query string or a form body.

Query parameters

ParameterRequiredDescription
cidYesThe ClicksTracker click ID. Must be a valid UUID. This is the value you forwarded to the offer on the click.
tidNoThe network's transaction or order ID, up to 250 characters. It identifies one sale on the click. Without it, only the first postback for a click is recorded and a repeat is rejected with 409. With it, a tid the click has not seen yet is stored as an extra event that adds its payout, and the same tid sent again is rejected with 409.
payoutNoConversion revenue as a number (for example 12.50). Defaults to 0 when omitted.

Response codes

CodeMeaning
200Conversion accepted and processed.
202The click has not arrived yet. The conversion is queued and matched automatically once the click lands.
409The same tid was already recorded for this click, or a postback without a tid arrived for a click that has already converted.
400Invalid install UUID, a malformed cid (not a valid UUID), a tid longer than 250 characters, or a negative or non numeric payout.
500Something failed on our side while queueing the conversion. A network that retries failed postbacks sends it again.

The endpoint is rate limited per install and sending address (600 requests per minute by default, and 3,000 per minute for one address across all installs). Requests over the limit get a 429 and are logged. A 202 is normal and healthy: it just means the postback beat the click into the pipeline, and ClicksTracker will reconcile it.

2. Wire it up step by step

1

Copy your conversion URL

In the dashboard, open Settings → Tracking Setup and copy your inbound conversion URL. It already contains your install UUID.

2

Forward the click ID to your offer

Add the {click_id} macro to the offer URL, in the affiliate network's sub ID parameter, for example aff_sub={click_id} on CrakRevenue. ClicksTracker replaces it with the click's ID on every redirect, and the network stores it with the lead.

In the postback, map the network's macro for that sub ID back to cid. Settings → Tracking Setup has ready made templates for ten networks (CrakRevenue, LosPollos, ClickDealer, Zeydoo, Dr.Cash, AdCombo, LemonAD, Everad, MyLead and Mobipium).

3

Paste the URL into the network's postback field

Add the ClicksTracker conversion URL to your network's Server Postback / S2S field. Map their tokens onto the parameters:

  • cid → the click ID you passed through the offer
  • payout → the sale amount / commission token
  • tid → the transaction or order ID token

If the network sends a postback for every conversion status (pending, approved, rejected), set it to send approved conversions only: the conversion URL has no status parameter, so every postback it receives counts as a conversion.

4

Fire a test and confirm

Trigger a test conversion. A 200 response and a new row in the Conversions log confirm the loop is closed.

3. Outbound postbacks to your traffic source

When a conversion is recorded, ClicksTracker can fire a postback to your traffic source (ExoClick, PropellerAds, and the rest) so the network learns which click converted and can optimize delivery. Configure the outbound URL template per traffic source, or per campaign event, then drop in the macros below. They are replaced with real values at send time.

# Example outbound template https://s2s.your-network.com/cb?clickid={external_id}&sum={payout}&txid={transaction_id}

{external_id} is the traffic source's own click ID, captured on the click via the eid parameter. That is the value the network needs back to match the conversion to its click. Failed deliveries are retried automatically (up to 3 attempts).

Available macros

GroupMacros
Conversion{click_id} {conversion_id} {transaction_id} {payout} {revenue} {event_count} {timestamp} {external_id}
Campaign{campaign_id} {campaign_name}
Device & browser{browser} {os} {device} {device_type} {device_brand}
Location{country} {country_iso} {city} {isp} {language}
Custom variables{v0}–{v9} (also available as {var0}–{var9})

{payout} and {revenue} are aliases for the same value, and the ten custom variables accept either the short {v0} or long {var0} form. Pick whichever your network expects.

Two macro names mean different things in an offer URL and in a postback. The custom variables are numbered from one in the offer URL and from zero in the postback, so the value an offer URL gets as {v1} arrives in a postback as {v0}, and so on up to {v10} and {v9}. And {country} in an offer URL is the two letter ISO code (for example DE), while {country} in a postback is the English country name (Germany): use {country_iso} in a postback for the code.

Close the loop on every conversion

Set up S2S postbacks in ClicksTracker and track revenue back to the click.