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.

How it works: When a page loads 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.

Execution Order

OrderScriptTimingDependencies
1fingerprint.jsImmediate (IIFE)None — runs first
2behavioral_v2.jsImmediate (IIFE)None — registers API on window
3campaign.jsImmediate (IIFE)None — self-contained
4tracking.jsDOMContentLoadedwindow.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>
Debug mode: Add data-debug="true" to enable console logging for all 4 engines. All log prefixes are bracketed: [FP], [Tracking],[BehavioralV2], [Campaign].