Home Docs How we measure

How we measure

Every metric in Publistic is designed for content publishers. Here's exactly what each one means and how it's collected.

Pageviews
Counted once when a page loads. Each page load registers exactly one pageview. Refreshing the page counts as a new pageview. Bot traffic is tracked separately and excluded from your main analytics by default.
Unique visitors
Identified using a privacy-friendly fingerprint that combines anonymized browser and device attributes. No cookies are used. The fingerprint salt rotates monthly, so visitors cannot be tracked across months. This gives you an accurate daily and weekly count without compromising reader privacy.
Engaged time
The time a reader actively spends on a page. Measured using the Page Visibility API combined with scroll and click activity detection. If a reader switches tabs, the timer pauses. If they stop scrolling and clicking for an extended period, the timer pauses. This gives you real reading time, not just time-with-tab-open.
Scroll depth
The percentage of total page height that a reader scrolled through. Tracked as the maximum scroll position reached during the visit. Note: this includes all content below the article body (related posts, comments, footer), so a 70% scroll depth on a long page might mean the reader reached the end of the article itself.
Bounce rate
The percentage of visitors who left your site within 10 seconds AND scrolled less than 30% of the page. This is a stricter definition than traditional bounce rate, which just measures single-page visits. A reader who spends 3 minutes reading but doesn't click to another page is not a bounce in Publistic.
Recirculation
The percentage of readers who clicked through to another article on your site after reading the current one. This is one of the most important metrics for publishers: it tells you whether your content and internal linking keep readers on your site. Higher recirculation means your content ecosystem is working.
Core Web Vitals
Real user measurements of LCP (Largest Contentful Paint), INP (Interaction to Next Paint), and CLS (Cumulative Layout Shift). Collected from actual visitors using the PerformanceObserver API. Reported as p75 values — the same methodology Google uses for ranking decisions. These are real-world numbers from real devices, not synthetic lab scores from Lighthouse.

How data is collected

The Publistic tracker script fires events at key moments during a page visit:

  • Page load — records the pageview, referrer, UTM parameters, and device information
  • During reading — periodically reports scroll depth and engaged time using lightweight heartbeat events
  • Page exit — sends final engaged time, maximum scroll depth, and recirculation status
  • Web Vitals — LCP, INP, and CLS are collected as they become available during the page lifecycle

All events are sent as small JSON payloads to the ingest endpoint. No cookies are set, no local storage is used, and no personal data is transmitted.

📚
Article metadata (title, author, publish date, category) is automatically extracted from standard HTML meta tags, Open Graph tags, and JSON-LD structured data. No manual configuration is needed.