Problem
#217 (merged 2026-08-10, f3e1763) made gtag.js cookieless by setting Consent Mode v2
defaults with analytics_storage: 'denied' in _layouts/default.html. The tag still
loads and still fires, but the pings carry no client_id, and GA4 does not include
cookieless pings in standard reports. It only reconstructs users and sessions from them
through behavioural modelling, which is gated on volume — on the order of 1,000
events/day with consent denied, plus ~1,000 daily consent-granted users, sustained over
weeks. This site will never reach that threshold.
Net effect: since 10 Aug 2026 GA collects data that is never reported. Reports and
Realtime show nothing, and that will not change on its own.
Proposal
Replace GA4 with an analytics tool that is cookieless by design and therefore actually
reports without a consent banner. This keeps the #217 position fully intact: no cookies
→ no §25 TDDDG consent → no banner, no Impressum, no privacy policy page.
Candidates:
- Cloudflare Web Analytics — free, no cookies, single script tag, works on any host
(no Cloudflare proxying required, which matters since the site is on GitHub Pages).
- GoatCounter — free for non-commercial use, no cookies, open source, hosted or
self-hosted.
- Plausible (self-hosted) — no cookies, but needs infrastructure to run.
Acceptance criteria
- The
gtag.js snippet and the G-8LBQ2S5TJD property are removed from
_layouts/default.html.
- The replacement loads only when
jekyll.environment == "production" and stays behind
the existing !navigator.webdriver guard, so the e2e suites — including the daily run
against the live site — generate no pseudotraffic.
- No cookies and no browser storage are written for a visitor, so no consent banner is
needed.
playwright/tests/analytics.spec.js is updated to assert against the new endpoint
instead of the Google hosts.
- Real traffic appears in the new tool's dashboard after deploy.
Please read how to contribute
Problem
#217 (merged 2026-08-10, f3e1763) made gtag.js cookieless by setting Consent Mode v2
defaults with
analytics_storage: 'denied'in_layouts/default.html. The tag stillloads and still fires, but the pings carry no
client_id, and GA4 does not includecookieless pings in standard reports. It only reconstructs users and sessions from them
through behavioural modelling, which is gated on volume — on the order of 1,000
events/day with consent denied, plus ~1,000 daily consent-granted users, sustained over
weeks. This site will never reach that threshold.
Net effect: since 10 Aug 2026 GA collects data that is never reported. Reports and
Realtime show nothing, and that will not change on its own.
Proposal
Replace GA4 with an analytics tool that is cookieless by design and therefore actually
reports without a consent banner. This keeps the #217 position fully intact: no cookies
→ no §25 TDDDG consent → no banner, no Impressum, no privacy policy page.
Candidates:
(no Cloudflare proxying required, which matters since the site is on GitHub Pages).
self-hosted.
Acceptance criteria
gtag.jssnippet and theG-8LBQ2S5TJDproperty are removed from_layouts/default.html.jekyll.environment == "production"and stays behindthe existing
!navigator.webdriverguard, so the e2e suites — including the daily runagainst the live site — generate no pseudotraffic.
needed.
playwright/tests/analytics.spec.jsis updated to assert against the new endpointinstead of the Google hosts.
Please read how to contribute