Conversion Tracking SDK
Conversion tracking reports a conversion to ADBNK after the user completes a key action (order, sign-up, lead, etc.), so the conversion is attributed to the corresponding click, creative, and campaign. ADBNK offers two frontend reporting methods — Pixel (image pixel) and JS — both of which ultimately hit the same conversion endpoint.
Create a conversion tracker first
Before reporting, create a Conversion Tracker in the advertiser console; the system generates a unique tracking code tracking_code (of the form cvt_xxxxxxxx...). The console gives you copy-ready Pixel / JS / Postback code directly; this page explains the underlying principles and parameters. For the operational flow, see the Conversion Tracking guide.
Pixel method (image pixel)
Embed a 1×1 transparent pixel image on the conversion completion page (e.g. an order success page); the browser loading the image completes the report. Suitable for pure HTML pages that can't run complex JS.
<img src="https://track.adbnk.co/track/conversion.gif?c=cvt_your_tracking_code"
width="1" height="1" style="display:none" alt="" />A full example carrying amount, order number, and click_id:
<img src="https://track.adbnk.co/track/conversion.gif?c=cvt_your_tracking_code&value=99.00&click_id=CLK20260710xxxx"
width="1" height="1" style="display:none" alt="" />The pixel request hits /track/conversion.gif; after recording the conversion, the server always returns a 1×1 transparent GIF.
JS method
If the conversion amount must be computed at runtime (e.g. cart total), building the pixel request dynamically with JS is more flexible. You can attach the amount to a global variable before conversion:
<script>
// Conversion amount (e.g. order paid amount), optional
window.adbnk_conversion_value = 99.00;
(function () {
var img = new Image();
img.src = 'https://track.adbnk.co/track/conversion.gif'
+ '?c=cvt_your_tracking_code'
+ '&v=' + (window.adbnk_conversion_value || 0)
+ '&click_id=' + (localStorage.getItem('adbnk_click_id') || '')
+ '&_t=' + Date.now(); // cache-busting param
})();
</script>Where click_id comes from
When a user clicks an ADBNK ad and lands on your page, ADBNK appends the click ID to the landing-page link via the URL macro {click_id}. You should read this parameter on the landing page and store it in localStorage / cookie / server session, then pass it back at conversion for precise attribution. For the macro mechanism, see S2S Postback.
Request parameters
Both Pixel and JS methods ultimately hit the conversion endpoint (/track/conversion.gif or /track/conversion), supporting these parameters:
| Param | Alias | Required | Description |
|---|---|---|---|
c | code | Yes | Conversion tracker code tracking_code |
click_id | clickid | No | Click ID, to attribute the conversion to click/creative/campaign |
value | v / payout | No | Conversion amount; falls back to the tracker's default when omitted |
type | — | No | Conversion event type, e.g. PURCHASE, LEAD, SIGNUP, PAGEVIEW, CUSTOM |
Amount and type follow the console config
The conversion event type (event_type) and default conversion value (conversion_value) are usually configured at tracker creation. A value passed from the frontend overrides the default; if omitted, it falls back to the tracker's default value. The exact set of usable types follows the advertiser console.
Attribution and deduplication
- Attribution: when
click_idis carried, the system looks up the campaign, ad group, and creative for that click and writes them into the conversion record; if not found, the conversion is kept with empty attribution. - Attribution window: each tracker has an
attribution_window(in days, default 30 days); clicks beyond the window are no longer attributed. - click_id latency: the system parses the click time from
click_idto compute the "click → conversion" duration for analysis.
Deduplication is your responsibility
The conversion endpoint doesn't automatically dedup by order number — triggering the same pixel/JS multiple times produces multiple conversion records. Recommendations:
- Fire the report only once on the conversion success page (avoid duplicate triggers on refresh);
- Attribute via
click_id, and use the attribution window to filter expired clicks; - To dedup by order, ensure each order reports only once in your own system (e.g. set a flag after reporting).
_t / Date.now() is only for busting the browser's image cache — it's not an idempotency key and provides no deduplication.
Server-to-server reporting
If your conversion happens server-side (e.g. a payment callback), use the more reliable S2S Postback instead of depending on the browser loading a pixel. See S2S Postback. You can also reference the endpoint conventions in the Events & Conversion Reporting API.