By · Founder, Stacktree · Last updated
blog

Page analytics without recording the reader.

We wanted to answer one question for the people who share pages on Stacktree: how was this actually read? The tempting way to answer it is session replay. On a private client deliverable, that is exactly the wrong tool. Here is what we built instead, and why stopping at aggregate was the point, not a compromise.

Get started free

Can you measure how a page is read without session replay?

Yes. You do not need to record the viewer to learn how a page landed. Three aggregate numbers per session, engaged time, furthest scroll, and dwell by page depth, are enough to tell an owner whether the deliverable was read and what held attention. Stacktree collects exactly those, with no identity, no keystrokes, and no replay.

The share link is only half the job

An agent writes a report in twenty seconds. You send the link. Then you are guessing. Did the client open it? Did they read past the first screen? Did the pricing section land, or did they bounce at the intro? For a one-off artifact that guess is harmless. For a deliverable, it is the whole game, and a plain host leaves you with nothing but a URL and hope.

So we set out to close that gap. The moment you decide to measure how a page is read, though, you hit a fork, and most tools take the wrong branch.

Why not session replay

Session replay records the viewer: mouse movement, clicks, scrolling, sometimes keystrokes, stitched into a playback of their visit. It is powerful, and it is the standard answer to "how did they use this". It is also the wrong answer for a private client deliverable on a host that leads with private-by-default links.

Recording a client reading a confidential proposal is a privacy liability and a consent problem, and it quietly changes what the product is. A host that promises private links should not turn around and surveil the person on the other end of one. So we drew a hard line: measure the page, never the person.

What the beacon actually collects

The engagement beacon is a small, first-party script. Per viewing session it keeps three things, and nothing else:

  1. Engaged time. A one-second tick that only counts while the tab is visible and focused, so a page left open in a background tab does not inflate anything.
  2. Scroll depth. The furthest point the reader reached, as a percentage of the page.
  3. Dwell by page depth. A ten-bucket array. Each engaged second adds to the bucket for the part of the page currently in view. Summed across a session, this is the shape of where attention went.

That is the complete list. No URLs, no page text, no clicks, no mouse path, no identity, no cookie that follows anyone anywhere. The owner reads an aggregate across all sessions: a typical time on page, the share of readers who reached the end, and the heatmap. It is an extension of the "opened by ~N people" count every Stacktree page already carries, not a new tracking product bolted on.

Reading the heatmap

The attention heatmap is the part people find most useful. It is ten bars, top of the page to the bottom, each as long as the time readers spent there. A long bar near the top and short ones below means people skim and leave. A spike in the middle means a section is doing work. A flat tail means the closing call to action is never being seen, which is the kind of thing you want to know before you send the next one.

Because it is aggregate, one reader who leaves a tab open does not distort it, and no single visit can be reconstructed from it. You learn the pattern, not the person.

The loop, end to end

Engagement is one of three layers, and they compound. Viewers can react and leave a private note right on the page, with no account. An activity feed and an optional daily email tell you who opened, reacted, and commented while you were away. And the engagement view tells you how the page was read. Publish, share, and then, for the first time on most static hosts, actually find out how it landed, without recording a soul.

FAQ

Frequent questions

Does Stacktree record the viewer? +
No. There is no session replay, no keystroke capture, and no identity attached to a view. Engagement is aggregate: time on page, scroll depth, and dwell by page depth, summed across sessions.
What exactly does the beacon collect? +
Three numbers per session: engaged time (counted only while the tab is visible and focused), the furthest scroll depth reached, and a ten-bucket array of how long the reader spent at each tenth of the page. No URLs, no text, no clicks, no identity.
How is this different from DocSend? +
The question is the same, "how was my deliverable read", but the fit is different. DocSend is document-first and enterprise-priced; Stacktree is for the HTML your agents build, private by default, and the engagement view is aggregate rather than per-identified-viewer. You get the read signal without the tracking weight.
Which plan has it? +
Reactions, notes, the activity feed, and the daily digest are on every plan. Engagement analytics (time, scroll, heatmap) is a Pro feature. See pricing.
Keep reading

Related guides

Send the link. Then see how it landed.

Reactions and notifications are free. The first publish is anonymous and lives 24 hours.

Sign up free →