Title: ZenMarkup Privacy Analytics
Author: zenmarkup
Published: <strong>08.05.2026</strong>
Last modified: 08.05.2026

---

Поиск плагинов

![](https://ps.w.org/zenmarkup-privacy-analytics/assets/banner-772x250.png?rev=3526219)

![](https://ps.w.org/zenmarkup-privacy-analytics/assets/icon-256x256.png?rev=3526219)

# ZenMarkup Privacy Analytics

 Автор: [zenmarkup](https://profiles.wordpress.org/zenmarkup/)

[Скачать](https://downloads.wordpress.org/plugin/zenmarkup-privacy-analytics.1.2.0.zip)

 * [Детали](https://ru.wordpress.org/plugins/zenmarkup-privacy-analytics/#description)
 * [Отзывы](https://ru.wordpress.org/plugins/zenmarkup-privacy-analytics/#reviews)
 *  [Установка](https://ru.wordpress.org/plugins/zenmarkup-privacy-analytics/#installation)
 * [Разработка](https://ru.wordpress.org/plugins/zenmarkup-privacy-analytics/#developers)

 [Поддержка](https://wordpress.org/support/plugin/zenmarkup-privacy-analytics/)

## Описание

Self-hosted website analytics for WordPress. All data is stored in your WordPress
database and never sent to third-party services. The tracker is cookieless and loads
no external resources, making the plugin GDPR, CCPA, and PECR friendly by default—
no consent banner required.

Once activated, the plugin starts collecting anonymous visitor data and displays
a full analytics dashboard inside WP Admin.

#### Features

 * Real-time visitor counter
 * Pageviews, unique visitors, bounce rate, and average session duration
 * Interactive SVG world map with zoom, pan, and country/city drill-down
 * UTM campaign tracking with automatic URL cleanup
 * Event tracking — outbound links, file downloads, mailto and tel clicks, 404 pages
 * Custom events via data attributes or JavaScript API
 * Smart insights — exit pages, dead pages, user journeys
 * 24-hour peak activity chart
 * New vs returning visitor breakdown
 * Device, browser, and operating system detection (server-side)
 * Weekly or monthly email reports
 * CSV export on every dashboard tab
 * Date range selector with custom ranges
 * Role-based dashboard access control
 * Configurable data retention (7–365 days)
 * IP exclusion list and admin traffic filtering
 * Bot traffic analysis

#### Privacy by design

 * No cookies, no localStorage, no sessionStorage
 * IP addresses are never stored — only an irreversible SHA-256 hash is used internally
 * Geolocation is resolved locally on your server (optional) — only country and 
   city names are stored
 * No personal identifiers — no names, emails, or login state tracked
 * GDPR, CCPA, and PECR friendly by default

#### Zero external resources

The admin dashboard loads no fonts from third-party CDNs, no remote scripts, and
no external stylesheets. Every byte is served from your own server, so the admin’s
IP address is never leaked to third parties while viewing analytics.

#### Compatibility

The tracking script is async, non-blocking, and under 5KB. It works with common 
caching and optimization plugins by using `admin-ajax.php` for data collection, 
which bypasses page caching.

#### Who is it for?

 * Site owners who want analytics without a consent banner
 * GDPR-regulated businesses that need compliant analytics out of the box
 * Agencies managing multiple WordPress sites
 * Developers who prefer self-hosted, zero-dependency tooling

Built by [ZenMarkup](https://zenmarkup.com) — WordPress support and development.

### External services

This plugin connects to a single third-party service under the conditions described
below. The connection can be fully disabled by toggling «Geolocation» off in Analytics
Settings  General. Visitor data is never sent to any third party.

#### jsDelivr CDN (cdn.jsdelivr.net)

When the geolocation feature is enabled, the plugin downloads a static IP geolocation
database file from jsDelivr CDN about once per month. The database is hosted as 
a public npm package (dbip-city-lite) and contains no user-specific data — it is
the same file served to every site that requests it.

What is sent: a standard HTTPS GET request from your server. No visitor data, site
identifiers, or telemetry are included.
 What is received: a gzipped database file,
approximately 19 MB (dbip-city-lite.mmdb.gz). When: shortly after the geolocation
feature is first enabled, then approximately once per month via WP-Cron, and whenever
an admin clicks the «Update database now» button on the Settings page. Where it 
is stored: wp-content/uploads/zenmarkup-pa/dbip-city-lite.mmdb (after extraction).

 * Source URL: https://cdn.jsdelivr.net/npm/dbip-city-lite/dbip-city-lite.mmdb.gz
 * Service provider: jsDelivr — https://www.jsdelivr.com/ — Privacy policy: https://
   www.jsdelivr.com/terms/privacy-policy
 * Database provider: DB-IP — https://db-ip.com/ — License: CC-BY 4.0 (https://creativecommons.
   org/licenses/by/4.0/)

#### No per-visitor external requests

After the database has been downloaded, ALL geolocation lookups happen locally on
your own server using the bundled MaxMind GeoIP2 PHP reader. Visitor IP addresses
are NEVER transmitted to any external service.

To stop all external requests entirely, set «Geolocation» to OFF in Analytics  Settings
General. The plugin continues to work without country and city data.

### Development

The plugin ships with both minified production bundles and their unminified sources,
so every byte of JavaScript and CSS can be reviewed, studied, and modified without
any external tooling. No remote repository or compilation step is required to inspect
the code.

Shipped sources:

 * admin/assets/js/src/ — ES module sources that esbuild bundles into admin/assets/
   js/dashboard.min.js (the single file loaded on the admin dashboard). A source
   map is also shipped as dashboard.min.js.map.
 * admin/assets/css/dashboard.css — unminified source for admin/assets/css/dashboard.
   min.css.
 * public/tracker.js — unminified source for public/tracker.min.js (the frontend
   beacon, <5KB).

Rebuilding the minified bundles (optional):

 1. Install Node.js 18 or newer.
 2. From the plugin directory run: npm install
 3. Then run: npm run build

The build script uses esbuild (a pure Node dependency declared in package.json) —
no remote downloads at runtime, no other build tooling, no framework.

### Third Party Notices

This plugin includes the following third-party assets.

#### SVG World Map

 * File: admin/assets/svg/world-map.min.svg
 * Source: Simplemaps.com (https://simplemaps.com/resources/svg-maps), via sirLisko/
   world-map-country-shapes on GitHub (https://github.com/sirLisko/world-map-country-
   shapes)
 * License: MIT
 * Copyright: 2015 Pareto Software, LLC DBA Simplemaps.com

MIT License text:

The MIT License (MIT)

Copyright (c) 2015 Pareto Software, LLC DBA Simplemaps.com

Permission is hereby granted, free of charge, to any person obtaining a copy of 
this software and associated documentation files (the «Software»), to deal in the
Software without restriction, including without limitation the rights to use, copy,
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so, subject to the
following conditions:

The above copyright notice and this permission notice shall be included in all copies
or substantial portions of the Software.

THE SOFTWARE IS PROVIDED «AS IS», WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.

#### DB-IP City Lite

 * File: downloaded into wp-content/uploads/zenmarkup-pa/dbip-city-lite.mmdb at 
   runtime (not bundled in the plugin .zip)
 * Source: https://db-ip.com/db/lite.php (distributed via the dbip-city-lite npm
   package on jsDelivr CDN)
 * License: Creative Commons Attribution 4.0 International (CC-BY 4.0) — https://
   creativecommons.org/licenses/by/4.0/
 * Attribution: IP Geolocation by DB-IP — https://db-ip.com

#### GeoIP2 PHP API

 * Files: includes/vendor-scoped/GeoIp2/
 * Source: https://github.com/maxmind/GeoIP2-php
 * License: Apache License 2.0 — https://www.apache.org/licenses/LICENSE-2.0
 * Copyright: 2013-2024 MaxMind, Inc.
 * Bundled with a prefixed namespace (ZMPA\Vendor\GeoIp2) so it cannot collide with
   other plugins shipping the same library.

#### MaxMind DB Reader

 * Files: includes/vendor-scoped/MaxMind/
 * Source: https://github.com/maxmind/MaxMind-DB-Reader-php
 * License: Apache License 2.0 — https://www.apache.org/licenses/LICENSE-2.0
 * Copyright: 2014-2024 MaxMind, Inc.
 * Bundled with a prefixed namespace (ZMPA\Vendor\MaxMind) so it cannot collide 
   with other plugins shipping the same library.

## Скриншоты

 * [[
 * Overview tab — metric cards, line chart, peak hours, device breakdown
 * [[
 * Traffic tab — top pages, sources, UTM campaigns
 * [[
 * Geography tab — interactive world map with country/city drill-down
 * [[
 * Behavior tab — events, insights, user journeys, exit intelligence
 * [[
 * Settings — data retention, access control, email reports, event tracking

## Установка

 1. Upload the `zenmarkup-privacy-analytics` folder to `/wp-content/plugins/`.
 2. Activate the plugin through the **Plugins** menu in WordPress.
 3. Visit **Analytics** in the admin sidebar to view your dashboard.

Tracking begins automatically after activation. No configuration required.

## Часто задаваемые вопросы

### Does this plugin use cookies?

No. The plugin uses zero cookies, zero localStorage, and zero sessionStorage. No
consent banner is needed.

### Is this plugin GDPR-compliant?

The plugin is designed to be GDPR-friendly by default. It collects only anonymous,
aggregated data. IP addresses are never stored — only an irreversible hash is used
internally and then discarded. No personal identifiers are tracked.

### How does visitor counting work without cookies?

An anonymous fingerprint is generated from a combination of the IP hash, User-Agent,
screen size, language, and timezone. This creates a unique but non-reversible identifier
that rotates naturally when any component changes.

### Does this plugin make external requests?

The only external request the plugin makes is a monthly download of a public IP 
geolocation database from cdn.jsdelivr.net to your server. Visitor IP addresses 
and any other visitor data are never sent off your site. The download can be disabled
in Analytics  Settings  General. See the «External services» section above for full
details.

### Does this work with caching plugins?

Yes. The tracker script uses `admin-ajax.php` for data collection, which bypasses
page caching. It is compatible with common caching and optimization plugins.

### Where is the data stored?

All analytics data is stored in your WordPress database. Nothing is sent to external
servers (except the optional geolocation lookup).

### Can I export my data?

Yes. Every dashboard tab has a CSV export option.

## Отзывы

Нет отзывов об этом плагине.

## Участники и разработчики

«ZenMarkup Privacy Analytics» — проект с открытым исходным кодом. В развитие плагина
внесли свой вклад следующие участники:

Участники

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

[Перевести «ZenMarkup Privacy Analytics» на ваш язык.](https://translate.wordpress.org/projects/wp-plugins/zenmarkup-privacy-analytics)

### Заинтересованы в разработке?

[Посмотрите код](https://plugins.trac.wordpress.org/browser/zenmarkup-privacy-analytics/),
проверьте [SVN репозиторий](https://plugins.svn.wordpress.org/zenmarkup-privacy-analytics/),
или подпишитесь на [журнал разработки](https://plugins.trac.wordpress.org/log/zenmarkup-privacy-analytics/)
по [RSS](https://plugins.trac.wordpress.org/log/zenmarkup-privacy-analytics/?limit=100&mode=stop_on_copy&format=rss).

## Журнал изменений

#### 1.2.0

 * Geolocation now runs entirely on your own server. The plugin downloads a public
   IP geolocation database (DB-IP City Lite, CC-BY 4.0) from jsDelivr CDN about 
   once a month and resolves visitor country and city locally. Visitor IP addresses
   are never sent to a third-party service.
 * New «External services» section in the readme documents every outbound request
   the plugin can make.
 * Settings  General gains a «Geolocation» toggle (on by default) that fully disables
   external traffic when off, and an «Update database now» button with a status 
   block (Ready / Outdated / Downloading / error states).
 * Privacy disclosure page lists DB-IP and jsDelivr with the source URL, license,
   and a one-click way to disable.
 * Defeated stale-data caching across LiteSpeed Cache (private tier), Cloudflare
   APO, BunnyCDN, Varnish, Fastly, Akamai, nginx FastCGI and the WordPress object
   cache. Dashboard now reads fresh data on every load.
 * Dashboard JS in-memory cache now expires after 30 seconds instead of forever.
 * Asset URLs versioned via plugin version (matches WP core convention) so version
   bumps invalidate browser disk-cache cleanly.
 * Fixed map gradient legend showing duplicate «1» labels for sites with a single
   visitor.

#### 1.1.1

 * Fixed AJAX action names for the tracker fallback, custom event tracking, Clear
   All Data form and the test-email button (hooks were still registered under the
   old prefix after the 1.1.0 rename)
 * Shipped unminified JavaScript and CSS sources alongside the minified bundles
 * Moved third-party notices into the readme

#### 1.1.0

 * Renamed to ZenMarkup Privacy Analytics
 * Internal prefix migration (classes, functions, options, CSS, data attributes)
   to meet WordPress.org naming requirements
 * Rewrote plugin description in neutral, non-comparative tone
 * No functional changes — all features from 1.0.0 preserved

#### 1.0.0

 * Initial release
 * Cookieless visitor tracking
 * 4-tab dashboard (Overview, Traffic, Geography, Behavior)
 * Interactive Canvas line chart with metric toggle
 * Donut chart for new vs returning visitors
 * Interactive SVG world map with zoom and pan
 * UTM campaign tracking with automatic URL cleanup
 * Event tracking (outbound links, downloads, mailto, tel, 404)
 * Smart Insights (exit intelligence, dead pages, user journeys)
 * Weekly/monthly email reports
 * CSV export on every tab
 * Server-side geolocation from a self-hosted database (optional)
 * Role-based dashboard access control
 * Configurable data retention (7–365 days)
 * Compatibility with common caching plugins

## Мета

 *  Версия **1.2.0**
 *  Обновление: **15 часов назад**
 *  Активных установок: **Менее 10**
 *  Версия WordPress ** 5.6 или выше **
 *  Совместим вплоть до: **6.9.4**
 *  Версия PHP ** 7.4 или выше **
 *  Язык
 * [English (US)](https://wordpress.org/plugins/zenmarkup-privacy-analytics/)
 * Метки:
 * [analytics](https://ru.wordpress.org/plugins/tags/analytics/)[cookieless](https://ru.wordpress.org/plugins/tags/cookieless/)
   [GDPR](https://ru.wordpress.org/plugins/tags/gdpr/)[privacy](https://ru.wordpress.org/plugins/tags/privacy/)
   [statistics](https://ru.wordpress.org/plugins/tags/statistics/)
 *  [Дополнительно](https://ru.wordpress.org/plugins/zenmarkup-privacy-analytics/advanced/)

## Оценки

Пока что нет ни одного отзыва.

[Your review](https://wordpress.org/support/plugin/zenmarkup-privacy-analytics/reviews/#new-post)

[Посмотреть всеотзывы](https://wordpress.org/support/plugin/zenmarkup-privacy-analytics/reviews/)

## Участники

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

## Поддержка

Есть что сказать? Нужна помощь?

 [Перейти в форум поддержки](https://wordpress.org/support/plugin/zenmarkup-privacy-analytics/)