# See how your shared pages get read · Stacktree

Source: https://stacktr.ee/page-engagement

[Skip to content](#main) [Stacktree](/)[Developers](/developers)[Agents](/agents)[Docs](/docs)[Use cases](/use-cases)[Pricing](/pricing)[Blog](/blog)[Dashboard](https://app.stacktr.ee)[Sign in →](https://app.stacktr.ee)      By [ Steve Smith ](/about) · Founder, Stacktree  ·  Last updated August 13, 2026          feature

#  Share it, then see how it landed.

   A private link is only half the job. Stacktree tells you how the page was received: reactions and private notes from viewers, an activity feed and an optional daily digest, and engagement analytics that show the time on page, the scroll depth, and where readers actually lingered. Aggregate and private, never a recording.

  [ Get started free ](https://app.stacktr.ee/?join=1&from=seo_page_engagement)   install npx stacktree-install
Copy
     No card · 3 pages free · about a minute

    q3-board-update.stacktr.eeBoard updateQ3 in three charts🔥7❤️4👍3🎉1👀5💬How it’s readAggregate and private. No recording.

2m 14sTypical time82%Read to end34SessionsAttention by page depthtop → bottom0%10%20%30%40%50%60%70%80%90%Activity3 new- 🔥Reacted on Q3 board update2m
- Note: “the pricing slide nails it”1h
- Opened by 3 people3h

##  Can you see how someone read a shared page?

Yes. When your agent publishes an HTML page to Stacktree, the link does more than serve the file. Viewers can react and leave a private note on the page. You get an activity feed and an optional daily email of who opened, reacted, and commented. From Solo you see the numbers behind that: opens, how many people, and when it was last read. And on Studio, an engagement view shows the typical time on page, the scroll depth, the share of readers who reached the end, and an attention heatmap of where they lingered. All of it is aggregate and non-PII: no session replay, no keystrokes, no identity.

## The gap this closes

Most hosts hand you a link and stop. You send a report, a proposal, a dashboard, or a build, and then you are guessing. Did they open it? Did they read past the first screen? Did the pricing section land or get skipped? For a client deliverable, that guess is the whole game.

Stacktree closes the loop in three layers, from the lightest signal to the most detailed, and keeps every one of them on the right side of privacy.

## 1. Reactions and notes

Turn on the reaction bar for a site and viewers can react with an emoji or leave a short private note, right on the page, with no account. It is the low-friction signal that formal comments miss: a client will tap a heart on a deck they would never write a paragraph about. If several people are viewing at once, reactions animate in live, so a shared review feels shared. Reactions are opt-in per site, so a polished deliverable stays clean until you want them.

When a page needs a real review cycle rather than a pulse, the [client feedback loop](/client-feedback-loop) is the heavier sibling: element-anchored comments your agent reads over MCP, fixes at the same URL, and marks resolved.

          Private note &ldquo;the pricing slide nails it, ship it&rdquo;   🔥7❤️4👍3🎉1👀5💬

## 2. How it is read

This is the [DocSend](/docsend-alternative) question applied to agent-built HTML: not just whether the page was opened, but how it was consumed. On Studio, the engagement view shows:

  - Typical time on page. The median engaged time, counting only when the tab is visible and focused, so a page left open in a background tab does not inflate the number.
 - Scroll depth and read-to-end rate. How far readers get, and what share reach the bottom.
 - An attention heatmap. Dwell time by page depth, so you can see the section that held attention and the one that got skipped.

It is aggregate and non-PII by design. No recording, no keystroke capture, no identity attached. It extends the "opened by ~N people" count that Solo carries, rather than turning a private link into a tracking product.

   How it’s readAggregate and private. No recording.

2m 14sTypical time82%Read to end34SessionsAttention by page depthtop → bottom0%10%20%30%40%50%60%70%80%90%

## 3. Notifications that bring you back

Signal is only useful if you see it. The dashboard has an activity feed and a notification bell that show what happened to your pages while you were away, newest first: opened, reacted to, commented on. An optional daily email digest summarises the reactions, notes, and opens once a day. The digest is off by default, and every one carries a one-click unsubscribe. On Free you are told a page was opened; the counts arrive with Solo.

   Activity3 new- 🔥Reacted on Q3 board update2m
- Note: “the pricing slide nails it”1h
- Opened by 3 people3h

## Why not session replay

Session replay records the viewer. On a private client deliverable that is both a privacy liability and a bad fit for a host that leads with private-by-default links. Stacktree deliberately stops at aggregate: enough to tell the owner how the deliverable landed, without ever surveilling the reader. You get the answer to "did they read it, and what held their attention" without the recording.

##  How this compares

     Criterion A plain static host Stacktree     Get a private link  Yes   Yes   Know it was opened  Rarely   Yes, on every plan   How many people opened it  No   Yes, from Solo   Reactions + private notes  No   Yes, opt-in per site   Time on page + scroll depth  No   Yes, from Studio   Attention heatmap  No   Yes, from Studio   Activity feed + daily digest  No   Yes, on every plan   Records the viewer  n/a   No, aggregate and non-PII
FAQ

## Frequent questions

     Can I see how someone read a shared HTML page? +  Yes, from Solo upward. Every page, on every plan, lets viewers react and leave a private note, and tells you a page was opened. Solo at $19 a month turns that into numbers: opens, how many people, and when it was last read. Studio at $79 adds engagement analytics: typical time on page, scroll depth, the share of readers who reach the end, and an attention heatmap of where readers lingered. It is aggregate and non-PII, so you learn how the page landed without surveilling the reader.   Is this session replay or recording? +  No. There is no recording, no keystroke capture, and no identity tracking. Engagement is aggregate: time on page, scroll depth, and dwell by page depth, summed across sessions. It is an extension of the "opened by ~N people" count that comes with Solo, not a replay tool.   What do reactions and notes look like for a viewer? +  When you turn reactions on for a site, a small bar appears on the page. A viewer taps an emoji (fire, heart, thumbs-up, and so on) or leaves a short private note, with no account and no sign-in. If more than one person is looking at once, reactions animate in live. The tally and the notes show up in your dashboard.   How do I find out when a page gets opened or reacted to? +  The dashboard has an activity feed and a notification bell that surface what happened to your pages, newest first: opened, reacted to, commented on. You can also turn on a daily email digest that summarises the reactions, notes, and opens once a day. The digest is off by default with one-click unsubscribe. Free is told that a page was opened; the counts start on Solo.   Which plans include this? +  Reactions, notes, the activity feed, and the daily digest are on every plan, including Free. Free is told that a page was opened; the viewer numbers (opens, people, last opened) start on Solo at $19 a month. Engagement analytics (time on page, scroll depth, attention heatmap) starts on Studio at $79. See [pricing](/pricing).   Is any of this on by default? +  Open tracking is on, though Free only ever sees that a page was opened, not the count. Reactions are opt-in per site so a client-ready page stays clean until you want the bar. The email digest is opt-in. Engagement is aggregate and non-PII throughout.
Keep reading

## Related guides

   -  [ Analytics without recording anyone The design behind the engagement view, and why aggregate. ](/blog/engagement-without-recording)
-  [ Pricing Reactions on every plan, viewer numbers from Solo, engagement from Studio. ](/pricing)
-  [ Host AI-generated reports The deliverable this loop was built for. ](/host-ai-reports)
-  [ Share Claude artifacts Publish an artifact, then see how it lands. ](/share-claude-artifacts)

##  Send the link. Then find out how it landed.

 Reactions and notifications are on every plan. Viewer numbers start on Solo at $19 a month.

 [ Sign up free → ](https://app.stacktr.ee/?join=1&from=cta_page_engagement)   install npx stacktree-install
Copy
       Private hosting for the HTML your agents make.

[](https://betalist.com/startups/stacktree?utm_campaign=badge-stacktree&utm_medium=badge&utm_source=badge-featured)[Featured on](https://devhunt.org/tool/stacktree)[](https://buildlist.io)[Get started free](https://app.stacktr.ee/?join=1)

## Product

- [Page video](/page-video)
- [Ask this page](/ask-this-page)
- [Client spaces](/client-spaces)
- [Templates](/templates)
- [Example deliverables](/examples)
- [Custom domains](/custom-domains)
- [Client feedback](/client-feedback-loop)
- [One-time links](/one-time-view-links)
- [See how pages get read](/page-engagement)
- [Made with Stacktree](/made-with)
- [Security](/security)
- [Watch the demo](/demo)

## Agents

- [All integrations](/agents)
- [Claude Code](/claude-code)
- [OpenAI Codex](/codex)
- [Cursor](/cursor)
- [Claude.ai connector](/claude-ai-connector)
- [Claude Cowork](/what-is-claude-cowork)
- [Meta Muse](/muse)
- [MCP server](/mcp-publish-html)
- [Deploy from Claude Code](/deploy-html-from-claude-code)
- [Skills](/skills)
- [Slack app](/slack)
- [n8n node](/n8n)
- [Agent payments (x402)](/x402)

## Alternatives

- [All comparisons](/alternatives)
- [Head-to-head comparisons](/compare)
- [Tiiny Host](/tiiny-host-alternative)
- [GitHub Pages (private)](/github-pages-private-alternative)
- [Vercel](/vercel-alternative-for-agents)
- [ngrok](/ngrok-alternative-for-html)
- [Display.dev](/display-dev-alternative)
- [Static.app](/static-app-alternative)
- [OpenAI Codex Sites](/openai-codex-sites-alternative)
- [here.now](/here-now-alternative)
- [Shippage](/shippage-ai-alternative)
- [Best private hosting](/best-private-html-hosting)

## Use cases

- [All use cases](/use-cases)
- [Share with clients](/share-with-clients)
- [Send a file to a client](/share-html-file-with-client)
- [Share Claude artifacts](/share-claude-artifacts)
- [Share Jupyter notebooks](/share-jupyter-notebook-html)
- [Host Storybook privately](/host-storybook-privately)
- [Architecture diagrams](/share-architecture-diagrams)
- [AI-generated reports](/host-ai-reports)
- [Internal HTML tools](/internal-tool-hosting)
- [Private HTML hosting](/private-html-hosting)
- [Vibe-coded page hosting](/vibe-coding-hosting)
- [Leave a website builder](/website-builder-migration)

## Learn

- [Blog](/blog)
- [Glossary](/glossary)
- [FAQ](/faq)
- [Where AI output should live](/where-ai-output-lives)
- [Agent-loop hosting](/agent-loop-hosting)
- [Why agents need a publish primitive](/blog/why-agents-need-a-publish-primitive)
- [MCP servers explained](/blog/mcp-servers-explained-for-developers)
- [What changed in the 2026-07 MCP spec](/blog/mcp-2026-spec-changes)
- [Sites in Codex explained](/blog/sites-in-codex-explained)
- [Private-by-default hosting](/blog/private-by-default-html-hosting)
- [An agent paid us $1 (x402)](/blog/agent-paid-to-provision-itself)
- [When a loop hits a paywall](/blog/loop-engineering-paywall)
- [Pricing](/pricing)
- [Self-host (new)](/self-host)
- [Changelog](/changelog)
- [Docs](https://stacktr.ee/docs)
- [About](/about)
© 2026 Stacktree · stacktr.ee

[Privacy](/privacy)[Terms](/terms)[Security](/security)[Dashboard](https://app.stacktr.ee)[npm](https://www.npmjs.com/package/stacktree-mcp)[Sitemap](/sitemap.xml)[llms.txt](/llms.txt)[API spec](/openapi.json)

---
Full markdown summary of the Stacktree marketing surface: https://stacktr.ee/llms-full.txt
