Google Analytics is broken on a bunch of my sites thanks to the GA4 migration. Since I have to update everything anyways, I'm looking at the possibility of replacing Google Analytics with something I self-host that's more privacy-focused.
I've tried Plausible, Umami and Swetrix (the latter of which I like the most). They're all very lightweight and most are pretty efficient due to their use of a column-oriented database (Clickhouse) for storing the analytics data - makes way more sense than a row-oriented database like MySQL for this use case.
However, these systems are all cookie-less. This is usually fine, however one of my sites is commonly used in schools on their computers. Cookieless analytics works by tracking sessions based on IP address and user-agent, so in places like schools with one external IP and the same browser on every computer, it just looks like one user in the analytics. I'd like to know the actual number of users.
I'm looking for a similarly lightweight analytics system that does use cookies (first-party cookies only) to handle this particular use case. Does anyone know of one?
Thanks!
Edit: it doesn't have to actually be a cookie - just being able to explicitly specify a session ID instead of inferring one based on IP and user-agent would suffice.
I'm considering Matomo, but its tracking script is huge and can't easily be bundled with my site's code (whereas systems like Plausible have their tracking scripts available on npm). Looking for something a big lighter on the JS.
I don't think this would fully help? It'd still show that one user performed all the events.
I just need a way of explicitly specifying a user identifier instead of it being assumed based on IP and user agent. I don't think Plausible has a way to do that. I was chatting with the developer of Swetrix and they said it might be possible to add this as a feature.
Umami is one I'm considering. I don't think it allows a session ID to be provided though.
It also uses a row-based database (like MySQL or PostgreSQL) rather than a column-based database (like Clickhouse), which for analytics data is way less efficient and significantly slower once you have a lot of data. Pretty much all queries you'd want to run load a lot of data by column rather than row (eg charts of most common browsers, countries, etc over the past 6 months) so they benefit greatly from a columnar database.