Clientlog

Cookieless analytics with rules as code

Structured events, session analytics, and conversion rules that live in your repository. No cookies, no fingerprinting.

Quickstart Pricing

Website analytics without cookies

Clientlog is cookieless analytics for developers. A single script records page views, clicks, scroll depth and time on page as structured events, groups them into sessions, and classifies each session against rules you write. It sets no cookies, builds no profile across sites, and stores no IP address with your data. Your data is stored in the UK.

It tells you what happened on your own site, measured on your own terms.

Facebook pixel conversion and a Google Analytics goal cannot be reconciled. They count different things, at different moments, under different definitions. Clientlog measures both from first principles and treats product friction as a runtime bug.

Read how Clientlog supports GDPR compliant analytics, or how it compares with Google Analytics.

How it works

1. One script tag

Add the client to your site. Page views, clicks, scroll depth and navigation are captured without further work. Custom events are a single function call. See the client reference.

2. Events become sessions

Every event is enriched with browser, device and coarse location, then aggregated into a session carrying the full action sequence with timings. See events.

3. Rules classify sessions

Your rules are JSONLogic expressions in a YAML file. A matched rule writes a tag. Tags become segments you can count, filter and be notified about.

4. Digests and data

A weekly email with referrers, landing pages, tag distribution and journey structure. The same data through the API, the CLI, or the dashboard. See reading the digest.

Rules as code

Your session classification lives in a YAML file in your repository, reviewed like any other change. plan shows drift against what is deployed. apply reconciles it.

- rule_id: pricing_visitor
  tag: pricing
  notification_target: email
  requires_events: true
  description: Visited pricing, the clearest purchase intent signal
  logic:
    some:
      - var: events
      - "==": [{var: payload.path}, "/pricing.html"]

Analytics as code: your definition of a conversion has a history, a reviewer and a test, in the same repository as the pages it measures. Read analytics rules as code or the rules documentation.

Privacy

Clientlog sets no cookies, performs no fingerprinting, and builds no profile across sites. Session identifiers are generated in the browser and scoped to one site. IP addresses derive a coarse location and are then discarded.

Your data reaches an advertising platform only when you configure a server side conversion relay and nominate the destination. It is off by default.

Event payloads are whatever your site sends. Personal data in an event payload is your responsibility, and the documentation recommends against it.

Privacy and data handling · Analytics without a cookie banner

Flow overview

Clientlog data flow Client events are ingested, enriched with browser and location, aggregated into sessions, classified by rules, and exported as digests and API data. Clientlog API

Client
web
iOS/Android
backend

Ingest
collect raw events

Enrich
enrich event data with:
user agent
ip geo info

Aggregate
aggregate event and session data
on defined schedules

Export
trigger callbacks based on aggregations
extract session or event summaries

POST /event

GET /event

GET /event/enriched

POST /config

GET /aggregate/sessions

GET /aggregate/events

Events are ingested, enriched, aggregated into sessions, classified by rules, and exported.

Early access

Projects are registered by hand while the product is shaped with its first users. Start with the quickstart to see what installation involves.

Request early access