Skip to main content

Session Tracking

Track user sessions across your application.

How Sessions Work

A session represents a user's visit:

  • Starts when RUM initializes
  • Ends after 30 minutes of inactivity
  • Tracks views, actions, errors, and resources

User Identification

Associate sessions with users:

import { SimplrRUM } from '@simplr-ai/js/rum';

// After user logs in
SimplrRUM.setUser('user_123', {
email: 'user@example.com',
plan: 'pro',
company: 'Acme Inc'
});

// On logout
SimplrRUM.clearUser();

View Tracking

Track page/view changes:

// Vanilla JS
SimplrRUM.trackView('Dashboard', {
section: 'analytics'
});

// React
import { useTrackView } from '@simplr-ai/js/react';

function DashboardPage() {
useTrackView('Dashboard');
return <Dashboard />;
}

Custom Attributes

Add context to sessions:

// Global attributes (apply to all events)
SimplrRUM.addAttribute('theme', 'dark');
SimplrRUM.addAttribute('beta_user', true);

// Per-view attributes
SimplrRUM.trackView('Checkout', {
cart_value: 99.99,
item_count: 3
});

Session Data

Each session captures:

FieldDescription
session_idUnique session identifier
user_idAssociated user (if set)
started_atSession start time
duration_msSession duration
view_countPages/views visited
action_countUser interactions
error_countErrors occurred
deviceDevice information
geoLocation (from IP)

Session replay

Growth and Enterprise organizations can enable masked session replay. The browser records a compressed, masked payload of DOM mutations and interactions; Simplr validates and sanitizes it into private storage and makes a manifest available from the matching session detail page.

Replay adds 3 credits to an eligible session. A base session costs 1 credit, and network capture adds another 1, so a replay session costs 4 credits without network capture or 5 with it. Sessions shorter than one second are treated as bounce sessions and refunded.

Replay data follows the plan's RUM retention window. Portal playback uses authenticated manifest requests and short-lived signed chunk URLs. Sensitive input and text are masked before playback; do not use replay as a substitute for application-side data minimization.

React Hooks

import {
useRUM,
useTrackView,
useRUMUser,
useRUMAttributes
} from '@simplr-ai/js/react';

function MyApp() {
const rum = useRUM();
const { setUser, clearUser } = useRUMUser();
const { addAttribute } = useRUMAttributes();

useEffect(() => {
addAttribute('app_version', '2.1.0');
}, []);

return <App />;
}