How far people read

For every page, the dashboard shows how far down people scrolled, how long the page was on their screen, and how many of them reached the bottom. Pick a page to see how far down each reader got, how people who left the site from that page compare with people who went on to another one, and which parts of the page they read. The clickstream shows the same figures beside each pageview.

What is measured

  • Scroll depth. The lowest point of the page that was on the reader's screen, as a share of the page's full height. 100% means they saw the bottom.
  • Time on page. How long the page was on screen. Only time with the tab visible counts: a tab left open in the background is not being read.
  • Sections. Which of the page's named sections were on screen, and for how long. A section counts as on screen when it fills at least half the window, or when at least half of it is in view.

Scroll depth and time on page work on every page with no changes. Sections need a name, below.

Naming sections

Add data-sm-section to the parts of a page you want to follow, with the name you want to see in the dashboard:

<section data-sm-section="Pricing">
  ...
</section>

Any element works, and the name can be anything up to 80 characters. Two elements with the same name count as one section. Sections are listed in the order they appear on the page, and up to 50 are followed per page. Single-page apps need nothing extra: sections rendered after a navigation are picked up on their own.

When a page reports

The browser sends one small report when the page is hidden or left: switching tab or app, locking the phone, closing the tab, or navigating inside a single-page app. A page hidden and shown again sends its running totals again, and the newer report replaces the older one. Reports are not charged to your monthly event allowance.

Some page views never report. A phone can close a page without giving it a chance to speak, and page views from before reading was measured have no report. StepMetrics counts those as unknown, never as unread: every figure is worked out from the page views that did report, and the dashboard shows how many that was next to the total.

API and MCP

GET /v1/sites/:siteId/reading lists pages with their figures, and ?path=/pricing returns one page in detail. It takes the same period and segment parameters as every other read. Agents ask the get_page_reading MCP tool the same question.