DEV Community

Discussion on: Analytics with vanilla JS: page views

byrro profile image
Renato Byrro • Edited on

I would suggest generating a unique hash for each visitor. Maybe an MD5 hash of multiple values concatenated:

  • User-agent
  • IP address
  • Timestamp
  • Random 9-digit number (extra careful avoiding hash collision)

Store this hash as a cookie in the browser. When the person comes back later, your script can identify it's the same person.

Store the user hash with every interaction (even pageviews). Later, when you're analyzing an action (e.g. "user subscribed to the service"), you can get the user-hash and search every other interaction associated with it in the past.


About tracking the source of traffic, it's not going to be easy anymore. All major browsers are adopting strict "no-referrer" policies now. What this means is:

  1. The person is reading an article in dev.to/author/article-title-here-123
  2. There's a link to your site (zigabrencic.com/), in which the reader clicks
  3. When requesting your site content, the browser will send only "dev.to/" in the Referrer Header, not the entire URL

They're making this switch for privacy and security reasons. It's a good thing, but it will make it a lot more difficult to track sources with precision. Unless we use UTM parameters in the URL, there's no way to know from which page the visitor came.

Thread Thread
zigabrencic profile image
Ziga Brencic Author • Edited on

Hash thats clever 🙂 I was thinking about just some unique user id. Thanks.
————

On URL. Privacy reasons I get and I know that UTMs are more reliable but what are the security issues of referrals?

Thread Thread
byrro profile image
Renato Byrro

It's possible for the origin to add user sensitive data in the URL. It's bad practice, but I'd say there's 99.99999% chance that at least a handful of sites is doing that right now.

In that event, the target site can access user data without its consent from the referrer header.

Thread Thread
zigabrencic profile image
Ziga Brencic Author

Alright yeah that’s problematic. Never thought of that 🤷‍♂️

Thread Thread
byrro profile image
Renato Byrro

Me neither!.. 😊

I was just pissed at Google Analytics recently and thinking about building something better and started researching, your article caught my attention 😄

Thread Thread
zigabrencic profile image
Ziga Brencic Author

Haha nice :D

My disagreement with Google Analytics got on this path to yeah. What encouraged me to start building my own analytics were those guys: usefathom.com

Before that I never thought that one could build reliable custom analytics. But apparently two developers did.