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/[email protected]/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.0import { ReflectWeb } from '@reflect-sdk/web';
ReflectWeb.initialize({
appKey: 'app_live_...',
baseUrl: 'https://api.reflect.cloud',
});Configuration
| Field | Type | Default | Notes |
|---|---|---|---|
appKey | string | — | Required. Your app key from the admin panel. |
companyKey | string? | — | Optional for multi-tenant setups. |
baseUrl | string? | — | Server endpoint. |
debug | bool | false | Log events to console. |
cookieDomain | string? | auto | Domain to scope the first-party cookie. |
crossDomainDomains | string[]? | — | Domains for cross-domain tracking. |
autoPageView | bool | false | Auto-track page views on init. |
API reference
| Method | Description |
|---|---|
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
- Referrer —
document.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.