ReflectDocs
Browse docsOverview
Web SDK

Web SDK

Reflect Web SDK — session tracking, UTM capture, web-to-app attribution, cross-domain tracking. Lightweight, first-party cookies only.

Installation

Script tag (UMD)

<script src="https://cdn.jsdelivr.net/gh/bablu147/reflect-sdk-web@v1.1.0/dist/reflect-web.umd.js"></script>
<script>
  ReflectWeb.initialize({
    appKey: 'app_live_...',
    baseUrl: 'https://api.reflect.cloud',
  });
</script>

npm / bundler (ESM)

npm install github:bablu147/reflect-sdk-web#v1.1.0
import { ReflectWeb } from '@reflect-sdk/web';

ReflectWeb.initialize({
  appKey: 'app_live_...',
  baseUrl: 'https://api.reflect.cloud',
});

Configuration

FieldTypeDefaultNotes
appKeystringRequired. Your app key from the admin panel.
companyKeystring?Optional for multi-tenant setups.
baseUrlstring?Server endpoint.
debugboolfalseLog events to console.
cookieDomainstring?autoDomain to scope the first-party cookie.
crossDomainDomainsstring[]?Domains for cross-domain tracking.
autoPageViewboolfalseAuto-track page views on init.

API reference

MethodDescription
initialize(config)Init the SDK, start flush timer, optionally track page view
trackEvent(name, props?)Track a custom event
trackPageView(url?)Track a page view (auto-captures URL, path, title)
setUserId(userId)Set current user ID
clearUserId()Clear user ID
setUserProperties(props)Set user-level properties
getWebSessionId()Get the current session ID
getInstallUuid()Get the persistent device UUID
decorateUrl(url)Add _reflect_xd param for cross-domain tracking
setEnabled(enabled)Enable/disable tracking
trackRevenue(params)Track a revenue event (amount, currency, product)
setGlobalProperty(key, val)Set a property merged into every event
unsetGlobalProperty(key)Remove a global property
clearGlobalProperties()Remove all global properties
setAudience(...tags)Tag the install for audience segmentation
deleteUserData()GDPR — delete all user data and cookies
flush()Force-flush queued events
destroy()Clean up timers, flush remaining events

Usage

// Track events
ReflectWeb.trackEvent('cta_clicked', { button: 'hero_install' });

// Track page views (or enable autoPageView in config)
ReflectWeb.trackPageView();

// User identity
ReflectWeb.setUserId('user_42');

// Cross-domain: decorate links to your other domains
const url = ReflectWeb.decorateUrl('https://app.example.com/onboard');
// → "https://app.example.com/onboard?_reflect_xd=sess_abc123"

What it collects

  • UTM parameters — auto-captured from URL on every page load
  • Referrerdocument.referrer (filters same-origin)
  • Browser fingerprint — canvas hash, WebGL renderer, timezone, language, screen size, color depth
  • Session — 30-minute sliding window, stored in first-party cookie
  • Install UUID — persistent device ID in first-party cookie

Standard events (v1.1.0+)

import { ReflectWeb } from '@reflect-sdk/web';

ReflectWeb.signUpWith('google');
ReflectWeb.addedToCart('pro_plan', 29.99, 'USD');
ReflectWeb.checkoutBegan({ items: 1 });
ReflectWeb.adShown('banner', { network: 'gam' });

Revenue, global properties & GDPR

ReflectWeb.trackRevenue({ amount: 29.99, currency: 'USD', productId: 'pro_plan' });

ReflectWeb.setGlobalProperty('ab_group', 'variant_b');
ReflectWeb.setAudience('premium', 'enterprise');

// GDPR — delete user data + clear cookies
const deleted = await ReflectWeb.deleteUserData();
v1.1.0 — Feature parity
Standard event helpers, global properties, audience tagging, revenue tracking, event validation, session tracking, error capture, GDPR deletion. First-party cookies only — no third-party tracking. Events are batched (max 100) and flushed every 10s or via navigator.sendBeacon on unload.