Turf Stats
·
Self-hosted, cookieless analytics: page views, visitors, clicks, searches, 404s and bots - all stored in your own database, no external services.
Turf is a self-hosted, cookieless analytics plugin. No Google Analytics, no Jetpack, no external network calls – everything is measured and stored in your own WordPress database.
Why Turf
- Cookieless. Visitor deduplication uses a one-way hash of IP + user-agent, never a cookie and never the raw IP address.
- Self-hosted. All data lives in your own database; nothing is sent to any third party.
- Zero configuration. Every public post type and taxonomy is tracked automatically, including ones you add later.
What it tracks
- Page views (deduplicated and raw), unique visitors, views per visitor, and average visit duration
- Device, browser, operating system, language, and country (via Cloudflare’s header when available – no GeoIP lookups)
- Referrers / traffic sources, UTM campaign parameters, and automatic outbound link tracking (full destination URL + the page clicked from)
- New vs. returning visitors, scroll depth, and reading time
- On-site search terms, including zero-result searches
- Visitor routes (page-to-page transitions), landing pages, and a bounce-rate proxy – all reconstructed from sessions
- Cache offload: how much traffic is served by a page cache (SiteGround, Cloudflare, …) instead of hitting WordPress
- 404 hits, comments per period, editorial content activity, per-author stats
- Bots & LLM crawlers (Googlebot, GPTBot, ClaudeBot, …) – tracked server-side and kept separate from human visitor numbers
- WooCommerce funnel (views, add to cart, checkout) and form submissions (Contact Form 7, Gravity Forms) when those plugins are active
The admin pages use native WordPress postboxes: collapsible, draggable, hideable via Screen Options, and styled by your admin color scheme. The interface is English and ships with a full Dutch (nl_NL) translation.
