Skip to content

S2S Postback (Server-to-Server)

S2S (Server-to-Server) Postback is the most reliable way to report conversions: when a conversion happens on your server (e.g. a payment success callback, an order write), your server sends an HTTP request directly to ADBNK, without relying on the browser loading a pixel. It's unaffected by ad blockers, cookie restrictions, or unloaded pages.

The whole chain has two parts:

  1. Click landing: when ADBNK directs the user to your landing page, it passes click_id to you via a URL macro;
  2. Conversion postback: when a conversion happens, your server posts back that click_id to ADBNK.

Step 1: Receive click_id (landing-page macros)

When configuring the campaign's landing-page URL in the advertiser console, you can use macro placeholders. When the user clicks the ad, ADBNK substitutes real values into the landing-page URL, passing click_id and other info to you.

Both {macro} and forms are supported:

MacroDescription
{click_id}Click ID (the key to conversion attribution)
{bid_id}Bid ID
{request_id}Ad request ID
{creative_id}Creative ID
{zone_id}Zone ID
{timestamp}Unix timestamp
{random}Random number (for cache busting)

Landing-page URL config example:

text
https://your-shop.com/landing?adbnk_click={click_id}&z={zone_id}

After a click, the user actually lands on:

text
https://your-shop.com/landing?adbnk_click=CLK20260710120000abcd1234&z=42

Store click_id carefully

Once the landing page has the click_id, save it with the session/order in your database (e.g. write it into the order record). Only then can you post it back when the conversion (order/payment) happens.

Step 2: Post back the conversion (Postback URL)

When a conversion happens, your server sends a request to ADBNK's Postback endpoint (GET or POST):

text
https://track.adbnk.co/track/postback

/track/postback and the conversion endpoint /track/conversion share the same processing logic and parameters.

Request parameters

ParamAliasRequiredDescription
codecYesConversion tracker code tracking_code (cvt_...)
click_idclickidNoThe click ID saved in step 1, for attribution
valuepayoutNoConversion amount; falls back to the tracker's default when omitted
typeNoConversion event type, e.g. PURCHASE, LEAD, SIGNUP, etc.

A request without a tracking code is rejected

If there's neither code/c (tracking code) nor click_id, the endpoint returns 400 Missing click_id or tracking code. An invalid or disabled tracking code returns 404 Invalid tracking code.

Postback example

curl (from your server):

bash
curl -sG "https://track.adbnk.co/track/postback" \
  --data-urlencode "code=cvt_your_tracking_code" \
  --data-urlencode "click_id=CLK20260710120000abcd1234" \
  --data-urlencode "value=99.00" \
  --data-urlencode "type=PURCHASE"

Successful response (JSON):

json
{ "code": 0, "msg": "OK", "conversion_id": 12345 }

Your Postback template

In your affiliate/CRM system, you can configure the postback address as a template with your own macros, which your system substitutes with real values at trigger time. For example (variables inside {} are your system's — replace as needed):

text
https://track.adbnk.co/track/postback?code=cvt_your_tracking_code&click_id={click_id}&value={payout}&type={event}
  • {click_id} → the ADBNK click ID saved in step 1
  • {payout} → the conversion amount, mapping to the value param
  • {event} → the conversion type, mapping to the type param

TIP

The Postback template generated by the console is usually of the form .../track/conversion/<tracking_code>?click_id={click_id}&value={value}; the exact endpoint and placeholders follow what's generated in the advertiser console's "Get tracking code".

Trade-offs vs. Pixel / JS

DimensionPixel / JS (browser)S2S Postback (server)
Trigger locationConversion page loads in the browserYour server actively requests
Ad-blocker resistanceEasily blockedUnaffected
Cookie/JS dependencyYesNo
ReliabilityMediumHigh
click_id sourceFrontend must extract from landing URL and storeServer saves it with the order and posts back
Best forStatic pages, no server callbackPayment callbacks, order systems

Recommended combo

When you have a server order/payment system, prefer S2S Postback; for purely static landing pages or supplementary verification, you can add Pixel / JS conversion reporting. Both chains report to the same conversion endpoint, so be sure to deduplicate (post back each order only once).

For more endpoint-level conventions, see the Events & Conversion Reporting API.

Documentation released under the MIT License.