Technical
Client-side tracking
Also called browser tracking.
Client-side tracking is collecting events with JavaScript running in the visitor's browser, which then sends them to a collector. The page does the observing, so it can see clicks, scroll, and viewport size that a server never could.
How it is measured
Open the network panel and find the request the script makes, a POST or an image GET to the collector, on load and on each tracked action. It carries the URL, referrer, screen size, and event name, plus any id the tool uses.
The count is only what the browser managed to send. Ad blockers, disabled JavaScript, a tab closed before the script ran, and consent banners all subtract. Compare the collector's count with access-log requests for the same day to see the gap.
Worked example
A recipe blog on WordPress has 18,400 requests for article HTML in its access log on Saturday. The browser script reports 13,900 pageviews. The 4,500 gap is crawlers (about 1,900 by user-agent), prefetches, and visitors with the script blocked.
After the script is served from the site's own domain at `/s/a.js` instead of a vendor host, the count rises to 14,800. Blocklists had been catching the third-party name, not the code.
How it differs
Client-side tracking sends from the browser. Server-side tracking sends from your own server, which can add facts the browser lacks, such as order status, but sees nothing about scroll or clicks unless the page tells it. The server path leaves out client-only signals; the client path leaves out anyone who blocks the script.
Common errors
Reading the count as total traffic. Loading the script late so quick exits are never seen. Ignoring in-app navigation. Putting personal data in event properties. Assuming the script is never blocked and never measuring by how much.
In practice
Serve the script from your own domain, load it early with `defer`, and test once with a blocker on and once off. Compare with access logs monthly. Tarsier's cookieless script is a client-side tracker of this kind: it posts a small event from the page and stores no cookie.