# Introduction

Cabin is a privacy-first, carbon conscious web analytics solution. It's lightweight and compliant with all known privacy laws. Cabin is the best cookieless alternative to Google Analytics.


No cookies and no consent banners
Faster, lighter and greener too
No data sharing and no ad networks
Compliant with all privacy laws

# Protecting privacy

We built Cabin from the ground up using Privacy by Design principles. This means we never store a unique identifier for any of your visitors. Better still, we don't store data in a relational way, meaning it's impossible to identify a user based on their location, browser, os, language etc.

We don't sell, or pass on any data to anyone. We never will. We don't share data to ad networks. Our approach means your visitors' data is useless to an ad network.


# Reducing energy

Being planet friendly is one of our core principles. We're always looking for ways to save energy; from our tiny script (24× smaller than Google Analytics - View on Github (opens new window)) to our utilisation of serverless technology.

The small servers we do run (currently 4), use our own custom software designed to be extremely CPU and memory friendly, so that we can leverage low-resource, low-energy servers while maintining a high traffic throughput.


# Data collected

The cabin script sends very few data points, but the server infers many more from the user-agent and other headers.

# Sent by script

{
    r: 'google.com'              // referrer
    w: 2560,                     // screen width
    p: 'https://normally.com/',  // path
    t: 255,                      // load time (ms)
    u: 0,                        // # of visits to the domain
    up: 0 ,                      // # of visits to the page
}

# Inferred from the request

Data point Example
Timestamp 1627589208201
Source social
Country GB
Browser chrome
Device mobile
OS iOS
Language en
Bounce false
utm_source instagram
utm_campaign summer_sale
utm_medium paid_social

# Unique visitors

How does Cabin determine a unique visitor if it doesn't store a unique identifer to identify them?

At Cabin, we developed our own method of detecting unique visitors that doesn’t rely on unique identifiers, IP addresses or fingerprints. In our tests, we found it to be the most reliable, secure and accurate method available. Here’s a brief explanation:

Each time a visitor pings Cabin, it is cached in their browser just like any other request, such as a gif, a font or a CSS file. Cabin sets a last-modified header in the response to be the start of the current day. The next time the same request is made, their browser automatically sends the header back to Cabin to check if the request is still valid. Cabin modifies the last-modified header to 1 second later than the previous value. For each request, Cabin can then caclulate the distance, in seconds, that last-modified is from the start of the day to know how many visits the user has made. If the request had no header, it was a unique visit.

We use the first request to mark a unique visit and the rest as non-unique. But we also use the second request to indicate that the user didn’t bounce.

# Visitor countries

Every request a visitor's browser makes, anywere on the web, sends an IP address. We convert this address, in transit (within server runtime memory) to an ISO country code (opens new window) with no further granularity. We only store the code - the IP address is discarded and never logged within Cabin.

Last Updated: 11/7/2022, 1:19:24 PM