How Fingerprinting Works
When cookieless: true is set, the SDK's ee.generate() method builds a browser fingerprint from passive signals:
| Signal | Detail |
|---|---|
| Screen & hardware | Resolution, color depth, hardware concurrency, device memory, platform |
| Canvas fingerprint | Renders a hidden canvas and hashes pixel output — differs per GPU driver / OS |
| WebGL fingerprint | Reads renderer and vendor strings from WebGL context |
| Timezone & language | Intl locale, timezone offset, navigator.languages |
| Font enumeration | Tests CSS metric variation across a probe font list |
Canvas fingerprinting achieves ~95% accuracy. Enable it as a fallback, not the primary method, for consented users where first-party cookies are available.
Enabling Cookieless Mode
AffclixSDK.init({
trackingDomain: 't.yourdomain.com',
cookieDomain: '.yourdomain.com',
cookieless: true
}); Multi-Layer Storage Fallback Stack
The SDK stores the click ID (utk_click_id) in four layers in descending preference:
First-party Cookie
Set with SameSite=Lax, Secure. Survives page reloads and browser restarts. Capped at 7 days by Safari ITP.
localStorage
Persistent across sessions. Not affected by ITP for first-party domains. Primary fallback when cookie is expired.
sessionStorage
Cleared when the tab closes. Used when localStorage is blocked (e.g. Firefox strict mode private window).
URL Parameter Relay
When all storage is blocked, the click ID is appended to navigation URLs as ?_ac_cid=... (with _ac_vid & _ac_sid) and read on the next page.
Session-Only Mode
For maximum privacy compliance, restrict storage to sessionStorage only. Session mode is toggled with a storage flag — set it before init() and all tracking data becomes ephemeral: nothing is written to cookies or localStorage, and everything is gone when the tab closes.
// Enable session-only storage BEFORE init()
localStorage.setItem('utk_smode', 'session');
AffclixSDK.init({
trackingDomain: 't.yourdomain.com'
}); Cross-Domain Tracking
When a user moves from your marketing site to your checkout subdomain, the SDK can carry the click ID across domains by decorating outbound links.
AffclixSDK.init({
trackingDomain: 't.yourdomain.com',
crossDomainDomains: ['checkout.brand.com', 'app.brand.com']
});
// Manually decorate a URL
var url = AffclixSDK.decorateURL('https://checkout.brand.com/cart');
// → https://checkout.brand.com/cart?_ac_vid=...&_ac_sid=...&_ac_cid=ck_abc123 S2S Postback
Server-to-server postback is the most reliable conversion tracking method — no JavaScript, no cookies, no browser restrictions. It is the standard used by Affise, Trackier, HasOffers, and Offer18.
S2S postback fires from your server directly to Affclix when an order is confirmed. Because it does not rely on the browser, it achieves 100% delivery regardless of ad blockers, ITP, or consent status.
GET https://t.yourdomain.com/p
?auth={YOUR_SECURITY_TOKEN}
&c={CAMPAIGN_ID}
&e={EVENT_TOKEN}
&click_id={CLICK_ID}
&txn_id={ORDER_ID}
&sale={REVENUE}
¤cy={CURRENCY}