What is Client-side tracking?
Client-side tracking measures activity from JavaScript running in the visitor's browser. It is how nearly all web analytics works, because the browser is the only place that knows the screen size, the referrer, the scroll position and whether the page was actually visible. Its weakness is that it can be blocked, and frequently is.
What only the browser knows
A server sees a request. The browser sees the visit:
- Screen and viewport size, and therefore what the layout actually did.
- The referrer as the browser chose to report it.
- Whether the tab was visible, and for how long.
- Scroll depth, clicks, and interactions inside a single document.
- Route changes in an application that never loads a new document.
None of that is recoverable server-side without forwarding it from the client anyway — at which point the collection is client-side again, with an extra hop.
The blocking problem
Client-side tracking is blocked by ad blockers, by browser tracking protection, and by network-level filters. The share varies enormously by audience: general consumer traffic loses relatively little, and a developer-focused site can lose a great deal.
The bias matters more than the volume. The missing visitors are not a random sample — they are systematically the more technical and more privacy-conscious part of your audience, so every segment they belong to is understated.
Two things reduce the loss honestly: being small and unremarkable enough not to be worth a filter rule, and not behaving like a tracker. Neither is a trick, and neither gets you to 100%.
The realistic conclusion
No web analytics is complete. A tool that claims to be is measuring something else, or evading protections the visitor chose.
Read client-side numbers as a consistent index rather than a census: measured the same way over time, changes are reliable even though levels are understated. Where completeness genuinely matters — billing, revenue, contractual reporting — take it from a system of record like your payment provider rather than from a browser. That is precisely why sonex reads revenue from Stripe or Polar directly instead of inferring it from tracked events.