Works with your stack
Cookie consent for statistics counted on your own site
at home is not consent
These plugins count visits on your own WordPress site instead of sending them to Google. Some set a cookie, some use none and recognise visitors another way. Most of them never read the visitor’s choice, and a few still reach another company now and then.

Statistics on your own site, one by one
The plugins
- Matomo for WordPress
- Tracker and hits served by your own site, once a tracking mode is on. Cookie Rocks Pro gives consent through Matomo’s own API. Shop orders can be sent from the server.
- Koko Analytics
- No other company contacted. A cookie set by your server from the first page by default, or a cookieless method.
- Independent Analytics
- No cookie, no browser storage, no other company contacted. Returning visitors are still recognised by a hash.
- Burst Statistics
- Waits for statistics consent when WP Consent API is installed, tracks at once without it. Its fingerprint mode can call another company.
- SlimStat Analytics
- No consent check and full IP addresses by default. Follows WP Consent API once its compliance mode is set. Its fingerprint library can call another company.
What matters for consent with Statistics on your own site
Your own server is not the whole answer
A plugin that counts at home can still set a cookie, keep IP addresses or build a fingerprint. That is what the visitor’s statistics choice is about.
Who reads the choice
Burst waits for WP Consent API when it is installed. SlimStat does too, once you set it. Koko Analytics, Independent Analytics and Matomo for WordPress have no WP Consent API code.
Inline scripts
Several of these plugins print their tracker inside the page. A rule based on a script address does not catch them.
Hits sent from the server
Matomo’s shop tracking and SlimStat’s server-side mode record data from PHP. A choice made in the browser does not hold those.
What Cookie Rocks does
Cookie Rocks holds known trackers until consent. With Matomo, Cookie Rocks Pro uses Matomo’s own consent API, and no Matomo cookie is written before the choice.
What our tests found on Statistics on your own site
Depends on a setting · Cookie RocksExempt measurement for Koko and Independent Analytics
With exempt audience measurement on, in a country that allows it, Cookie Rocks 2.11.1 lets Koko Analytics in fingerprint mode and Independent Analytics with a daily salt count a visit before the choice, with no cookie. After Refuse they stop. Koko in cookie mode, and Independent Analytics without the daily salt, stay held until consent.
Seen in our tests, 6 November 2026, Cookie Rocks.
Good to know · Koko AnalyticsKoko Analytics stays silent for automated browsers
A driven browser sees nothing, while a real visitor gets the cookie in the default mode.
Seen in our tests, 6 November 2026, Koko Analytics 2.5.3.
Full detail
Koko Analytics sends no page view when navigator.webdriver is true, or when the user agent looks like a bot. An automatic test in a driven browser therefore sees no request and no cookie, although a real visitor gets the cookie in the default mode.
Depends on a setting · Koko AnalyticsKoko Analytics: use_cookie set to false does nothing with the default method
The default method is also cookie, so a banner must change the method too.
Read in its code, 6 November 2026, Koko Analytics 2.5.3.
Full detail
Koko Analytics 2.5.3 still reads window.koko_analytics.use_cookie, which a comment keeps for cookie banners. Its script sends m = use_cookie ? 'c' : method[0], and the default method is cookie, so setting use_cookie to false changes nothing on a default site: the method must change too.
Set before the choice · Cookie RocksThree statistics plugins held until consent
Cookie Rocks 2.11.1 holds Independent Analytics, Burst Statistics and Slimstat until consent. Before the choice and after Refuse, none of them records a visit. After Accept, Independent Analytics and Burst count the page without a reload. Slimstat starts without a reload but only counts from the next page.
Seen in our tests, 6 November 2026, Cookie Rocks.
Good to know · Independent AnalyticsIndependent Analytics needs pdo_mysql
Independent Analytics 2.16.2 needs the PHP extension pdo_mysql. Without it, its migrations stop with the message could not find driver and its tracking script is never written in the page.
Seen in our tests, 6 November 2026, Independent Analytics.
Good to know · SlimstatSlimstat's cookie cannot be erased from the browser
Slimstat 6.0.0 writes its cookie slimstat_tracking_code as HttpOnly in its session code, so no script in the browser can erase it. After a withdrawal, a consent tool can stop Slimstat but the cookie stays until it expires.
Read in its code, 6 November 2026, Slimstat.
See the 17 other findings
Good to know · Matomo for WordPressWhat Matomo for WordPress stores in visitors' browsers
Matomo for WordPress: 1 cookie(s) or browser key(s) for visitors, recognised by Cookie Rocks from 2.9.8.
Name Kept in Category What it is for matomo_has_jscookie Statistics Tells Matomo that the visitor's browser runs JavaScript, for visit statistics Read in its code, 2 November 2026, Matomo for WordPress.
Full detail
Matomo for WordPress can store these in a visitor's browser: matomo_has_js (cookie, statistics: Tells Matomo that the visitor's browser runs JavaScript, for visit statistics). Cookie Rocks recognises them from 2.9.8, with this category and purpose, and lists them in the cookie policy when it sees them.
Good to know · Burst StatisticsWhat Burst Statistics stores in visitors' browsers
Burst Statistics: 2 cookie(s) or browser key(s) for visitors, recognised by Cookie Rocks from 2.9.8.
Name Kept in Category What it is for _tmjs_lsessionStorage Statistics Burst Statistics: counts the visit without cookies, within the session burst_error_reportedsessionStorage Statistics Burst Statistics: counts the visit without cookies, within the session Read in its code, 2 November 2026, Burst Statistics.
Full detail
Burst Statistics can store these in a visitor's browser: _tmjs_l (sessionStorage, statistics: Burst Statistics: counts the visit without cookies, within the session); burst_error_reported (sessionStorage, statistics: Burst Statistics: counts the visit without cookies, within the session). Cookie Rocks recognises them from 2.9.8, with this category and purpose, and lists them in the cookie policy when it sees them.
Good to know · TranslatePress, Weglot, Instagram Feed, WP Go Maps, MailPoet, MatomoTranslatePress, Weglot, MailPoet and others set nothing by default
by default: Default settings
With default settings and nothing set up, TranslatePress, Weglot, Instagram Feed, WP Go Maps, MailPoet and Matomo for WordPress set no cookie, use no storage and load no known third-party tool.
Seen in our tests, 17 October 2026, TranslatePress, Weglot, Instagram Feed, WP Go Maps, MailPoet, Matomo 3.3.8, 6.4.3, 6.14.0, 10.1.10, 5.42.0, 5.13.1. Source
Full detail
On a fresh WordPress home page with default settings (no account, key or content set up), TranslatePress, Weglot, Smash Balloon Instagram Feed, WP Go Maps, MailPoet and Matomo for WordPress set no cookie, keep nothing in the browser's storage and load no known third-party tool, after Accept all.
Set before the choice · MatomoMatomo writes a 30-year cookie when consent is forgotten, even before the choice
Cookie Rocks Pro now sends that command only when consent given on the page is withdrawn, so mtm_consent_removed is not written before the choice. Before 2.5.0 it sent it before any choice.
Seen in our tests, 16 October 2026, Matomo matomo.js 5.5.0.
Full detail
Matomo's tracker writes the cookie mtm_consent_removed (30 years) on the site's domain whenever forgetConsentGiven is called, even before any choice, with cookies disabled and with no hit sent. Cookie Rocks Pro pushes requireConsent at start, setConsentGiven on acceptance, and forgetConsentGiven only when a consent given on the page is withdrawn: no cookie is written before the choice. Before 2.5.0 it pushed forgetConsentGiven before any choice.
Depends on a setting · Matomo for WordPressMatomo for WordPress tracks nothing until set up; consent setting is None
setting “Cookie consent” · by default: None
After activation it adds no tracking code. Once a mode is chosen, the tracker is served by the site itself. Its Cookie consent setting defaults to None, and it has no WP Consent API code.
Read in its code, 16 October 2026, Matomo for WordPress 5.13.1.
Full detail
Matomo for WordPress adds no tracking code after activation (track_mode disabled by default). Once a mode is chosen, the tracker and hits are served by the site itself (app/matomo.js, app/matomo.php or /wp-json/matomo/v1/hit/), inline in the footer. Its Cookie consent setting defaults to None; the options push requireCookieConsent or requireConsent, and a consent plugin must then give consent through the _paq API. There is no WP Consent API code.
Sent from your server · Matomo for WordPressMatomo for WordPress sends WooCommerce carts and orders from the server
setting “Track ecommerce” · by default: on
With Track ecommerce on (default), carts and orders are sent from PHP in some cases, with no consent check. A browser-side consent signal does not hold these hits. The server tracker sets no cookie.
Read in its code, 16 October 2026, Matomo for WordPress 5.13.1.
Full detail
With Track ecommerce on (default), Matomo for WordPress sends WooCommerce carts and orders from PHP during AJAX or REST requests, in Tag Manager mode, or with MATOMO_TRACK_ECOMMERCE_SERVER_SIDE, with no consent check in that code; the PHP tracker sets no cookie but reads _pk_id. A browser-side consent signal does not hold these hits. Use server generated Visitor ID (off by default) starts the WooCommerce session for visitors without _pk_id.
Depends on a setting · Koko AnalyticsKoko Analytics sets a cookie from the server by default
setting “tracking_method” · by default: cookie
Its default method sends each page view to the site, whose reply sets _koko_analytics_pages_viewed until midnight. No third-party host is contacted.
Read in its code, 16 October 2026, Koko Analytics 2.5.3.
Full detail
Koko Analytics defaults to the cookie tracking method. Its inline footer script sends the page view at once by sendBeacon (or fetch) to the site itself, and the server response sets _koko_analytics_pages_viewed (HttpOnly, path /, expires at the next midnight in the site's time zone). The JavaScript writes no cookie or storage, and no third-party host is contacted.
Good to know · Koko AnalyticsKoko Analytics cookieless mode keeps a daily session on the server
The session file is named by a hash of a daily seed, the user agent and the IP address, and deleted after midnight. Its tracker is now in the page, so address patterns no longer match it.
Read in its code, 16 October 2026, Koko Analytics 2.5.3.
Full detail
Koko Analytics' cookieless method keeps a server-side session file named by a hash of a daily seed, the user agent and the IP address, deleted after midnight. Since 2.x the tracking script is printed inline in wp_footer, so address patterns on assets/dist/js/script.js no longer match anything. It has no WP Consent API code.
Good to know · Independent AnalyticsIndependent Analytics sets no cookie and sends page views to the site itself
No third-party host is contacted. Its tracker is written in the page, so a banner can match it only by its content (iawp/search), not by a script address.
Read in its code, 16 October 2026, Independent Analytics 2.16.0.
Full detail
Independent Analytics sets no cookie and uses no browser storage for visitors. Its tracking code is an inline script (id independent-analytics-script) printed in the footer, which sends each page view with fetch to the site's own /wp-json/iawp/search endpoint at DOMContentLoaded; no third-party host is contacted from visitor pages. Being inline, it cannot be matched by a script address, only by its content (iawp/search).
Good to know · Independent AnalyticsIndependent Analytics has no WP Consent API code
Its only consent integration targets one consent plugin and is off by default. The page view can be sent later through the iawpSearch event.
Read in its code, 16 October 2026, Independent Analytics 2.16.0.
Full detail
Independent Analytics has no WP Consent API code. Its only consent integration targets a single consent plugin and is off by default; when on, it turns the inline tracker into type=text/plain with a statistics category. The page view can be fired again later through the iawpSearch JavaScript event.
Depends on a setting · Independent AnalyticsIndependent Analytics recognises a visitor month after month by default
setting “Visitor salt refresh interval” · by default: never
It uses a hash of a salt, the full IP address and the user agent. The salt is never refreshed by default, so a visitor stays recognisable month after month.
Read in its code, 16 October 2026, Independent Analytics 2.16.0.
Full detail
Independent Analytics recognises returning visitors with md5(salt + full IP address + user agent). The salt refresh interval defaults to never (options: daily, weekly, monthly), so the same visitor stays recognisable from one month to the next unless the site picks a daily refresh.
Set before the choice · Burst StatisticsBurst Statistics fingerprint mode sometimes sends data to ThumbmarkJS
About once in 10,000 fingerprints, at most once per session, it posts the fingerprint and page path to api.thumbmarkjs.com. Burst does not turn this off. The daily-hash mode does not include it.
Read in its code, 16 October 2026, Burst Statistics 3.7.2.
Full detail
Burst Statistics' cookieless fingerprint mode bundles ThumbmarkJS 1.2.0, which about once in 10,000 fingerprint computations, at most once per session (sessionStorage _tmjs_l), sends a POST to api.thumbmarkjs.com/log with the fingerprint, its components and the page path. Burst does not turn this logging off. The daily-hash mode does not include it.
Depends on a setting · Burst StatisticsBurst Statistics uses a 30-day visitor cookie by default
setting “How Burst recognizes visitors” · by default: cookie
burst_uid is set once tracking is allowed. The daily-hash mode uses no cookie, only a hash of IP and browser with a salt renewed each day.
Read in its code, 16 October 2026, Burst Statistics 3.7.2.
Full detail
Burst Statistics recognises visitors with a cookie by default: burst_uid, 32 random hex characters, 30 days (filter burst_cookie_retention_days), SameSite=Strict, set by JavaScript once tracking is allowed. Its daily-hash mode uses sha256 of IP, user agent and a salt renewed each day, with no cookie. Its script is a combined file at /wp-content/uploads/burst/js/burst.min.js by default; ghost mode gives it a random 8-character name.
Good to know · Burst StatisticsBurst Statistics waits for statistics consent when WP Consent API is present
Every mode waits, cookieless ones too. It reads only 'statistics', not 'statistics-anonymous'. Without WP Consent API it tracks at once.
Read in its code, 16 October 2026, Burst Statistics 3.7.2.
Full detail
When WP Consent API is present, Burst Statistics waits for wp_has_consent('statistics') before any tracking, page views included, in every mode, cookieless ones too. It reads only 'statistics', not 'statistics-anonymous', listens to wp_consent_type_defined and wp_listen_for_consent_change, and registers with the API. Without WP Consent API it tracks at once.
Depends on a setting · SlimStat AnalyticsSlimStat Analytics follows WP Consent API only when you turn it on
- Needs GDPR Compliance Mode on and Via WP Consent API chosen.
- Its own banner (off by default) stores slimstat_gdpr_consent for 1 year.
- Its script can come from cdn.jsdelivr.net or from an address that hides its name.
- In server-side mode, the visit is recorded while the page is built.
Read in its code, 16 October 2026, SlimStat Analytics 5.5.0.
Full detail
SlimStat Analytics follows WP Consent API only after GDPR Compliance Mode is on and Via WP Consent API is chosen (statistics category), reading it in PHP and in the browser. Its own banner (off by default) stores slimstat_gdpr_consent for 1 year. Its script can be served from cdn.jsdelivr.net (option off by default) or from an obfuscated /<md5>.js/ address that hides its name; in server-side mode the visit is recorded while the page is built.
Depends on a setting · SlimStat AnalyticsSlimStat Analytics by default checks no consent and stores full IP addresses
setting “GDPR Compliance Mode” · by default: off
- GDPR Compliance Mode is off, so no consent is checked.
- Full IP addresses are stored (anonymize and hash off).
- Sets the cookie slimstat_tracking_code from the first page, for 30 minutes.
- Records the name and e-mail of logged-in users or commenters with the visit.
Read in its code, 16 October 2026, SlimStat Analytics 5.5.0.
Full detail
With default settings, SlimStat Analytics checks no consent (GDPR Compliance Mode off), stores full IP addresses (anonymize and hash off) and sets slimstat_tracking_code from the first page: a PHP cookie in the tracking response, HttpOnly, SameSite=Lax, 30 minutes. While personal data is allowed (the default), it records the logged-in user's name and e-mail, or the name and e-mail read from WordPress comment cookies, with the visit.
Set before the choice · SlimStat AnalyticsSlimStat Analytics sends a browser fingerprint with each visit
Unless anonymous mode is on, it sends a FingerprintJS fingerprint with each visit. About one page load in a thousand also contacts m1.openfpcdn.io. It keeps several keys in browser storage.
Read in its code, 16 October 2026, SlimStat Analytics 5.5.0.
Full detail
SlimStat Analytics bundles FingerprintJS 4.6.2 and, unless anonymous mode is on, sends a browser fingerprint (parameter fh) with each visit. FingerprintJS is loaded without monitoring:false, so on about one page load in a thousand it sends a GET to m1.openfpcdn.io. Its script keeps slimstat_transport_memory, slimstat_stale_id_guard and two consent-upgrade keys in sessionStorage, and a queue of unsent hits (slimstat_offline_queue, up to 200) in localStorage.
Analytics and ad pixels
Other plugins of the same kind.
Questions
What about WP Statistics?
It has its own page: WP Statistics.
Is Jetpack Stats one of them?
No. Jetpack Stats sends page views to WordPress.com, not to your own site.
What happens after the 30-day trial?
The banner, your visitors’ choices and your proofs of consent keep working. Without a key, most settings lock, updates and support stop. Take a key at any time and everything opens again.
For sites with their own statistics
Count at home, ask first.
statistics, after yes
Every feature of the complete plugin for 30 days, no card. Your statistics plugin keeps counting on your own site.
- During the trial: everything, including the full settings and the scans
- After 30 days without a key: the banner, your visitors’ choices and your proofs of consent keep working
- What waits for a key: most settings, updates and support

Get your trial key
Your e-mail and your site. Your key arrives as soon as you confirm your e-mail.