Docs

Sections

The sections plugin answers "how many visitors saw the pricing block, and when?".

Which elements are sections

  • Elements with data-x3-section="name" (any depth), plus
  • top-level <section> elements (nested <section>s are skipped unless marked).

At most 40 per page, in DOM order. Content added later (client rendering, lazy blocks) is picked up by a debounced MutationObserver.

Names

First match wins:

  1. data-x3-section (letters, digits, _ . : -, ≤ 40 characters),
  2. a stable element id (generated React ids are ignored),
  3. the slug of the first h1–h3 inside (umlauts transliterated, ≤ 40 characters),
  4. s<index>.

Duplicates get -2, -3, …. Personal pages always use s<index>. Give important sections an explicit name so renaming a headline does not split their history.

When a section counts as seen

A section is in view when at least 50 % of it is visible or it covers at least 50 % of the viewport (tall sections). Visibility is re-evaluated on intersection changes and on every scroll sample. Per pageview 3x stores the first time it became visible and the total visible time, counted only while the tab is visible.

Reports

GET …/analytics/sections (and the group tab in the dashboard): per page and section the reach (share of the page's pageviews), average visible seconds and median first-seen time, ordered by the page's layout. Reload, back/forward and resumed pageviews are excluded because the browser restores their scroll position.

Clicks inside a section carry its name (section prop), so click maps can be grouped by section.

In the strict consent mode, section reach needs consent.