Cookieless Tracking

Maintain accurate affiliate attribution in Safari ITP, Firefox ETP, and cookie-less environments using canvas fingerprinting, multi-layer storage fallback, and server-to-server postback — the same approach used by Affise, Trackier, HasOffers, and Offer18.

Why Cookieless?

  • Safari ITP 2.x — caps first-party cookies set via JavaScript to 7 days
  • Firefox ETP — blocks third-party cookies by default; strict mode also restricts localStorage
  • Chrome Privacy Sandbox — third-party cookies removed; first-party attribution APIs in active development
  • Consent laws — GDPR, ePrivacy Regulation require opt-in before cookies can be set

How Fingerprinting Works

When cookieless: true is set, the SDK's ee.generate() method builds a browser fingerprint from passive signals:

SignalDetail
Screen & hardwareResolution, color depth, hardware concurrency, device memory, platform
Canvas fingerprintRenders a hidden canvas and hashes pixel output — differs per GPU driver / OS
WebGL fingerprintReads renderer and vendor strings from WebGL context
Timezone & languageIntl locale, timezone offset, navigator.languages
Font enumerationTests CSS metric variation across a probe font list
Accuracy Note

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

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

01

First-party Cookie

Set with SameSite=Lax, Secure. Survives page reloads and browser restarts. Capped at 7 days by Safari ITP.

02

localStorage

Persistent across sessions. Not affected by ITP for first-party domains. Primary fallback when cookie is expired.

03

sessionStorage

Cleared when the tab closes. Used when localStorage is blocked (e.g. Firefox strict mode private window).

04

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.

JavaScript
// 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.

JavaScript
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.

Industry Standard

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.

HTTPS Postback URL
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}
Rate this article
★★★★★
Thanks for rating!

Was this article helpful?