Client-Side Scripts
Impressio's client-side layer consists of 4 JavaScript engines that are concatenated and served as a single bundle (h.js) via Lambda@Edge. Each engine is self-contained, uses IIFE pattern, and communicates through window globals.
h.js, Lambda@Edge dynamically concatenates all 4 scripts into a single response, injecting server context (CloudFront headers, JA4 fingerprint, ASN) as a JSON placeholder that the fingerprint engine reads at runtime.🔐 Fingerprint Engine
v4.5.2 · 589 LOC
Adaptive hybrid fingerprinting combining server-side signals (JA4, ASN, timezone) with client-side techniques (Canvas, WebGL, AudioContext, fonts, WebRTC). Privacy-aware: adapts strategy based on cookie policy.
window.h📡 Tracking Engine
v5.0.0 · 982 LOC
Core tracking with identity resolution, domainprint sync, IndexedDB attribution persistence, custom events API, and native app support. Orchestrates all other engines.
window.impressio🎯 Campaign Detector
v1.0.0 · 1,479 LOC
Detects and normalizes campaign parameters from 60+ platforms. Resolves unexpanded macros, identifies platforms via click IDs, UTM sources, and user-agent patterns.
window.TrafficCampaign🧠 Behavioral Biometrics
v2.1.0 · 395 LOC
Human behavior pattern analysis generating ~165 bits of entropy from mouse movements, keyboard rhythm, scroll patterns, and touch interactions.
window.__behavioralV2Execution Order
| Order | Script | Timing | Dependencies |
|---|---|---|---|
1 | fingerprint.js | Immediate (IIFE) | None — runs first |
2 | behavioral_v2.js | Immediate (IIFE) | None — registers API on window |
3 | campaign.js | Immediate (IIFE) | None — self-contained |
4 | tracking.js | DOMContentLoaded | window.h, window.__behavioralV2 |
Data Flow
Browser loads h.js (Lambda@Edge concatenated bundle)
│
├─ fingerprint.js → generates hybrid hash → window.h / window.__fpDebug
├─ behavioral_v2.js → registers collectors → window.__behavioralV2
├─ campaign.js → detects campaign/source → window.TrafficCampaign
│
└─ tracking.js (DOMContentLoaded)
├─ captureAttribution() → IndexedDB touchpoints
├─ capturePageView() → IndexedDB pageview
├─ loadAttrCache() → window.__impressioAttrCache
├─ getDomainprint() → cookie __dp / POST /t
├─ window.h.generateStable() → fingerprint
├─ sendTrackingEvent() → POST /t (main payload)
├─ __behavioralV2.start() → 6s collection
└─ sendBehavioralData() → POST /t (behavioral payload)Installation
The scripts are served automatically when you add the Impressio tracking snippet to your page. No manual installation is needed — Lambda@Edge handles bundling and delivery.
<!-- Standard installation -->
<script src="https://t.getimpress.io/h.js"
data-user-id="YOUR_USER_ID"
data-organization-id="YOUR_ORG_ID"
data-debug="false"
async></script>data-debug="true" to enable console logging for all 4 engines. All log prefixes are bracketed: [FP], [Tracking],[BehavioralV2], [Campaign].