Cookieless (coming soon) is robust, privacy-focused and (you guessed it) completely cookie-free!
As privacy regulations tighten, the need for an alternative to traditional analytics solutions (i.e. Google Analytics) has grown ever-more apparent. Nowadays, webmasters have to put up these obnoxious “Please accept cookie banners”.
But I hate those things—and I love privacy. So that’s what Cookieless is being built to solve!
So far, there are two major cookie-free analytics platforms that already exist. These include Fathom and Plausible, the latter of which is open source.
But what makes Cookieless special is its use of Postgres under the hood; by keeping it SQL-compatible, we broaden the queries we’re able to write and aggregations we’re able to show.
So stay tuned for more information–it’s going to be awesome, I promise.
The Architecture
The Data Journey
At its heart Cookieless uses a special mechanism to track activity anonymously.
A salt, which resets daily, is assigned to each site.
When a user visits the site, we record their IP address and user agent string, which is combined with the rotating salt to create a visitor hash. Since the salt is reset every 24 hours, there are no persistent identifiers—one can only see the activity of a given user over a short period of time, in line with GPDR regulations.
That’s it! With this anonymized info, we can get all the statistics we need for your site—no cookies needed.
The Database
Cookieless is built off Postgres. Custom events and pageviews are stored in a single events
table, allowing one to perform aggregations involving both easily.
Within events
there are a number of columns storing default fields (e.g. country, device, browser) as well as a JSONB field for storing custom properties.
Core Features
Aggregations
Events and pageviews can be counted by properties. That means we can see statistics (see metrics) for each path, hostname, browser, operating system, device, and more.
You can also filter these aggregations in a very detailed way—Cookieless offers nested filters. For instance, one could retrieve pageview counts for each referrer where
(path = "/" OR path = "/example") AND (browser = "Safari" OR device = "Tablet".)
Metrics
Currently, I’ve implemented six metrics:
- Completions
- Visitors
- Average Time Spent on Page
- Average Session Duration
- Bounce Rate
- Views Per Visit
The last four are only for pageviews, but the first two apply to both custom events and pageviews (they are stored in the same events
table).
Updates
- August 2024: Setting up brand assets (the logo), and a monorepo.
- September 2024 Created a tracking script, started on making the vast API…
- October 2024: Finished the underlying analytics engine, now working on the UI.