Overview
Analytics is organized into four areas in the dashboard:- Tables: Browse rows across tables (events, users, contact channels, and more) with sorting, search, and incremental loading
- Queries: Run and save reusable ClickHouse SQL queries
- Replays: Watch session replays and filter by user, team, duration, activity window, and click count
- Clickmaps: See which elements get clicks on your pages
How Analytics Works
Hexclave records analytics events and replay chunks, then exposes them through the Analytics app for read-only querying and investigation. User activity in your app flows into Hexclave event ingestion, which stores data in ClickHouse. This data powers the Tables view, the SQL query runner, and the Session replay UI. Analytics isn’t only client events. Hexclave also exposes product data from the rest of your project — users, contact channels, teams, permissions, email outbox, and more — in the same read-only ClickHouse dataset, so you can join product state with behavior in one place. See Queries & Tables for the full table list.What Gets Tracked
Hexclave collects both client-side and server-side analytics events:- Client-side events: browser interaction events like
$page-viewand$click - Server-side events: currently
$token-refreshand$sign-up-rule-trigger
Enabling the Analytics App
To use analytics in your project:- Open your Hexclave dashboard
- Go to Apps
- Open Analytics
- Click Enable
Quick Start
- Enable Analytics in your Hexclave dashboard (Apps -> Analytics)
- Initialize Hexclave on your frontend with
HexclaveClientApp/HexclaveProviderand a persistenttokenStore(e.g."cookie", or"nextjs-cookie"in Next.js) - Sign in with a real user session
- Open the app and navigate/click around
- Check Analytics -> Tables to confirm events are arriving
analytics.enabled or analytics.replays.enabled unless you want to opt out (pass analytics: { enabled: false } or analytics: { replays: { enabled: false } }).
After setup, Hexclave automatically captures client-side $page-view and $click events.
See Replays & Clickmaps to tune replay privacy or opt out.
Tables
The Tables screen is the fastest way to inspect recent analytics records.- Opens on
eventsby default; pick other tables from the sidebar - Built-in ordering and client-side search
- Relative/absolute timestamp display toggle
- Row detail dialog for inspecting full JSON payloads
Queries
The Queries screen is a ClickHouse SQL workspace for deeper analysis.- Run read-only SQL queries with a timeout budget
- Query the users and analytics tables
- Save reusable queries into folders
- Re-run saved queries with one click
- Edit and overwrite saved query definitions
Session Replays
The Replays screen helps you move from “an event happened” to “what the user actually saw.”- Filter sessions by user, team, duration, recency, and click count
- Play back multi-tab sessions
- Control playback speed
- Optionally skip inactive ranges
- Jump across click/page-view timeline markers
Replay recording in the SDK
Session replay recording is enabled by default once Analytics is on and your client app uses a persistent token store. You can tune privacy or opt out via theanalytics.replays options:
maskAllInputs defaults to true, so form fields are masked unless you explicitly disable it. For the full set of privacy controls, playback, and clickmaps, see Replays & Clickmaps.
Disabling Analytics Capture in the SDK
SDK-managed analytics capture is enabled by default. You can disable it by disabling the Analytics app in the config or dashboard. If you don’t want the SDK to collect any analytics data at all but would like to keep the Analytics app enabled, you can also passanalytics: { enabled: false } when creating your client app:
$page-view and $click events. If you’d rather keep analytics, enable the Analytics app in your dashboard (Apps -> Analytics) instead.
Best Practices
- Use Tables for quick incident triage: the Tables UI is the fastest way to inspect recent rows (events, users, and more) without writing SQL.
- Use Queries for repeatable analysis: save important SQL in folders, and scope queries with filters/
LIMITso they stay within result and timeout limits. - Use Replays for behavioral debugging: start from an event pattern, then inspect matching session replays to understand what users actually did.
- Use Clickmaps for UI friction and attention: overlay click counts on your live pages to see whether a flow takes unnecessary clicks, whether a control looks interactable, or how variants compare in an A/B test. Clicks are tied to DOM elements (not pixel coordinates), so a marker in the middle of a button does not mean the user clicked the middle of that button. See Replays & Clickmaps.
- Keep replay privacy defaults on: leave
maskAllInputsenabled unless you have a specific reason and a data-handling policy for unmasked inputs.