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:
- Click landing: when ADBNK directs the user to your landing page, it passes
click_idto you via a URL macro; - Conversion postback: when a conversion happens, your server posts back that
click_idto 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:
| Macro | Description |
|---|---|
{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:
https://your-shop.com/landing?adbnk_click={click_id}&z={zone_id}After a click, the user actually lands on:
https://your-shop.com/landing?adbnk_click=CLK20260710120000abcd1234&z=42Store 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):
https://track.adbnk.co/track/postback/track/postback and the conversion endpoint /track/conversion share the same processing logic and parameters.
Request parameters
| Param | Alias | Required | Description |
|---|---|---|---|
code | c | Yes | Conversion tracker code tracking_code (cvt_...) |
click_id | clickid | No | The click ID saved in step 1, for attribution |
value | payout | No | Conversion amount; falls back to the tracker's default when omitted |
type | — | No | Conversion 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):
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):
{ "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):
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 thevalueparam{event}→ the conversion type, mapping to thetypeparam
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
| Dimension | Pixel / JS (browser) | S2S Postback (server) |
|---|---|---|
| Trigger location | Conversion page loads in the browser | Your server actively requests |
| Ad-blocker resistance | Easily blocked | Unaffected |
| Cookie/JS dependency | Yes | No |
| Reliability | Medium | High |
| click_id source | Frontend must extract from landing URL and store | Server saves it with the order and posts back |
| Best for | Static pages, no server callback | Payment 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.