Events & Conversion Reporting
The tracking endpoints are prefixed with /track, require no authentication, and are served by track.adbnk.co. Ad impressions, clicks, and conversions are all reported here.
The track_id needed for impressions / clicks is issued by the Ad Request API (embedded in impression_url / click_url), so the SDK usually doesn't need to assemble it manually.
track_id
track_id is an AES-128-CBC-encrypted, URL-safe string that wraps request_id, creative_id, ad_id, zone_id, bid_id, and a timestamp. A forged or tampered track_id is logged by anti-fraud (INVALID_TRACK_ID) but still returns a 1×1 pixel / normal response, so fraudsters can't sense the block.
Impression reporting
GET /track/impression/{track_id}
Returns a 1×1 transparent GIF pixel. When you render the html returned by the ad request directly, the impression pixel is auto-injected and no extra call is needed.
| Param | Type | Required | Description |
|---|---|---|---|
track_id | string | Yes | Path param, from the ad request's impression_url |
_v | int | No | Protocol version; 2+ enables signature verification |
_d | string | No | v2 obfuscated device data |
_s | string | No | v2 request signature |
qa_k | string | No | v2 session key (from the ad request response) |
_r | string | No | v2 nonce (with millisecond timestamp, for replay protection) |
<img src="https://track.adbnk.co/track/impression/q1w2e3r4t5y6..."
width="1" height="1" style="position:absolute;left:-9999px" alt="" />An event is billable (billable=true) only when signature verification, anti-fraud, fingerprint consistency, and targeting all pass.
Click tracking
GET /track/click/{track_id}
Returns an interstitial page (HTML). The page collects device traits and document.referrer via JS, then POSTs to /track/click-verify; on passing, it redirects to the real landing page.
| Param | Type | Required | Description |
|---|---|---|---|
track_id | string | Yes | Path param, from the ad request's click_url |
_p | string | No | Obfuscated page info added by the SDK (page URL / referrer / timestamp) |
Before returning the interstitial page, the server writes a verify_pending click event (billable=false), ensuring clicks aren't lost in no-JS / blocked scenarios.
Click verification
POST /track/click-verify
| Param | Type | Required | Description |
|---|---|---|---|
track_id | string | Yes | The click's track_id |
qa_k | string | Yes | Session key (issued at the click stage, valid 5 minutes, one-time) |
_r | string | No | Nonce |
device_data | object | No | Device fingerprint / screen / OS / network / page info collected by the interstitial page |
{
"code": 0,
"message": "OK",
"data": {
"url": "https://shop.example.com/landing?click_id=CLK20260710...",
"click_id": "CLK20260710120001a1b2..."
}
}The returned url is the macro-substituted landing page, and click_id is used for subsequent conversion attribution.
Landing-page macros
The landing-page URL supports macro substitution ({macro} or ): bid_id, click_id, request_id, creative_id, zone_id, timestamp, random.
Conversion reporting
GET /track/conversion or POST /track/conversion
Reporting via the conversion tracker code is recommended; the legacy click_id method is also supported.
| Param | Type | Required | Description |
|---|---|---|---|
code / c | string | Yes* | Conversion tracker code tracking_code (recommended) |
click_id / clickid | string | No | Click ID, for attribution to a specific click |
value / payout | number | No | Conversion value; defaults to the tracker's configured default |
type | string | No | Conversion type (legacy mode), default conversion |
Without code, it's handled in legacy mode where click_id is required, otherwise it returns 400.
curl "https://track.adbnk.co/track/conversion?code=TRK_xxxxx&click_id=CLK20260710...&value=59.9"{ "code": 0, "msg": "OK", "conversion_id": 10086 }Conversion pixel
GET /track/conversion.gif
Reports a conversion silently as a pixel (returns a 1×1 GIF), with param c=tracking_code, suitable for landing pages that can't make AJAX calls.
<img src="https://track.adbnk.co/track/conversion.gif?c=TRK_xxxxx" width="1" height="1" alt="" />S2S Postback
GET /track/postback or POST /track/postback
Server-to-server postback, with the same params as /track/conversion (internally forwarded to the conversion-handling logic), suitable for an advertiser's server to actively post back when a conversion happens.
Deduplication and attribution
- Deduplication: impressions / clicks are treated as duplicates by
ip + creativewithin the dedup window, controlled by admin settingsad.impression_dedup_secondsandad.click_dedup_seconds(0= no dedup). Duplicate events are markedDUPLICATE_IMPRESSION/DUPLICATE_CLICKand not billed. - Attribution: conversions are attributed via
click_idtocampaign_id/adgroup_id/creative_id, recording the click-to-conversion latency. - Billing: only events that pass anti-fraud, fingerprint consistency, and targeting checks are billed.
Conversion tracker management (advertiser)
Trackers are created and managed by advertisers at /api/advertiser/trackers (auth required):
| Method | Path | Description |
|---|---|---|
GET | /api/advertiser/trackers | Tracker list |
POST | /api/advertiser/trackers | Create a tracker |
GET | /api/advertiser/trackers/{id}/code | Get the tag/postback code |
POST | /api/advertiser/trackers/{id}/regenerate-code | Regenerate the code |
GET | /api/advertiser/trackers/{id}/conversions | Conversion details |
GET | /api/advertiser/trackers/{id}/stats | Conversion stats |
Create tracker (POST /api/advertiser/trackers) params:
| Param | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Tracker name |
type | string | No | Type, default PIXEL (also POSTBACK, etc.) |
event_type | string | No | Conversion event type, default CUSTOM |
conversion_value | number | No | Default conversion value |
attribution_window | int | No | Attribution window (days), default 30 |
postback_url | string | No | Postback URL |
pixel_code | string | No | Pixel code |
After creation, the system auto-generates a tracking_code, which is the code used when reporting.
Related reading: Conversion Tracking guide · Ad Request API