Skip to content

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.

html
<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:

html
<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:

html
<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:

ParamAliasRequiredDescription
ccodeYesConversion tracker code tracking_code
click_idclickidNoClick ID, to attribute the conversion to click/creative/campaign
valuev / payoutNoConversion amount; falls back to the tracker's default when omitted
typeNoConversion 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_id is 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_id to 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:

  1. Fire the report only once on the conversion success page (avoid duplicate triggers on refresh);
  2. Attribute via click_id, and use the attribution window to filter expired clicks;
  3. 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.

Documentation released under the MIT License.