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:
| Field | Description |
|---|---|
session_id | Unique session identifier |
user_id | Associated user (if set) |
started_at | Session start time |
duration_ms | Session duration |
view_count | Pages/views visited |
action_count | User interactions |
error_count | Errors occurred |
device | Device information |
geo | Location (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 />;
}