Last updated · 2026-08-31
04 · In practice
juuna draws click, scroll and attention maps from your own first-party capture: only normalised coordinates and dwell times leave the browser, they travel to your dedicated instance alone, and no third-party heatmap script ever touches your page.
I
The mechanism
Two tiny event kinds do all the work. A click is captured as a pair of fractions, where on the page’s full width and height it landed; no element contents, no text, no DOM. A pageview’s scrolling is summarised once, as the deepest point reached plus how long the visitor dwelt in each tenth of the page.
The dashboard turns those into three readings: click density, scroll depth, and attention, the bands of the page that actually held people. When a session recording of the page exists, the click field is drawn over a reconstruction of the real page; without one, over a positional grid.
Autocaptured events are bookkept apart from your product events, so switching the maps on never inflates a pageview or event count.
II
The reading
Layout answers that tables cannot give: whether anyone reaches the pricing table, which of two buttons draws the clicks, whether the paragraph you care about sits below the line where attention dies. Read them beside funnels; the funnel says where people leave, the maps often say why.
They are aggregate instruments, and honest ones. A click map cannot tell you what one confused visitor wanted; that is session replay’s job, one view over. And attention here means presence, time with a band of the page in view, not eye tracking.
III
The weight
Capture lives in a small extras file, 1.9 KB gzipped, which the 1.0 KB tag fetches from your own instance only when click or scroll tracking is switched on. There is no heatmap vendor, no third-party script and no extra party to disclose: it is the same SDK, the same pipeline and the same Postgres as the rest of your analytics.
IV
The ledger
§
Asked and answered
Keep reading
Session replay · Web Vitals · Replace your analytics stack · juuna vs Hotjar · The integration docs · Pricing
Flat plans, everything included; every paid plan is a dedicated instance of your own.