WordPress plugin intelligence profile

MilkStats

Privacy-friendly, cookieless visitor statistics — no cookie banner needed, no external services.

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 7.1
Current version1.8.1
WordPress coverageTested up to WordPress 7.1
Minimum stackWP 5.8 · PHP 7.4
Directory statusactive
Last directory update11 Sept 20261mo ago
Active installationsNewAdoption metric — not a quality score
WordPress.org ratingNo WordPress.org ratings yet
Official packageDirect from WordPress.org

Repository metrics are context, not quality scores. Active installations measure adoption and can strongly reflect a plugin’s age and historical popularity. Ratings, recent updates and “Tested up to” metadata also do not guarantee modern code, error-free operation, security, feature completeness or suitability for a particular site. Why active installs don’t tell the whole story →

WP PlugIndex currently records MilkStats version 1.8.1 as active, updated 1mo ago and tested up to WordPress 7.1.

Overview

About this plugin

MilkStats keeps visitor statistics without collecting personal data.

All data stays local in your own WordPress database — nothing is shared with

external analytics services (no Google Analytics, no external scripts or

fonts).

A product by 5Names.

What is measured?

  • Page views — counted and aggregated per page, per day
  • Sessions — how many unique visitor sessions there were
  • Time on page — how long someone stayed on a page
  • Navigation paths — which page most often leads to which next page
  • Sources — did the visitor arrive via a search engine, social media, a

referring site, an AI assistant, or directly? Plus UTM campaign tags

( utm_source, utm_medium, utm_campaign ) if you use them in your own

marketing links.

  • Events — clicks on outbound links and download links are detected

automatically, plus optional custom events via the data-milkstats-event

attribute. See “Custom events” below.

  • AI crawler visibility — how often known AI crawlers (GPTBot, ClaudeBot,

PerplexityBot, and others) visit your site, separate from human traffic.

What is NEVER stored?

  • No IP addresses
  • No tracking cookies — the session ID lives only in the browser’s

sessionStorage and disappears as soon as the tab is closed. The only

cookie this plugin can ever set is the optional opt-out cookie described

below, and only if you or a visitor chooses to set it.

  • No browser fingerprinting
  • No full referrer URLs — only the domain (e.g. “google.com”), never the

path or a search query that might be contained in it

  • No data sent to external parties

How does it work technically?

js )

php. That request contains the

page URL, page title, a random session ID, and — only on the first page view

of a session — the hostname of the referring site and any UTM parameters.

When the page is left, the time on page is sent afterwards via

sendBeacon.

This data ends up in the following tables in your WordPress database:

  • wp_milkstats_pageviews — daily totals per page. Kept indefinitely: just

counts, no session information.

  • wp_milkstats_session_events — individual page views per session, with

time on page. Automatically deleted after the configured retention

period.

  • wp_milkstats_sessions — one row per session with the traffic source

(first-touch attribution). Also cleaned up after the retention period.

  • wp_milkstats_events — custom events (outbound link clicks, downloads,

manual events). Cleaned up after the retention period, same as session

data.

  • wp_milkstats_device_stats — daily aggregated device/browser/OS counts.

Kept indefinitely, like page totals — never traceable to an individual.

  • wp_milkstats_ai_crawler_hits — daily aggregated hits from known AI

crawlers. Kept indefinitely, like page totals.

A daily WP-Cron job cleans up session data older than the configured

retention period. Page totals are never deleted. Bots are recognized and

ignored based on the User-Agent.

Custom events

Besides page views, MilkStats also measures events, without any

configuration needed:

  • Outbound links — a click on a link to another domain is automatically

recorded, with the domain as the label.

  • Downloads — a click on a link to a file with a known download

extension (pdf, zip, docx, xlsx, and more) is automatically recorded, with

the file name as the label.

  • Manual events — add the data-milkstats-event="label" attribute to a

link, button or <form> to track that click or submission as a custom

event, for example:

Request a quote

or <form data-milkstats-event="Contact form submitted">…</form>.

Events count if the visitor is not excluded (see Settings) and are shown on

the statistics page under “Events”, with the top labels per type.

Excluding yourself (opt-out)

Besides the role exclusion (only works while logged in), you can also

exclude yourself — or an external tester — without logging in:

  • Via the admin bar — administrators see a MilkStats item at the top

(“tracking on”/”tracking off”) to flip this with one click.

  • Via a link — visit?milkstats_optout=1 to exclude yourself, or

milkstats_optout=0 to be counted again. Also works while logged out,

handy to share with external testers.

  • Via the settings page — a button (“Exclude my visits in this browser”)

showing the current status.

This sets a first-party cookie ( milkstats_optout ) in that one browser. The

cookie itself has no tracking purpose — purely a toggle — and works alongside

the role exclusion, not instead of it.

Settings

Under Site Analytics → Settings you can configure:

  • Excluded roles — which user roles are never counted (default:

administrator, editor, author, contributor)

  • Exclude yourself — a button to exclude your own visits in the current

browser, even while logged out (see “Excluding yourself” above)

  • Member segment — optional: which role(s) should be counted separately

g. members, clients, subscribers), with a

custom name for that segment in the statistics. Up to three additional

named segments can be configured, each pickable from a dropdown on the

statistics page.

  • Retention period — after how many days session data (time on page,

navigation paths, sources) is automatically deleted

Where do I see the statistics?

  • A compact overview on the WordPress dashboard (widget)
  • A full statistics page under Site Analytics in the main menu, with a

rolling period filter (7/30/90/365 days) plus a calendar period picker

(today/yesterday, this/last week, this/last month, this/last quarter,

this/last year), bar chart, top pages, navigation paths, source breakdown,

device/browser/OS breakdown, and AI crawler visibility

Credits

The admin screens use the Inter typeface by Rasmus

1

txt ). It is served from your own site — never from an

external font CDN.

WordPress.org metadata

Plugin tags

Topics listed for this plugin in the WordPress.org directory.

  • analytics
  • cookieless
  • gdpr
  • privacy
  • statistics
Compatibility & maintenance

Compatibility & maintenance

Tested with WP 7.1

Marked as tested with the current WordPress 7.1 release.

Current WordPress releaseWordPress 7.1
WordPress.org Tested up to7.1
Minimum requirementsWordPress 5.8 · PHP 7.4
Update activity11 Sept 20261mo ago

“Tested up to” is directory metadata supplied by the plugin author. WP PlugIndex does not turn an older declaration into a claim that the plugin is incompatible.

Changes recorded by WP PlugIndex

Recent tracked changes

Version1.8.01.8.1
Tracking & source

WP PlugIndex tracks public WordPress.org directory metadata and records selected version, compatibility and availability changes as they are detected.

Plugin watchlist

Watch this plugin

Sign in to your WP PlugIndex account or create a free account. Free accounts can watch up to 5 plugins and see what changed.

Watch limit

Watchlist limit reached

You have reached your current active watch limit.