Privacy & analytics

How this site uses privacy-friendly analytics without analytics cookies or advertising tracking.

This page applies to kurtisjustin.co.uk and explains the site’s current analytics and browser-storage setup.

Analytics

When a link takes you between this site and KJ’s Games, Counter can count that arrival using a fixed site label in the link. The label is removed from the address bar after the page loads. Only the site label is recorded; no referring page, full URL or other query value is sent. This uses no analytics cookies, browser storage or visitor identifiers, and does not link your activity across the sites.

This website uses KJ’s Counter for aggregate counts of reviewed page names, navigation choices, case-study views, CV PDF openings and contact-form interactions. A successful contact response is counted separately from opening the form. Analytics never receives your name, email, subject, message or security token.

The site sends only these explicit facts. It does not send full URLs, query strings, fragments, referring pages or browser details, and does not create visitor identifiers, sessions, fingerprints or cross-site profiles.

Requests pass through a Cloudflare collector at collect.kurtisjustin.co.uk. Cloudflare processes connection information and supplies a coarse country code. The collector forwards the event and country to DigitalOcean Functions; analytics stored in Turso contains that country code, not an IP address or precise location. Unknown country is recorded as Unknown. This is approximate event-network geography, not a statement of residence or identity; VPNs and network routing can affect it. Network and hosting providers process connection information separately from the analytics database.

Raw events become eligible for compaction after 30 days. Daily scheduled compaction writes daily statistics and removes their raw source rows together. Failed runs or backlogs can leave raw events older than 30 days, so this is not a strict age ceiling. Daily statistics remain available after compaction. Backups and exports have separate operational retention and are not removed by a live-database compaction run.

I use these counts to understand and improve this website, not for advertising, personalisation or identifying individual visitors. Production analytics runs only on the canonical kurtisjustin.co.uk host. Staging and local previews do not send events to production; developers can explicitly opt in to a separate local collector.

Cookies and browser storage

Reading colours, extra reading space and the pause-animations choice can be saved in localStorage on this browser. These optional display preferences contain no identifier and are not sent to Counter or the contact service.

Counter does not create or read analytics cookies, localStorage or sessionStorage, and there is no analytics consent banner. There is no browser analytics identifier or saved analytics preference.

The site’s navigation preview can use sessionStorage to remember which route previews have already been shown in the current tab. A development-only preview diagnostic preference can also be read from localStorage. These functional values are not sent to Counter.

Cloudflare and the contact form’s Turnstile protection may use separate security mechanisms, including a hosting bot-protection cookie where applicable. Those are separate from analytics; this page does not claim that every hosting or security service is cookie-free.

Changes to this policy

This page may be updated as the site’s analytics, contact form or browser-storage behaviour changes.

Last updated: 9 October 2026.

Related page

For broader information about contact forms, analytics, browser storage and external links, read the privacy policy.