Title: MilkStats
Author: javdgraaf
Published: <strong>10 september 2026</strong>
Last modified: 11 september 2026

---

Plugins zoeken

![](https://ps.w.org/milkstats/assets/banner-772x250.png?rev=3689546)

![](https://ps.w.org/milkstats/assets/icon-256x256.png?rev=3689546)

# MilkStats

 Door [javdgraaf](https://profiles.wordpress.org/javdgraaf/)

[Download](https://downloads.wordpress.org/plugin/milkstats.1.8.1.zip)

 * [Details](https://nl.wordpress.org/plugins/milkstats/#description)
 * [Beoordelingen](https://nl.wordpress.org/plugins/milkstats/#reviews)
 *  [Installatie](https://nl.wordpress.org/plugins/milkstats/#installation)
 * [Ontwikkeling](https://nl.wordpress.org/plugins/milkstats/#developers)

 [Ondersteuning](https://wordpress.org/support/plugin/milkstats/)

## Beschrijving

**MilkStats** houdt bezoekersstatistieken bij zonder persoonsgegevens te verzamelen.

Alle data blijft lokaal in je eigen WordPress-database — er wordt niets gedeeld 
met externe analysediensten (geen Google Analytics, geen externe scripts of lettertypen).
Een product van [5Names](https://5names.nl).

#### Wat wordt gemeten?

 * **Paginaweergaven** — geteld en geaggregeerd per pagina, per dag
 * **Sessies** — hoeveel unieke bezoekerssessies er waren
 * **Tijd op pagina** — hoe lang iemand op een pagina bleef
 * **Navigatiepaden** — welke pagina het vaakst leidt naar welke volgende pagina
 * **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.
 * **Evenementen** — klikken op uitgaande links en download links worden automatisch
   gedetecteerd, plus optionele aangepaste gebeurtenissen via het `data-milkstats-
   event` attribuut. Zie “Aangepaste gebeurtenissen” hieronder.
 * **AI-crawlerzichtbaarheid** — hoe vaak bekende AI-crawlers (GPTBot, ClaudeBot,
   PerplexityBot, en andere) je site bezoeken, apart van menselijk verkeer.

#### Wat wordt NOOIT opgeslagen?

 * Geen IP-adressen
 * 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.
 * Geen 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
 * Geen gegevens verzonden naar externe partijen

#### Hoe werkt het technisch?

On every page view, a small, first-party JavaScript file (`assets/tracker.js`)
 
sends an AJAX request to your own `admin-ajax.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 navigator.sendBeacon.

Deze gegevens belanden uiteindelijk in de volgende tabellen in je WordPress database:

 1. `wp_milkstats_pageviews` — dagelijkse totalen per pagina. Wordt voor onbepaalde
    tijd bewaard: alleen aantallen, geen sessie-informatie.
 2. `wp_milkstats_session_events` — individuele paginaweergaven per sessie, met tijd
    op pagina. Wordt automatisch verwijderd na de ingestelde bewaartermijn.
 3. `wp_milkstats_sessions` — één rij per sessie met de verkeersbron (first-touch attributie).
    Wordt ook opgeruimd na de bewaartermijn.
 4. `wp_milkstats_events` — aangepaste events (uitgaande linkklikken, downloads,
     handmatige
    gebeurtenissen). Opgeschoond na de bewaartermijn, net als sessie gegevens.
 5. `wp_milkstats_device_stats` — daily aggregated device/browser/OS counts.
     Kept 
    indefinitely, like page totals — never traceable to an individual.
 6. `wp_milkstats_ai_crawler_hits` — dagelijkse geaggregeerde hits van bekende AI-crawlers.
    Wordt voor onbepaalde tijd bewaard, net als paginatotalen.

Een dagelijkse WP-Cron taak ruimt sessiegegevens op die ouder is dan de ingestelde
bewaartermijn. Paginatotalen worden nooit verwijderd. Bots worden herkend en genegeerd
op basis van de User-Agent.

#### Aangepaste gebeurtenissen

Naast paginaweergaven meet MilkStats ook events, zonder dat daar configuratie voor
nodig is:

 * **Uitgaande links** — een klik op een link naar een ander domein wordt automatisch
   geregistreerd, met het domein als label.
 * **Downloads** — een klik op een link naar een bestand met een bekende download-
   extensie (pdf, zip, docx, xlsx, en meer) wordt automatisch geregistreerd, met
   de bestandsnaam als label.
 * **Handmatige gebeurtenissen** — voeg het `data-milkstats-event="label"`-attribuut
   toe aan een
    link, knop of `<form>` om die klik of verzending als een aangepaste
   Gebeurtenis te volgen, bijvoorbeeld: [Een offerte aanvragen](https://nl.wordpress.org/plugins/milkstats/?output_format=md#)
   of `<form data-milkstats-event="Contact form submitted">…</form>`.

Gebeurtenissen tellen mee als de bezoeker niet is uitgesloten (zie Instellingen)
en worden op de statistiekenpagina getoond onder “Gebeurtenissen”, met de top labels
per type.

#### Jezelf uitsluiten (opt-out)

Naast de roluitsluiting (werkt alleen terwijl je bent ingelogd) kun je jezelf — 
of een externe tester — ook uitsluiten zonder in te loggen:

 * **Via the admin bar** — administrators see a MilkStats item at the top
    (“tracking
   on”/”tracking off”) to flip this with one click.
 * **Via een link** — bezoek `?milkstats_optout=1` om jezelf uit te sluiten, of
   ?
   milkstats_optout=0 om weer meegeteld te worden. Werkt ook terwijl je bent uitgelogd,
   handig om te delen met externe testers.
 * **Via de instellingenpagina** — een knop (“Sluit mijn bezoeken in deze browser
   uit”) die de huidige status toont.

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.

#### Instellingen

Onder **Site Analytics  Instellingen** kun je configureren:

 * **Uitgesloten rollen** — welke gebruikersrollen nooit worden meegeteld (standaard:
   beheerder, redacteur, auteur, medewerker)
 * **Jezelf uitsluiten** — een knop om je eigen bezoeken in de huidige browser uit
   te sluiten, ook terwijl je bent uitgelogd (zie “Jezelf uitsluiten” hierboven)
 * **Ledensegment** — optioneel: welke rol(len) apart geteld moeten worden als een“
   ingelogd segment” (bv. leden, klanten, abonnees), met een eigen naam voor dat
   segment in de statistieken. Er kunnen tot drie extra benoemde segmenten worden
   geconfigureerd, elk te kiezen via een dropdown op de statistiekenpagina.
 * **Bewaartermijn** — na hoeveel dagen sessiedata (tijd op pagina, navigatiepaden,
   bronnen) automatisch wordt verwijderd

#### Waar zie ik de statistieken?

 * Een compact overzicht op het 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

De adminschermen gebruiken het lettertype [Inter](https://rsms.me/inter/) van Rasmus
Andersson, meegeleverd met de plugin onder de SIL Open Font License 1.1 (`assets/
fonts/OFL.txt`). Het wordt vanaf je eigen site geserveerd — nooit vanaf een externe
font-CDN.

## Schermafbeeldingen

[⌊De compacte "Visitor Statistics"-dashboardwidget — vandaag, de laatste 7 dagen
en de laatste 30 dagen in één oogopslag, met een 14-daagse trendlijn en de meest
bezochte pagina’s, rechtstreeks op het WordPress-dashboard.⌉⌊De compacte "Visitor
Statistics"-dashboardwidget — vandaag, de laatste 7 dagen en de laatste 30 dagen
in één oogopslag, met een 14-daagse trendlijn en de meest bezochte pagina’s, rechtstreeks
op het WordPress-dashboard.⌉[

De compacte “Visitor Statistics”-dashboardwidget — vandaag, de laatste 7 dagen en
de laatste 30 dagen in één oogopslag, met een 14-daagse trendlijn en de meest bezochte
pagina’s, rechtstreeks op het WordPress-dashboard.

[⌊The Site Analytics page: rolling and calendar period filters, the privacy
badges,
the stat cards with period-over-period comparison, the "Views per
day" chart and
the "Visitor sources" breakdown (search engines, referring
sites, social media, 
AI assistants and direct visits).⌉⌊The Site Analytics page: rolling and calendar
period filters, the privacy
badges, the stat cards with period-over-period comparison,
the "Views per
day" chart and the "Visitor sources" breakdown (search engines, referring

sites, social media, AI assistants and direct visits).⌉[

The Site Analytics page: rolling and calendar period filters, the privacy badges,
the stat cards with period-over-period comparison, the “Views per day” chart and
the “Visitor sources” breakdown (search engines, referring sites, social media, 
AI assistants and direct visits).

[⌊Device, browser and operating-system breakdown — classified server-side,
the raw
User-Agent is never stored — next to the most visited pages with
average time on
page.⌉⌊Device, browser and operating-system breakdown — classified server-side,

the raw User-Agent is never stored — next to the most visited pages with
average
time on page.⌉[

Device, browser and operating-system breakdown — classified server-side, the raw
User-Agent is never stored — next to the most visited pages with average time on
page.

[⌊De meest voorkomende navigatiepaden: welke pagina het vaakst naar welke volgende
pagina leidt.⌉⌊De meest voorkomende navigatiepaden: welke pagina het vaakst naar
welke volgende pagina leidt.⌉[

De meest voorkomende navigatiepaden: welke pagina het vaakst naar welke volgende
pagina leidt.

[⌊Het AI-crawlerzichtbaarheidsrapport: hoe vaak GPTBot, ClaudeBot, PerplexityBot,
Google-Extended en andere AI-crawlers de site bezoeken, apart van menselijk verkeer,
met een uitsplitsing per crawler en per pagina.⌉⌊Het AI-crawlerzichtbaarheidsrapport:
hoe vaak GPTBot, ClaudeBot, PerplexityBot, Google-Extended en andere AI-crawlers
de site bezoeken, apart van menselijk verkeer, met een uitsplitsing per crawler 
en per pagina.⌉[

Het AI-crawlerzichtbaarheidsrapport: hoe vaak GPTBot, ClaudeBot, PerplexityBot, 
Google-Extended en andere AI-crawlers de site bezoeken, apart van menselijk verkeer,
met een uitsplitsing per crawler en per pagina.

[⌊De instellingenpagina: uitgesloten rollen, het ingelogde ledensegment met een 
eigen label, jezelf uitsluiten, en de bewaartermijn voor sessiedata.⌉⌊De instellingenpagina:
uitgesloten rollen, het ingelogde ledensegment met een eigen label, jezelf uitsluiten,
en de bewaartermijn voor sessiedata.⌉[

De instellingenpagina: uitgesloten rollen, het ingelogde ledensegment met een eigen
label, jezelf uitsluiten, en de bewaartermijn voor sessiedata.

## Installatie

 1. Upload de map `milkstats` naar `/wp-content/plugins/`.
 2. Activeer de plugin via **Plugins** in WordPress.
 3. Ga naar **Site Analytics  Instellingen** om rollen, segment en bewaartermijn naar
    wens in te stellen — de standaardinstellingen werken ook prima zonder aanpassingen.
 4. Bekijk je statistieken onder **Site Analytics** in het hoofdmenu.

## FAQ

### Is this plugin GDPR-compliant without a cookie banner?

Yes. No tracking cookies are placed, no IP addresses are stored, and no data
 is
shared with third parties. The session ID is generated in the browser itself, lives
only in `sessionStorage` (not persistent), and cannot be traced back to an individual.
The only cookie the plugin ever sets is the optional opt-out cookie, and only if
you or a visitor chooses to set it — that cookie serves no tracking purpose.

### Worden beheerders/redacteuren meegeteld?

Standaard niet — beheerder, redacteur, auteur en medewerker zijn uitgesloten. Dit
is aan te passen onder Instellingen.

### Kan ik mezelf uitsluiten, ook terwijl ik ben uitgelogd?

Yes. Besides the role exclusion (logged in only), you can exclude yourself
 via 
the admin bar, the settings page, or the `?milkstats_optout=1` link in the browser
you’re currently using — handy for testing while logged out or to share with an 
external tester. See “Excluding yourself (opt-out)” above.

### Werkt dit met cachingplugins?

For regular visitor statistics, yes: that tracking runs via a separate AJAX
 request
after the page loads, so a cached page is still counted correctly. The AI crawler
report is an exception: that runs server-side (WordPress must actually run to see
a visit), so visits from AI crawlers to fully cached pages (e.g. a “supercached”
page with WP Super Cache) are missed in that report.

### Wat gebeurt er met mijn gegevens als ik MilkStats deactiveer of verwijder?

Deactivating the plugin (from the Plugins screen) leaves all data untouched
 — your
tables and settings are still there if you reactivate later. Deleting the plugin(
via “Delete” on the Plugins screen, which runs its uninstall.php) permanently removes
every MilkStats database table (page views, sessions, session events, device stats,
custom events, AI crawler hits) and every MilkStats setting. This cannot be undone,
so export any data you want to keep (see the Export dashboard (.html)/CSV buttons
on the statistics page) before deleting the plugin.

### Kan ik dit op meerdere sites gebruiken?

Ja, de plugin is bewust generiek gehouden: elke site-specifieke keuze (rollen, segment,
bewaartermijn) is instelbaar, niet hardcoded.

## Beoordelingen

Er zijn geen beoordelingen voor deze plugin.

## Bijdragers & ontwikkelaars

“MilkStats” is open source software. De volgende personen hebben bijgedragen aan
deze plugin.

Bijdragers

 *   [ javdgraaf ](https://profiles.wordpress.org/javdgraaf/)

“MilkStats” is vertaald in 1 locale. Dank voor [de vertalers](https://translate.wordpress.org/projects/wp-plugins/milkstats/contributors)
voor hun bijdragen.

[Vertaal “MilkStats” in je eigen taal.](https://translate.wordpress.org/projects/wp-plugins/milkstats)

### Interesse in ontwikkeling?

[Bekijk de code](https://plugins.trac.wordpress.org/browser/milkstats/), haal de
[SVN repository](https://plugins.svn.wordpress.org/milkstats/) op, of abonneer je
op het [ontwikkellog](https://plugins.trac.wordpress.org/log/milkstats/) via [RSS](https://plugins.trac.wordpress.org/log/milkstats/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.8.1

 * Fixed the MilkStats icon missing from the hero banner on the Site Analytics
    
   and Settings pages on sites installed from WordPress.org. The 1.8.0 package didn’t
   include `assets/icon-128x128.png` — it was mistakenly treated as a directory-
   listing-only asset even though the plugin’s own admin screens use it. No settings
   or data are affected; updating to 1.8.1 is enough to restore the icon.

#### 1.8.0

 * Existing installs of the older “Pion Analytics” plugin (and its interim
    “AVG
   Proof Site Analytics” release) are now upgraded to MilkStats automatically on
   activation, without losing any historical data. The existing page-view and session
   tables are renamed into place (never copied, so nothing is duplicated or left
   orphaned), the old Dutch visitor/member labels are converted to the format MilkStats
   uses, and the previous plugin’s scheduled cleanup task is removed. To switch 
   over: deactivate the old plugin, install MilkStats, and activate it.
 * The admin menu item is now labelled “MilkStats” (was “Site Analytics”) and
    uses
   the MilkStats icon instead of a generic chart-bar icon.
 * Elke dashboardtegel heeft nu een klein ⓘ icoon rechtsboven — klik erop voor een
   korte uitleg van precies wat die tegel laat zien. Dezelfde iconen en uitleg zitten
   in het bestand “Exporteer dashboard (.html)”, voor de tegels die daarin voorkomen.
 * Nieuw menu-item “Help”, direct na “Instellingen”: een volledige uitleg van het
   dashboard plus een apart onderdeel over hoe MilkStats de privacy van bezoekers
   beschermt (wat wel en niet wordt opgeslagen, bewaartermijnen, uitgesloten rollen,
   en het opt-out-cookie).

#### 1.7.0

 * Excel export has been removed entirely (the “Export Excel” button and the
    vendored
   PhpSpreadsheet library are both gone). A formula-driven Excel workbook turned
   out to be the wrong format for a shareable, interactive dashboard export — the
   new .html export below replaces it.
 * New “Export dashboard (.html)” button next to Export CSV: generates a
    single,
   self-contained .html file with the full Site Analytics dashboard (KPIs, the views-
   per-day chart, visitor sources, device/browser/OS breakdowns, top pages, and 
   the AI crawler report) for all 14 period options at once. It needs no WordPress
   access or internet connection to view — just open the file in any browser — and
   switching between periods recalculates everything instantly with plain JavaScript,
   no page reload and no spreadsheet formulas involved.

#### 1.6.0

 * Nieuwe kalender-periodekiezer op de statistiekenpagina, naast het bestaande rollende
   filter (7/30/90/365 dagen): vandaag/gisteren, deze/vorige week, deze/vorige maand,
   dit/vorig kwartaal, en dit/vorig jaar. Anders dan het rollende filter zijn deze
   kalender-uitgelijnd (bv. “vorige maand” is altijd de volledige vorige kalendermaand,
   niet de laatste 30 dagen).
 * Period-over-period comparison now also works for calendar periods. For a
    “this…”
   period still in progress (e.g. this month, part-way through), the comparison 
   is capped to the same number of elapsed days in the previous period, so the percentage
   stays a fair, apples-to-apples comparison rather than always favoring the completed
   period.
 * De CSV-export weerspiegelt nu de actieve periodekeuze (rollend of kalender), 
   inclusief de bestandsnaam.

#### 1.5.0

 * Nieuw AI-crawlerzichtbaarheidsrapport: zie hoe vaak bekende AI-crawlers (GPTBot,
   ClaudeBot, PerplexityBot, Google-Extended, CCBot, en andere) je site bezoeken,
   apart van menselijk verkeer — met een top-pagina’s-verdeling per crawler. Server-
   side gedetecteerd, omdat crawlers de JavaScript volger niet uitvoeren.
 * Bekende beperking: full-page caching kan crawlerbezoeken verbergen voor dit rapport(
   gedocumenteerd op de statistiekenpagina en in de FAQ hierboven).
 * Nieuwe “Export CSV”-knop op de statistiekenpagina: een lichte export van
    de 
   tabel met de populairste pagina’s.
 * De statistiekenpagina kan nu wisselen tussen meerdere geconfigureerde segmenten
   via een dropdown naast de periodeselector, zonder een omweg via Instellingen.
   Er kunnen tot drie extra benoemde segmenten worden geconfigureerd onder Instellingen,
   naast het bestaande segment.

#### 1.4.0

 * Self opt-out: exclude your own visits via an admin bar toggle, a settings
    page
   button, or a manual `?milkstats_optout=1` URL parameter — works even while logged
   out, alongside the existing role exclusion.
 * Privacy policy text and the WP Privacy Policy Guide integration updated to
    mention
   the new opt-out cookie (functional only, no tracking purpose).

#### 1.3.0

 * Custom event tracking: outbound links and file downloads are detected
    automatically,
   plus a manual `data-milkstats-event` attribute for custom events (e.g. form submissions).
 * Nieuwe “Gebeurtenissen” kaart op de statistiekenpagina met top gebeurtenislabels
   per type.
 * Privacy policy text and the WP Privacy Policy Guide integration updated to
    mention
   the new events data.

#### 1.2.0

 * Hernoemd van AVG/GDPR Proof Site Analytics naar MilkStats.
 * Full i18n: English source strings with a bundled Dutch translation.
 * Periode-over-periode-vergelijking op de statistiekkaarten voor paginaweergaven
   en sessies.
 * Landing- & exit-pagina’s-rapport.
 * AI-assistenten (ChatGPT, Perplexity, Gemini, Copilot, Claude.ai, enz.) als aparte
   verkeersbron-categorie.
 * Device, browser and OS breakdown, classified server-side — the raw
    User-Agent
   string is never stored.
 * Privacybeleid-integratie via wp_add_privacy_policy_content().
 * Visual redesign of the statistics page: a real line chart (this period vs.
    previous
   period), donut charts for traffic sources and device/browser/OS, and a refreshed
   MilkStats brand look.

#### 1.1.0

 * Added source tracking: referrer category (search engine, social, referral,
    direct)
   and UTM campaign tags, with first-touch attribution per session.
 * Versiegebaseerde upgraderoutine zodat bestaande installaties automatisch de nieuwe
   tabel krijgen zonder herinstallatie.

#### 1.0.0

 * Eerste release: paginaweergaven, sessies, tijd op pagina, navigatiepaden, instelbare
   rolfiltering en ledensegment, dashboardwidget en statistiekenpagina met periodefilter.

## Meta

 *  Versie **1.8.1**
 *  Laatst geüpdatet **6 dagen geleden**
 *  Actieve installaties **Minder dan 10**
 *  WordPress versie ** 5.8 of nieuwer **
 *  Getest t/m **7.1.1**
 *  PHP versie ** 7.4 of nieuwer **
 *  Talen
 * [Dutch](https://nl.wordpress.org/plugins/milkstats/) en [English (US)](https://wordpress.org/plugins/milkstats/).
 *  [Vertaal in je eigen taal](https://translate.wordpress.org/projects/wp-plugins/milkstats)
 * Tags
 * [analytics](https://nl.wordpress.org/plugins/tags/analytics/)[cookieless](https://nl.wordpress.org/plugins/tags/cookieless/)
   [GDPR](https://nl.wordpress.org/plugins/tags/gdpr/)[privacy](https://nl.wordpress.org/plugins/tags/privacy/)
   [statistics](https://nl.wordpress.org/plugins/tags/statistics/)
 *  [Geavanceerde weergave](https://nl.wordpress.org/plugins/milkstats/advanced/)

## Waarderingen

Er zijn nog geen beoordelingen ingediend.

[Je beoordeling](https://wordpress.org/support/plugin/milkstats/reviews/#new-post)

[Bekijk alle beoordelingen](https://wordpress.org/support/plugin/milkstats/reviews/)

## Bijdragers

 *   [ javdgraaf ](https://profiles.wordpress.org/javdgraaf/)

## Ondersteuning

Iets te melden? Hulp nodig?

 [Het supportforum bekijken](https://wordpress.org/support/plugin/milkstats/)