Free plan

What EveryPage measures

Understand what EveryPage records about your document views, why view_count diverges from sessions, and what data persists without a paid plan.

EveryPage collects readership data the moment someone opens your document. You receive session-level telemetry, page-by-page engagement signals, and reader location information — all recorded in the same way regardless of your plan. What you can see and act on depends on your tier, but the underlying data is captured equally for everyone.

How data collection works

When a reader opens your document, EveryPage records a view session: their device type, browser, referrer source, and country. Country is resolved from the IP by a geolocation lookup that runs asynchronously after the session row is written, and it is best-effort — a lookup that fails or is skipped under load leaves the country blank. As they read, the viewer reports page-turn events with time spent on each page. When the reader closes the tab or navigates away, their session ends via a keepalive request — the viewer itself determines when to report the close, not a server-side timeout.

All of this happens regardless of your plan. A reader on a free account accumulates sessions, unique readers, page-level metrics, and geographic data in exactly the same way a Pro owner does. The moment you upgrade, that history is already there.

The reader identity model

Readers are never identified by IP address. Instead, EveryPage computes a stable pseudonymous identifier for each visitor using a salted HMAC of their IP, then discards the IP itself. This means you can track that Reader #7 returns multiple times to your document without ever storing or seeing their actual address. Because the identifier derives from the address alone, its granularity is the network, not the person: several people behind one office IP resolve to one reader, and one person moving between home, office and mobile resolves to several. For more detail on how this protects privacy, see encryption and privacy.

The critical distinction: view_count vs. sessions

This is the single most important point in readership measurement. view_count is not a readership count. It diverges from session data by design and tells you something very different.

view_count measures bytes actually served to readers. It has exactly one writer in the system: a single counter increment in the download handler, positioned after every gate check — custom domain, expiry, burn, password, email, the download-disabled refusal — and after the stored blob has been opened and decrypted, immediately before streaming starts. Nowhere else touches the column.

Two transformations run after that increment: the page-range trim and the watermark stamp. Both fail closed and send no bytes when they fail, so a request that dies in the transform still leaves the counter one higher.

What view_count over-counts

No deduplication exists. Every refresh, every SPA reload, every embed load, every time you preview your own document — each one increments the counter. If Reader #3 opens your document, scrolls through five pages, closes the tab, and immediately re-opens it, that counts as two views. The counter does not know which bytes were the "real" reads.

What view_count under-counts

A reader can appear in your sessions table but never increment view_count:

  • A reader starts a session (a row is written to view_sessions).
  • They pass the email gate, or no gate exists.
  • But then the document fetch fails — the blob is corrupted, the file is missing, or decryption fails.
  • Their session is recorded with full attribution (country, device, pages they claimed to view).
  • view_count stays unchanged because no bytes were served.

The same happens if a reader abandons after submitting the email gate but before the document loads: they appear in your session counts — and, where you use a lead-capture form, in your captured contacts — but they never appear in view_count.

The key consequence

A document can show real sessions, unique readers, countries visited, and captured leads — while view_count sits at zero. Never use view_count to answer "has this been read?" Use session data instead.

Reporting is tier-gated; capture is not

EveryPage records sessions and page events on every plan — free, basic, and pro. The gates that control what data you can see sit in the reporting layer, not the capture layer. A free-tier owner sees the summary cards, average time included. Upgrading to basic unlocks trends, the read-through funnel, per-page stats, the audience breakdowns, and the extra summary figures (median time, completion rate, re-read share). Pro adds reader identities (pseudonymous IDs to track individuals), live reader count, CSV export, captured contacts, and email-capture gating.

Importantly, this means upgrading an account reveals history you already accumulated while on the free tier. You were collecting sessions the whole time; you just could not see them. The moment you upgrade, they appear.

Gates do apply to capture

While capture is plan-ungated, it is not gate-ungated. Every telemetry endpoint runs the same viewing gate stack as the download handler: a reader who cannot open your document cannot write telemetry against it. A visitor without a valid password, one arriving on a custom domain that does not serve the document, or one holding an expired or burned link cannot fabricate analytics entries.

The session-start request is the one deliberate exception, and only for the email gate: it runs every other gate, then validates the submitted address (or lead-capture form) server-side. That request is what satisfies the email gate. A rejected submission writes nothing — no session row, no captured contact.

Plan tiers at a glance

See plans and limits for the full breakdown and pricing. The analytics ladder is:

  • Free: Total views, unique visitors, average time per session, the count of distinct countries, and downloads.
  • Basic: Everything free, plus median time, completion rate, re-read share, views over time, the read-through funnel, per-page stats, and the audience breakdowns (source, referrer, browser, device, location, viewer mode, reading hours).
  • Pro: Everything basic, plus reader identities (to track returning visitors), live active-reader counts, per-variant readership, captured contacts, CSV export of all sessions, and email-capture gating.