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.