{"id":386544,"date":"2026-10-20T12:48:51","date_gmt":"2026-10-20T12:48:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bobr-analytics\/"},"modified":"2026-10-20T15:06:50","modified_gmt":"2026-10-20T15:06:50","slug":"bobr-analytics","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/bobr-analytics\/","author":23585508,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.0","stable_tag":"1.3.0","tested":"7.1.3","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Bobr Analytics","header_author":"Ekaterina Lopatina","header_description":"Self-hosted website statistics without cookies or third-party services: visitors, sources, AI assistants, bots, geography, page speed. Data stays in this site's database.","assets_banners_color":"","last_updated":"2026-10-20 15:06:50","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/LopatinaDVP\/bobr-analytics","header_author_uri":"https:\/\/lop-pa.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":41,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.0":{"tag":"1.3.0","author":"loppadvp","date":"2026-10-20 15:06:50","revision":3756969}},"upgrade_notice":{"1.3.0":"<p>English interface, ready for translation.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3756761,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3756761,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3756969,"resolution":"1","location":"assets","locale":"","width":1280,"height":720},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3756969,"resolution":"2","location":"assets","locale":"","width":1280,"height":720},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3756969,"resolution":"3","location":"assets","locale":"","width":1280,"height":720},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3756969,"resolution":"4","location":"assets","locale":"","width":1280,"height":720},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3756969,"resolution":"5","location":"assets","locale":"","width":1280,"height":720},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3756969,"resolution":"6","location":"assets","locale":"","width":1280,"height":720},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3756969,"resolution":"7","location":"assets","locale":"","width":1280,"height":720},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3756969,"resolution":"8","location":"assets","locale":"","width":1280,"height":720}},"screenshots":{"1":"Sources: where people come from.","2":"AI assistants: who arrives from ChatGPT and friends.","3":"Bots: who is reading your site.","4":"Speed: real measurements from real visitors.","5":"Events: calls, leads and abandoned forms.","6":"Charts by day, week or month.","7":"No cookies, the data stays in your database.","8":"What the beaver does not know."}},"plugin_section":[],"plugin_tags":[2353,232,20315,396,521],"plugin_category":[36,54],"plugin_contributors":[287709],"plugin_business_model":[],"class_list":["post-386544","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-analytics","plugin_tags-cookieless","plugin_tags-privacy","plugin_tags-statistics","plugin_category-analytics","plugin_category-security-and-spam-protection","plugin_contributors-loppadvp","plugin_committers-loppadvp"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bobr-analytics\/assets\/icon-128x128.png?rev=3756761","icon_2x":"https:\/\/ps.w.org\/bobr-analytics\/assets\/icon-256x256.png?rev=3756761","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bobr-analytics\/assets\/screenshot-1.png?rev=3756969","caption":"Sources: where people come from."},{"src":"https:\/\/ps.w.org\/bobr-analytics\/assets\/screenshot-2.png?rev=3756969","caption":"AI assistants: who arrives from ChatGPT and friends."},{"src":"https:\/\/ps.w.org\/bobr-analytics\/assets\/screenshot-3.png?rev=3756969","caption":"Bots: who is reading your site."},{"src":"https:\/\/ps.w.org\/bobr-analytics\/assets\/screenshot-4.png?rev=3756969","caption":"Speed: real measurements from real visitors."},{"src":"https:\/\/ps.w.org\/bobr-analytics\/assets\/screenshot-5.png?rev=3756969","caption":"Events: calls, leads and abandoned forms."},{"src":"https:\/\/ps.w.org\/bobr-analytics\/assets\/screenshot-6.png?rev=3756969","caption":"Charts by day, week or month."},{"src":"https:\/\/ps.w.org\/bobr-analytics\/assets\/screenshot-7.png?rev=3756969","caption":"No cookies, the data stays in your database."},{"src":"https:\/\/ps.w.org\/bobr-analytics\/assets\/screenshot-8.png?rev=3756969","caption":"What the beaver does not know."}],"raw_content":"<!--section=description-->\n<p>Bobr Analytics collects website statistics directly into your WordPress database. No cookies, no localStorage, no external analytics service. If a big analytics provider goes down, your statistics keep working as long as your site does.<\/p>\n\n<p>It works next to Google Analytics or any other counter and does not touch them.<\/p>\n\n<p>https:\/\/www.youtube.com\/watch?v=J7-3pvcYABo<\/p>\n\n<h4>A tour of the dashboard<\/h4>\n\n<p>The plugin adds a Bobr Analytics menu to the WordPress admin with 15 sections. At the top of every section you choose the period (today, yesterday, 7 days, 30 days, this month or your own dates), the chart step (by day, week or month), turn on comparison with the previous period and filter by source type, device, city or page. Every table has search, sorting, pagination and CSV export.<\/p>\n\n<ul>\n<li><strong>Summary.<\/strong> Visitors, visits, pageviews, bounce rate, pages per visit and time on site, with the change against the previous period. Traffic chart, visits by source type, top sources and top entry pages. A switch shows the same numbers for bots instead of people.<\/li>\n<li><strong>Entry pages.<\/strong> Pages where visits start, with bounce rate and time. Click a page to see its own chart and where its visitors came from.<\/li>\n<li><strong>All pages and exits.<\/strong> Every page with pageviews, visits, time on page and scroll depth, plus the pages where visits end.<\/li>\n<li><strong>Sources.<\/strong> Search engines, social networks, other websites, direct visits, internal navigation and UTM campaigns, each with a chart and a table. Click a source to see which pages it brings people to.<\/li>\n<li><strong>AI assistants.<\/strong> Visits from ChatGPT, Perplexity, Gemini, Claude, Copilot, DeepSeek, Alice, GigaChat and other assistants, and the pages of your site they link to.<\/li>\n<li><strong>Bots.<\/strong> Search engine crawlers and AI agents: requests, pages, errors, last visit, a heat map of when they come and a list of what AI agents read.<\/li>\n<li><strong>Geography.<\/strong> Countries, regions and cities, and the top five cities over time. Without any setup the country is estimated from the browser time zone; cities need the free offline city database.<\/li>\n<li><strong>Technology.<\/strong> Devices, operating systems, browsers and screen widths, and the mobile and desktop share over time.<\/li>\n<li><strong>Time.<\/strong> Heat map by day of the week and hour, visits by hour and by weekday, in the site time zone.<\/li>\n<li><strong>Behavior.<\/strong> Visible time on page and scroll depth over time, which pages people read to 75 percent and which ones they leave within 10 seconds.<\/li>\n<li><strong>Events.<\/strong> Phone and email link clicks, outbound links, submitted and abandoned forms, and the pages where they happen.<\/li>\n<li><strong>404 errors.<\/strong> Missing addresses that real visitors hit and where they came from.<\/li>\n<li><strong>Speed.<\/strong> Server response, first paint, LCP, INP and CLS measured on real visitors, 75th percentile, colored by the Google Core Web Vitals thresholds, for the whole site and for each page.<\/li>\n<li><strong>Live now.<\/strong> Visits in the last 30 minutes with entry page, current page, source, device and city.<\/li>\n<li><strong>Settings.<\/strong> User roles that are not counted, your own IP addresses, data retention, city detection, bot recording, the city database and recalculation of daily totals.<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<ul>\n<li>No cookies and no localStorage.<\/li>\n<li>IP addresses are never stored. When city detection is enabled, the IP is used once to look up the city in a local file and then discarded.<\/li>\n<li>The full user agent string is never stored, only device type, operating system and browser.<\/li>\n<li>A visitor is identified by a hash of IP, user agent, site address and a random salt that changes every day. The previous salt is deleted, so a visitor can be recognized only within one day.<\/li>\n<li>Form field values, phone numbers and email addresses are never read or sent.<\/li>\n<li>Logged-in administrators, editors and shop managers are not counted by default.<\/li>\n<\/ul>\n\n<h4>What it does not show<\/h4>\n\n<ul>\n<li><strong>Search queries.<\/strong> Only search engines know them, in their webmaster tools.<\/li>\n<li><strong>Gender and age.<\/strong> Large services infer them from cross-site profiles. This plugin sees only your site and uses no cookies.<\/li>\n<\/ul>\n\n<h4>Languages<\/h4>\n\n<p>The plugin is translation ready. Translations are delivered through translate.wordpress.org, the interface language follows the site language.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin can download the free <strong>DB-IP IP to City Lite<\/strong> database to detect visitor cities. The download happens only when an administrator clicks the Download the city database button in Bobr Analytics, Settings. The plugin then requests a single file from db-ip.com (<code>https:\/\/download.db-ip.com\/free\/dbip-city-lite-YYYY-MM.mmdb.gz<\/code>). No visitor data and no site data are sent in this request. The file is stored in <code>wp-content\/uploads\/bobr\/<\/code> and all lookups happen locally on your server.<\/p>\n\n<p>The database is provided by DB-IP under the Creative Commons Attribution 4.0 license.<\/p>\n\n<ul>\n<li>DB-IP website: https:\/\/db-ip.com<\/li>\n<li>Terms of use and license: https:\/\/db-ip.com\/db\/download\/ip-to-city-lite<\/li>\n<\/ul>\n\n<p>The plugin makes no other external requests. The tracking script sends data only to your own site (<code>\/wp-json\/bobr\/v1\/hit<\/code>).<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In the WordPress admin go to Plugins, Add New Plugin and search for Bobr Analytics, or upload the plugin zip file.<\/li>\n<li>Install and activate the plugin.<\/li>\n<li>The tracker is added to your pages automatically, no code is needed. Open Bobr Analytics in the admin menu.<\/li>\n<li>Optional: in Bobr Analytics, Settings, exclude your own IP addresses and download the city database.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20need%20a%20cookie%20banner%3F\"><h3>Does it need a cookie banner?<\/h3><\/dt>\n<dd><p>The plugin sets no cookies and stores nothing in the visitor's browser. Whether you need a consent banner depends on the laws that apply to your site, please check them.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20caching%3F\"><h3>Does it work with page caching?<\/h3><\/dt>\n<dd><p>Yes for people: the tracker runs in the browser. Bots are recorded on the server side, so bot visits to cached pages are not counted. The settings page shows whether a page cache is active.<\/p><\/dd>\n<dt id=\"why%20is%20the%20number%20of%20visitors%20over%20a%20week%20higher%20than%20expected%3F\"><h3>Why is the number of visitors over a week higher than expected?<\/h3><\/dt>\n<dd><p>Without cookies a visitor is recognized only within one day, so visitors over several days are the sum of daily visitors.<\/p><\/dd>\n<dt id=\"how%20long%20is%20data%20kept%3F\"><h3>How long is data kept?<\/h3><\/dt>\n<dd><p>Detailed records are kept for 180 days by default (configurable from 30 to 1095 days) and deleted at night. Daily totals without personal data are kept forever.<\/p><\/dd>\n<dt id=\"how%20do%20i%20remove%20all%20data%3F\"><h3>How do I remove all data?<\/h3><\/dt>\n<dd><p>Data is kept when the plugin is deleted, so statistics are not lost by accident. To remove everything, drop the tables <code>wp_bobr_visits<\/code>, <code>wp_bobr_hits<\/code>, <code>wp_bobr_events<\/code>, <code>wp_bobr_bots<\/code>, <code>wp_bobr_daily<\/code> (with your table prefix), delete the options <code>bobr_settings<\/code>, <code>bobr_db_ver<\/code>, <code>bobr_salt<\/code>, <code>bobr_geo_updated<\/code> and the folder <code>wp-content\/uploads\/bobr\/<\/code>.<\/p><\/dd>\n<dt id=\"where%20can%20i%20report%20a%20bug%3F\"><h3>Where can I report a bug?<\/h3><\/dt>\n<dd><p>On GitHub: https:\/\/github.com\/LopatinaDVP\/bobr-analytics\/issues<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>English interface, ready for translation.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Settings and Feedback links on the Plugins page.<\/li>\n<li>Whole numbers on chart axes.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Charts by day, week or month for all sections.<\/li>\n<li>Device share, top cities, speed and visitor actions over time.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Self-hosted website statistics without cookies: visits, sources, AI referrals, bots, geography and page speed in your own database.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/386544","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=386544"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/loppadvp"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=386544"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=386544"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=386544"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=386544"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=386544"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=386544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}