---
title: "Behavior analytics: heatmaps, journeys and funnels"
description: "Switch on the tracker for a domain, then read click and scroll heatmaps, page-to-page journeys and app-event funnels in Backoffice."
canonical_url: "https://noxtica.com/docs/observability/behavior-analytics/"
markdown_url: "https://noxtica.com/docs/observability/behavior-analytics/index.md"
last_updated: 2026-10-27
published: 2026-10-27
section: "observability"
section_title: "Observability"
site: "Noxtica"
language: "en"
source: markdown
---

# Behavior analytics: heatmaps, journeys and funnels

Behavior analytics shows where visitors click, how far they scroll, which pages they move between and where they drop out of a path. A tenant administrator switches it on for each domain, and analysts read the results in Backoffice. It is aggregate analysis, not a verdict about any visitor.

## What it is

Availability depends on your plan, role and the modules enabled for your organisation. The tracker, heatmaps, journeys and funnels run when enabled for your organisation, and each one has its own switch that starts off.

The tracker is a lane of the extensions script. It runs inside the Sealed Runtime in the visitor's browser and sends batches to the ingest host. It records page views, clicks with the type of the element clicked, scroll dwell, in-page route changes for journeys, page-normalized click and scroll positions for heatmaps, and the app events you send. A tracker session covers one page load: a full page load starts a new session, while route changes inside a single-page app stay in the session. See [Install & Browser Runtime](https://noxtica.com/docs/browser-runtime/) for what the `analytics` category covers and [Privacy](https://noxtica.com/privacy/) for the public policy.

| View | Backoffice name | What it answers |
| --- | --- | --- |
| Tracker overview | Behavior Analytics | How much behavior data a domain sends and from where |
| Click, scroll, dwell, rage and dead-click maps | Heatmaps | Where visitors click and how far they scroll on a page |
| Page-to-page paths | Journeys | Which routes visitors take, and where paths break |
| Ordered app-event steps | Funnels | How many visitors complete each step of a flow |

A heatmap or journey appears for a domain when all of these hold:

1. The domain's **Tracker** switch is on.
2. **Browser interactions** is on. Heatmaps and journeys depend on it.
3. **Heatmaps** or **User journeys** is on. Both start off.
4. The visitor passes the privacy checks. In a consent-gated mode (`api` or `cookie`) the `analytics` category must be granted. A visitor who sends Do Not Track or Global Privacy Control is excluded when the domain policy is Honor.
5. The Sealed Runtime starts on the page, and the sample rate draws the visit.

## Prerequisites

- **Roles.** The Admin role switches the tracker and its features on or off. The Viewer role or higher reads Behavior Analytics, Heatmaps and Journeys. Funnel definitions need the Admin role.
- **Browser.** The core and extensions scripts load, the page allows `'wasm-unsafe-eval'` so the runtime can start, and consent is granted. See [Content Security Policy, hosts and relay](https://noxtica.com/docs/sdk/csp-and-relay/) and [Consent modes, GPC and Google Consent Mode](https://noxtica.com/docs/sdk/consent/).
- **Funnels.** Funnels work when enabled for your organisation. If they are off, the page says so and a Noxtica operator can switch them on for your tenant.
- **Funnel events.** Funnels are built from app events you send. See [Custom events, session tags and request tracing](https://noxtica.com/docs/observability/events-and-tracing/).

## Steps

### 1. Switch on the tracker for the domain

Backoffice → Administration → **Domains**. Switch on the domain's **Tracker** in the list, or open the domain → **Configuration** → **Tracker policy**.

In **Tracker policy**, switch on what you need:

| Switch | Hint in Backoffice | Needed for |
| --- | --- | --- |
| VM telemetry | Collects Sealed Runtime execution telemetry for advanced fingerprint signals | Not needed for the views on this page |
| Debug signals | Verbose debug signals in each submission. It raises payload size. | Diagnosis |
| Browser interactions | Mouse, scroll and keyboard interaction patterns | Clicks, scroll, heatmaps, journeys |
| Heatmaps | Page-normalized click and scroll buckets. Needs Browser interactions. Starts off. | Heatmaps |
| User journeys | Page-to-page transitions and per-session journeys. Needs Browser interactions. Starts off. | Journeys |
| App events | Custom events sent with `track` | Funnels, App events card |

### 2. Set the sample rate

In the same card, set **Sample rate**: the probability from 0.0 to 1.0 that a page view is submitted. 1.0 sends every view, 0.1 about 10%. The default is 1.0. Select **Save**.

The browser refreshes its policy about every 5 minutes, so a change can take a few minutes to reach visitors.

### 3. Read Behavior Analytics

Backoffice → Session Insights → **Behavior Analytics**. Choose a **Domain** and a time window. The page shows your own tenant's data.

- **Overview.** KPIs for Total events, the session count, Batches and VM init success, trends, a device split, top domains, countries, traffic sources and a card per feature such as **App events**. When the domain samples traffic, the page shows a sampling-corrected estimate beside the raw count.
- **Raw batches.** The received batches. Open one to see its events and filter them.
- **Security.** How Sealed Runtime security signals overlap, in a co-occurrence matrix with a minimum-volume floor. It shows no session linkage.
- **Usage guide.** The in-product checklist for enabling the tracker.
- **Live updates.** The page polls about every 5 seconds while it is visible and live updates are on.

### 4. Read Heatmaps

Backoffice → Session Insights → Behavior Analytics → **Heatmaps**.

1. Choose a **Page**, **Device class** (Desktop, Tablet, Mobile), **Map type** and **Window** (24h, 7d, 30d).
2. Read the map. Colour encodes density relative to the busiest bucket on that page.

| Map type | What it shows |
| --- | --- |
| Click | Where visitors click most |
| Scroll | The share of page views that reached each depth |
| Dwell time | How long each section stayed in view |
| Rage clicks | Spots with 3 or more rapid clicks in the same area in one visit |
| Dead clicks | Clicks that led nowhere, with no navigation in the same visit |

- **Heat and Area.** Two ways to draw the same buckets.
- **Compare.** Turn on **Compare** to place two slices side by side, by device or by window.
- **Fingerprint / device ID.** Filter to one device for click and scroll maps. Rage, dead and dwell maps are aggregates and cannot be rebuilt for one device.
- **Show page background.** Paints a masked view of the page, taken from a recorded session, behind the buckets. It reads one replay session, asks you to confirm your identity and is recorded in the audit log. It needs the replay-payload permission, and it shows nothing when no recording of that page exists. See [Session replay: setup, masking and playback](https://noxtica.com/docs/observability/session-replay/).

### 5. Read Journeys

Backoffice → Session Insights → Behavior Analytics → **Journeys**. Choose a domain, **Device class** and **Window**. Journeys follow route changes inside one tracker session, so they do not follow a visitor across full page loads.

- **Flow.** The **Navigation flow** draws page-to-page volumes. Thicker ribbons carry more traffic. A table lists From page, To page, Transitions and Anomaly.
- **Anomalies.** Suspicious transitions, most severe first, rated High, Medium or Low. For example, a network connection that changed mid-session.
- **Recent sessions.** Expand a session to see its steps and connection-change markers.
- **Funnel view.** Choose **Funnel**, add 2 or more pages in order (up to 20), and select **Build funnel**. Each step shows Reach and Drop-off. A step reached by fewer than 5 visitors is hidden as low volume, to protect individual privacy.

### 6. Define Funnels from app events

Backoffice → Session Insights → Behavior Analytics → **Funnels**.

1. Select **New funnel**.
2. Enter a **Name**.
3. Add **Ordered steps (appEvent names)**: 2 to 8 names, each one an app event the domain accepts. Pageview rules are not supported.
4. Add optional **Property filters** as key and value pairs.
5. Set **Window (minutes)**. It cannot exceed the effective retention shown on the page. A longer window is rejected, never silently shortened.
6. Select **Create funnel**, then complete the step-up verification.

Each card shows the conversion, how many entered, a bar or funnel drawing, the share of entry per step and the drop-off to the next step. Counts describe the scanned page of results, not a running total across pages. Drop-off can be hidden when a step has too little volume.

## Verify it works

1. In Behavior Analytics, the Overview shows non-zero Total events and a session count for the domain after a few minutes of traffic.
2. In Heatmaps, the **Click** map of a busy page shows warm buckets.
3. In Journeys, **Navigation flow** lists page-to-page transitions.
4. In Funnels, a funnel on events you have sent shows an entered count.

## Troubleshooting

| Symptom | Cause | Fix |
| --- | --- | --- |
| **No tracker data found** | The tracker is off, no feature is on, the Sealed Runtime is not enabled, the policy has not refreshed, or sampling is below 100%. | Work through the checklist on the page: **Tracker enabled**, at least one feature, **Sealed Runtime enabled**, wait about 5 minutes, check the sample rate. |
| **Heatmap collection is off** | **Tracker**, **Browser interactions** or **Heatmaps** is off for the domain. | Turn on all three in Domain → Configuration, then allow a few minutes of traffic. |
| **No heatmap rows for these filters** | Collection is on, but the window, device class or map type has no rows. | Try another window, device class or map type. |
| **Showing all domains** | The heatmap aggregates every domain in scope. | Pick a domain in the filter bar. |
| **No journey data yet** | **User journeys** is off, or the runtime has not reported navigation. | Turn it on and wait a few minutes. |
| **Funnels are not enabled** | The funnel feature is off for your tenant. | Ask your account team. |
| Funnel save is rejected with a retention message | The window is longer than the effective retention. | Shorten the window to the value the page shows. |
| A rage, dead or dwell map shows a notice instead of data | A fingerprint filter is set, and these maps are aggregates across visitors. | Clear the fingerprint filter. |
| **Hidden (low volume)** | Fewer than 5 visitors reached the step. | Widen the window or pick pages with more traffic. |
| Show page background says no recorded session exists | Replay recorded no session of that page for that device class in the window. | Session replay records visitors who granted replay consent. |

## Related

- [Observability overview: RUM, replay, APM and ingest](https://noxtica.com/docs/observability/overview/) — how these tools fit together.
- [Custom events, session tags and request tracing](https://noxtica.com/docs/observability/events-and-tracing/) — send the events your funnels use.
- [Session replay: setup, masking and playback](https://noxtica.com/docs/observability/session-replay/) — recordings behind the page background and Issues links.
- [Browser errors, console logs and source maps](https://noxtica.com/docs/observability/errors-and-source-maps/) — the Issues page also groups behavior signals.
- [Domains, site keys and the install card](https://noxtica.com/docs/backoffice/domains/) — where the domain settings live.
