Cabin Analytics Documentation
Cabin is a privacy-first, carbon-conscious web analytics service. It's lightweight, compliant with all privacy laws, and the ideal cookieless alternative to Google Analytics.
- No cookies, so no consent banner
- No data sharing and no ad networks
- A 1.7 KB script that won't slow your site down
- Compliant with GDPR, CCPA, and more
Cabin comes in three plans, Free, Plus and Scale, and every one of them includes the full dashboard, AI/MCP access, public dashboards and data export. See plans and limits for what the paid plans add.
This documentation is available in English, Français and Deutsch.
Privacy by Design
Cabin is built from the ground up using Privacy by Design principles. We never store unique identifiers for your visitors, and our non-relational data structure makes it impossible to identify individuals based on their location, browser, OS, or language.
We don't sell or share any data with third parties or ad networks. Your visitors' data remains private and useless to advertising platforms.
Environmental Responsibility
Cabin's tracking script is 1.7 KB compressed, a fraction of the size of Google Analytics' loader, and that loader then pulls in far more JavaScript behind it. Keeping Cabin that small is a constraint we defend, not a happy accident: you can check the number yourself in your browser's network tab.
Beyond the script, the biggest lever on a hosted service's emissions is where its servers sit, because that decides which electricity grid they draw from. Cabin's ingest servers, the ones your visitors' browsers talk to, are placed with that in mind:
- Clean grids first. Two of the three regions Cabin runs in draw from grids that are over 95% carbon-free. The third serves Asia-Pacific, where no clean grid exists, and is the least carbon-intensive option that still keeps latency low there.
- Close to visitors. Each region takes the traffic nearest to it, so a beacon travels a short distance and the page view is recorded quickly, which matters on a fast bounce.
- Small, efficient machines. Ingest is light work, so each region runs on a small server rather than a large one sitting mostly idle. That's cheaper and lower in energy.
The same grid-intensity methodology sits behind your site's carbon estimates, which use The Green Web Foundation's CO2.js.
Data Collection
The Cabin script sends minimal data points, with additional information inferred from the user-agent and request headers.
Sent by the script
| Data point | When |
|---|---|
| Page URL | Every page view |
| Referrer | First page view of a visit only |
| Screen width | Every page view |
| Page load time | Every page view |
| Visit counts | Every page view |
| Time on page | When the visitor leaves the page |
| Scroll depth | When the visitor leaves the page |
| Event name | Only when your site triggers an event |
The referrer's query string is stripped before it leaves the browser, so nothing sensitive in a referring URL reaches us.
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 | |
| utm_campaign | summer_sale |
| utm_medium | paid_social |
Unique Visitors Without Cookies
How does Cabin determine unique visitors without storing identifiers?
Cabin counts unique visitors without identifiers, IP addresses or fingerprinting, using a property of HTTP caching that browsers already have:
When a visitor interacts with Cabin, the request is cached in their browser like any standard web resource. We set a last-modified header in the response to the start of the current day. On subsequent requests, the browser automatically sends this header back to check if the request is still valid. Cabin then increments the last-modified time by one second with each visit.
By calculating the difference between the last-modified time and the day's start, we can determine the number of visits without storing any personal data. The first request indicates a unique visit, while subsequent requests help us track metrics like bounce rate.
You can read more about this on our blog:
How Cabin measures unique visitors without cookies.
Visitor Geolocation
Every web request includes an IP address. Cabin converts this address in transit (within server memory only) to an ISO country code with no further location detail. We store only the country code. The IP address is immediately discarded and never logged.
For where that happens and where your data is stored, see the privacy policy.
