Madeactual
Internal platform build note

First-party journey analytics without tracking the operator.

A practical analytics system should answer where a visit originated and what happened next—without polluting the evidence with staff traffic.

The operational problem

A list of active login sessions cannot establish website interest. It says nothing about anonymous visitors, acquisition sources, entry pages, navigation paths, or whether traffic came from the operator, a bot, or a prospective customer.

The constraints

  • Keep collection first-party rather than loading an external tracker.
  • Exclude authenticated administrator activity from primary metrics.
  • Preserve referral URLs and campaign parameters for acquisition analysis.
  • Show chronological paths instead of only aggregate page counts.
  • Separate detected bots and synthetic previews.
  • Provide useful geography without retaining raw IP addresses.

The implemented system

The browser records a pseudonymous visitor and session identifier, page path, title, referrer, campaign fields, language, and screen width. The server adds Cloudflare country data, classifies device and actor type, and hashes identifiers before storage. Administrators receive an exclusion cookie; their events are excluded even when they visit the public site.

The reporting view includes trends, pages per session, bounce rate, duration, conversions, acquisition origin, a world heat map, and filters that open the exact chronological path of each session.

Verification

Automated tests cover real journeys, administrator exclusion, bot and preview separation, role protection, origin attribution, and reporting. Production releases run the complete application suite before deployment.

The reusable lesson

Analytics becomes operationally trustworthy only when its exclusions are as deliberate as its collection. A larger number is not a better metric when the number includes the people building and testing the site.