Skip to content

Craft Analytics

My aim was to build an analytics plugin that is lightweight, privacy-focused, and feature-rich, with GDPR compliance at the heart of its design. Craft Analytics runs on your own server, understands your Craft content, and gives you useful reports without sending visitor data to a third-party platform.

It also understands your content: it can tell you how the Blog section is doing, not just that /blog/some-slug got 400 views.

What it does differently

  • No cookies, so no banner. Visitors are counted with a hash built from a salt that is thrown away and replaced every 24 hours. Nothing is stored on anyone's device.
  • No IP addresses. The address is used in memory to work out that hash and then dropped. It is never written to a table, a log or a cache key.
  • No per-visitor records. The database holds counts. If someone asks what you know about them, the answer is nothing.
  • No effect on page speed. Everything happens after the response has been sent. We measure a 0.46 ms difference in time-to-first-byte, which is within the noise.
  • Storage that does not track traffic. A page viewed a million times takes up the same one row as a page viewed twice.
  • Reports built on your content model. Traffic by section, entry type and author, because Craft already knows all of that.

Start here

Reports

Privacy

Configuration

For developers

When something's wrong

  • Troubleshooting - starting with empty reports, which is almost always the cron

Lite vs Pro

Lite is a usable analytics tool on its own, not a trial of Pro.

LitePro
Pageviews, visitors, sessions, bounce rate
Real-time
Pages, sources, devices
Content: sections, entry types, authors
Crawler reporting
CSV & JSON export
Entry sidebar & dashboard widgets
Campaigns & attribution
Geography
Events, outbound clicks, downloads, scroll
Goals & funnels
Formie & Commerce integrations
Consent-aware Tier 2
Segments & the extension API
Emailed summaries
GraphQL API

Upgrading is a licence change. Both editions use the same tables, so there is no migration to run and your existing data carries over.

A note on AI

In the spirit of being upfront: I used AI tooling while building this plugin, to think through approaches, to speed up some of the groundwork, and to help draft these docs. It was a tool in the workshop, not the builder. Every line of code was reviewed, tested and put in place by a developer who understood it, and nothing shipped that I could not explain and stand behind. The judgement calls and the final code are human.


A note on this project

AI tools helped with parts of the development process and with drafting this documentation. The code has been reviewed, tested, and implemented by developers, and the documentation has been checked against the plugins themselves.

Digital help you can trust.