# Lens mode

Walk a visitor's path over your own live site, with everyone's hotspots underneath, drawn from the events you already have. Nothing is recorded.

Lens mode opens your own site in a new tab and draws over it: one visitor's path played page by page (**Walk this visit**), and the last 30 days of everyone on each page (**hotspots**). It uses the events ProductLense already stores, so nothing new is recorded, nothing is stored, and your visitors never load anything extra.

## Walk a visit

Open a visitor's journey, a customer, or any row of the Events page, and click **Walk this visit**. Your site opens on the page the visitor landed on, and a green dot plays their visit:

- It scrolls to the depth they reached (with `data-scroll="true"` on the script tag) and waits as long as they stayed, at most a few seconds per page, or skips the waits at 4×.
- What they clicked flashes: goals, [outbound links and downloads](/docs/track/outbound-links-and-downloads), and with [clicks](/docs/track/clicks) on, any button or link.
- When they moved to another page, the overlay navigates there and continues.
- Signup, identify, checkout and payments appear as markers with the amount.

A rail beside the page lists the visit as chapters (*Pricing · 48s · scrolled 75%*, *Paid $49 · Growth*), with play, pause, speed, a scrubber and a toggle for each layer. Close ends Lens mode; the token it used expires on its own after 10 minutes.

Walks need the journeys feature (Starter and up).

## Storyboard: the visit played in the dashboard

A walk plays on your live site, so it can only show pages you can open yourself. A visit through someone's own account pages (their dashboard, their settings) would hit a page that is not theirs, or a 404. For those, and for a quick look without leaving ProductLense, press **▶ Play** on any visit of a person's page, or **Play storyboard** on a visitor's page.

The storyboard plays the same walk inside the dashboard: one page at a time as a wireframe stage, the tint and fold line showing how far they scrolled, the dot moving down the page, stamps landing where each click, event, sign-in or payment happened, and gauges counting scroll and time on the page. Beside it the chapters, below it every page of the visit as a frame, and a transport with play, pause, 1× or 4× and a scrubber. A page nobody else saw in the last 30 days is marked *only them*: their own page, played from events.

It is a drawing from events, not a screenshot: it never shows the page's pixels, what they typed, or where the mouse went. Nothing is recorded and nothing new is stored; opening a storyboard is one read of the walk.

## Hotspots

Under the walk, and on their own through **Page lens** on the Pages card, the page shows everyone who saw it in the last 30 days:

| Layer | What it shows | Needs |
|---|---|---|
| Scroll bands | Heat fading down the page with the share of visitors who reached each quarter, and a glowing line where half of them stopped | `data-scroll="true"` |
| Click badges | Clicks and the share of visitors who clicked, on each goal, link and button, with a bar against the busiest element and a pulse on the hottest | goals, outbound links; `data-clicks="true"` for other buttons |
| Exit line | The share of visits that ended on this page, drawn where they stopped | nothing |
| Money line | The share of this page's visitors who later paid, and their revenue | a billing connection |

The page lens works on every plan.

## How it works, and what it cannot show

The tracker on your site notices a one-time token in the address (`?pl_walk=…`) that only the dashboard mints for a signed-in member, keeps it for the tab, and loads a small overlay, `o.js`, from the same origin as the script. The overlay fetches the walk from ProductLense and draws it. Visitors never carry a token, so they never load the overlay. The token names one site and one visitor, expires in 10 minutes, and the walk can be read only from your own site's origin.

Because nothing is recorded, Lens mode cannot show mouse movement, typing, or clicks on things that are not goals, links or (with `data-clicks`) buttons. Elements that no longer exist on the page are listed in the rail but not drawn. Pages behind a login open only when you are signed in to your own app in that browser.

## Get the most out of it

Add both attributes to the script tag:

```html
<script defer data-site="SITE_ID" data-scroll="true" data-clicks="true" src="https://api.productlense.app/a.js"></script>
```

Define [goals](/docs/dashboard/goals-and-funnels) for the clicks that matter to revenue; they show by name in the walk and the badges. Ask can open a walk for you: *walk the last visit that paid*.
