Heatmaps
Opsis heatmaps aggregate where visitors click, how far they scroll, and where their pointer lingers — across every session your SDK captures. Three overlay kinds: click maps, scroll maps, and attention maps (mouse movement).
Turn it on
Heatmaps are opt-in per project. Set captureHeatmapCoords: true in your SDK init — it augments the click/scroll events the SDK already emits and adds a throttled mousemove listener:
opsis.init("ops_pk_…", {
apiHost: "https://heyopsis.com",
captureHeatmapCoords: true, // default false
});That single flag enables all three heatmap kinds. It also implicitly activates the heatmap-augmented scroll emit regardless of captureScroll, since the scroll-reach data is needed for scroll maps.
What gets captured
Coordinates are normalized 0–1 fractions of the document plus a viewport snapshot (vw/vh) — never raw client coordinates, and never any text or selector beyond what autocapture already records. No PII is added.
- Clicks carry
hx/hy(position as a fraction of document width/height) +vw/vh. - Scroll events carry
reachY(how far the viewport top reached through the document, 0–1) +docH/vpH, so the dashboard renders a true scroll-reach map rather than just a depth bucket. - Mouse moves emit a
pointermoveevent with the same coordinate shape, throttled to ~5 samples/sec (200ms).
Coordinates are document-relative (they include the scroll offset), so they survive responsive layout drift and aggregate cleanly into a 32×32 grid server-side.
Privacy
Heatmap coordinates inherit every redaction guarantee the rest of the SDK already provides. Input values, passwords, payment fields, tokens, and auth headers are never captured. The coordinates themselves are position fractions — they cannot reveal what a user typed, only where they interacted. See the privacy docs for the full masking control table.
Viewing heatmaps
Aggregation is automatic: when a session finalizes, the worker bins its coordinates into the grid. Open Heatmaps in your project's tab strip to see one card per page route that has data, then pick a page to switch between the click / scroll / attention overlays.
Turning it off
Set captureHeatmapCoords: false (or omit it). The SDK reverts to the value-free timeline — zero behavior change for existing installs. Existing aggregated heatmap data remains until it ages out under your plan's retention window.