{"id":282138,"date":"2026-02-17T19:51:42","date_gmt":"2026-02-17T19:51:42","guid":{"rendered":"https:\/\/en-gb.wordpress.org\/plugins\/sfr-analytics\/"},"modified":"2026-03-23T13:14:19","modified_gmt":"2026-03-23T13:14:19","slug":"sfr-analytics","status":"publish","type":"plugin","link":"https:\/\/ibo.wordpress.org\/plugins\/sfr-analytics\/","author":23375978,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.7.1","stable_tag":"0.7.1","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"SFR Analytics","header_author":"Support From Richard","header_description":"Lightweight WordPress analytics tracking plugin that stores data locally on your site.","assets_banners_color":"e7ac01","last_updated":"2026-03-23 13:14:19","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/supportfromrichard.co.uk\/sfr-analytics\/","header_author_uri":"https:\/\/supportfromrichard.co.uk","rating":0,"author_block_rating":0,"active_installs":20,"downloads":484,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.5.0":{"tag":"0.5.0","author":"supportfromrichard","date":"2026-02-17 19:51:10"},"0.6.0":{"tag":"0.6.0","author":"supportfromrichard","date":"2026-02-18 07:07:10"},"0.6.1":{"tag":"0.6.1","author":"supportfromrichard","date":"2026-03-10 08:14:16"},"0.7.0":{"tag":"0.7.0","author":"supportfromrichard","date":"2026-03-12 12:52:00"},"0.7.1":{"tag":"0.7.1","author":"supportfromrichard","date":"2026-03-23 13:14:19"}},"upgrade_notice":{"0.7.1":"<p>Fixes the Top Referring Sites percentage to correctly reflect referral visitors instead of referral views.<\/p>","0.7.0":"<p>Adds the new Online Now dashboard panel with optional online-only auto-refresh controls.<\/p>","0.6.1":"<p>Added companion links to SFR Analytics Hub (free on WordPress.org) for multi-site reporting.<\/p>","0.5.0":"<p>Improved UTM Link Builder page picker with smarter filtering. Code quality improvements.<\/p>","0.4.0":"<p>New Campaign Manager, UTM Link Builder, and additional dashboard sections including entry\/exit pages, top referrers, and more REST API endpoints.<\/p>","0.3.0":"<p>IP and country exclusions, JavaScript verification for accurate human traffic counts, and expanded dashboard with device, browser, OS and geographic breakdowns.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3463796,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3463796,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3463796,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3463796,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.5.0","0.6.0","0.6.1","0.7.0","0.7.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3464970,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3464970,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3464952,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3464970,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3464952,"resolution":"5","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3464952,"resolution":"6","location":"assets","locale":""},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3464956,"resolution":"7","location":"assets","locale":""},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3464952,"resolution":"8","location":"assets","locale":""},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3464952,"resolution":"9","location":"assets","locale":""}},"screenshots":{"1":"<strong>Dashboard<\/strong> \u2014 Overview cards showing views, visitors, sessions, bounce rate, and engagement metrics with period comparison.","2":"<strong>Traffic Over Time<\/strong> \u2014 Interactive line chart with date presets (Today, 7 days, 30 days, 90 days) and custom ranges.","3":"<strong>Top Referring Sites<\/strong> \u2014 See which domains are sending traffic to your site with visitor counts and percentage breakdown.","4":"<strong>Campaign Performance<\/strong> \u2014 UTM campaign results with expandable source\/medium breakdown per campaign.","5":"<strong>UTM Link Builder<\/strong> \u2014 Visual tool to generate tracking URLs with page picker, preset sources\/mediums, and saved links.","6":"<strong>Entry &amp; Exit Pages<\/strong> \u2014 See where visitors land and where they leave your site.","7":"<strong>Device, Browser &amp; OS Breakdown<\/strong> \u2014 Understand what technology your visitors use.","8":"<strong>Geographic Distribution<\/strong> \u2014 Country-level visitor breakdown with chart and table.","9":"<strong>Settings<\/strong> \u2014 Configure tracking, privacy, IP\/country exclusions, data retention and more."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[232,7175,396,521,550],"plugin_category":[36,54],"plugin_contributors":[249032],"plugin_business_model":[],"class_list":["post-282138","plugin","type-plugin","status-publish","hentry","plugin_tags-analytics","plugin_tags-pageviews","plugin_tags-privacy","plugin_tags-statistics","plugin_tags-tracking","plugin_category-analytics","plugin_category-security-and-spam-protection","plugin_contributors-supportfromrichard","plugin_committers-supportfromrichard"],"banners":{"banner":"https:\/\/ps.w.org\/sfr-analytics\/assets\/banner-772x250.png?rev=3463796","banner_2x":"https:\/\/ps.w.org\/sfr-analytics\/assets\/banner-1544x500.png?rev=3463796","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sfr-analytics\/assets\/icon-128x128.png?rev=3463796","icon_2x":"https:\/\/ps.w.org\/sfr-analytics\/assets\/icon-256x256.png?rev=3463796","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/sfr-analytics\/assets\/screenshot-1.png?rev=3464970","caption":"<strong>Dashboard<\/strong> \u2014 Overview cards showing views, visitors, sessions, bounce rate, and engagement metrics with period comparison."},{"src":"https:\/\/ps.w.org\/sfr-analytics\/assets\/screenshot-2.png?rev=3464970","caption":"<strong>Traffic Over Time<\/strong> \u2014 Interactive line chart with date presets (Today, 7 days, 30 days, 90 days) and custom ranges."},{"src":"https:\/\/ps.w.org\/sfr-analytics\/assets\/screenshot-3.png?rev=3464952","caption":"<strong>Top Referring Sites<\/strong> \u2014 See which domains are sending traffic to your site with visitor counts and percentage breakdown."},{"src":"https:\/\/ps.w.org\/sfr-analytics\/assets\/screenshot-4.png?rev=3464970","caption":"<strong>Campaign Performance<\/strong> \u2014 UTM campaign results with expandable source\/medium breakdown per campaign."},{"src":"https:\/\/ps.w.org\/sfr-analytics\/assets\/screenshot-5.png?rev=3464952","caption":"<strong>UTM Link Builder<\/strong> \u2014 Visual tool to generate tracking URLs with page picker, preset sources\/mediums, and saved links."},{"src":"https:\/\/ps.w.org\/sfr-analytics\/assets\/screenshot-6.png?rev=3464952","caption":"<strong>Entry &amp; Exit Pages<\/strong> \u2014 See where visitors land and where they leave your site."},{"src":"https:\/\/ps.w.org\/sfr-analytics\/assets\/screenshot-7.png?rev=3464956","caption":"<strong>Device, Browser &amp; OS Breakdown<\/strong> \u2014 Understand what technology your visitors use."},{"src":"https:\/\/ps.w.org\/sfr-analytics\/assets\/screenshot-8.png?rev=3464952","caption":"<strong>Geographic Distribution<\/strong> \u2014 Country-level visitor breakdown with chart and table."},{"src":"https:\/\/ps.w.org\/sfr-analytics\/assets\/screenshot-9.png?rev=3464952","caption":"<strong>Settings<\/strong> \u2014 Configure tracking, privacy, IP\/country exclusions, data retention and more."}],"raw_content":"<!--section=description-->\n<p>SFR Analytics is a self-hosted analytics plugin for WordPress. All visitor data is stored in your own database \u2014 nothing is sent to third-party services. No cookies, no external scripts, no tracking pixels.<\/p>\n\n<p>Get a clear picture of your site's traffic without compromising your visitors' privacy.<\/p>\n\n<p>Need a central multi-site dashboard? Use the free <a href=\"https:\/\/wordpress.org\/plugins\/sfr-analytics-hub\/\">SFR Analytics Hub<\/a> plugin to aggregate analytics from multiple WordPress sites.<\/p>\n\n<h4>Dashboard at a Glance<\/h4>\n\n<ul>\n<li><strong>Views, Visitors, Sessions<\/strong> \u2014 core metrics with period-over-period comparison<\/li>\n<li><strong>Bounce Rate &amp; Pages per Session<\/strong> \u2014 engagement indicators<\/li>\n<li><strong>Traffic Over Time<\/strong> \u2014 interactive line chart with date range presets<\/li>\n<li><strong>Top Content<\/strong> \u2014 your most viewed posts and pages<\/li>\n<li><strong>Traffic Sources<\/strong> \u2014 where your visitors are coming from<\/li>\n<li><strong>Top Referring Sites<\/strong> \u2014 individual domains sending you traffic<\/li>\n<li><strong>Entry &amp; Exit Pages<\/strong> \u2014 first and last pages in each visit<\/li>\n<li><strong>Device Types<\/strong> \u2014 desktop, mobile and tablet breakdown<\/li>\n<li><strong>Browsers &amp; Operating Systems<\/strong> \u2014 which browsers and OS your visitors use<\/li>\n<li><strong>Geographic Distribution<\/strong> \u2014 visitor countries (only available if using a CDN like Cloudflare that provides country headers; all other tracking works without a CDN)<\/li>\n<li><strong>Campaign Performance<\/strong> \u2014 UTM campaign results with source\/medium drill-down<\/li>\n<li><strong>Online Now<\/strong> \u2014 on-demand live visitor count with optional online-only auto-refresh in the dashboard<\/li>\n<\/ul>\n\n<p>All dashboard sections are collapsible \u2014 show only what matters to you.<\/p>\n\n<h4>Campaign Manager &amp; UTM Link Builder<\/h4>\n\n<p>Plan and track marketing campaigns without leaving WordPress:<\/p>\n\n<ul>\n<li><strong>Create campaigns<\/strong> with notes and track their performance over time<\/li>\n<li><strong>Build UTM links<\/strong> with a visual tool \u2014 pick a page, choose source\/medium\/campaign, and get a ready-to-use URL<\/li>\n<li><strong>Smart page picker<\/strong> \u2014 search across all your content types with post type and category filtering<\/li>\n<li><strong>Preset sources and mediums<\/strong> \u2014 common options (Facebook, Google, newsletter, etc.) with clear descriptions<\/li>\n<li><strong>Save generated links<\/strong> for quick reference and reuse<\/li>\n<li><strong>Custom sources and mediums<\/strong> \u2014 add your own and they're saved for next time<\/li>\n<li><strong>Auto-lowercase<\/strong> campaign names to prevent data fragmentation<\/li>\n<\/ul>\n\n<h4>Smart Bot Detection<\/h4>\n\n<p>Not all traffic is human. SFR Analytics filters out noise automatically:<\/p>\n\n<ul>\n<li><strong>200+ known bot patterns<\/strong> \u2014 search engines, AI crawlers, SEO tools, monitoring bots, headless browsers, security scanners and more<\/li>\n<li><strong>JavaScript verification<\/strong> \u2014 a lightweight inline script confirms real browser execution, so bots that don't run JavaScript are never counted<\/li>\n<li><strong>Missing header detection<\/strong> \u2014 flags requests without User-Agent or Accept-Language headers<\/li>\n<li><strong>Filterable patterns<\/strong> \u2014 add your own via the <code>sfran_bot_patterns<\/code> filter<\/li>\n<\/ul>\n\n<p>The dashboard shows you exactly how much traffic was filtered: total requests vs verified human visits.<\/p>\n\n<h4>Privacy First<\/h4>\n\n<ul>\n<li><strong>No cookies<\/strong> \u2014 visitor identification uses anonymous hashed fingerprints<\/li>\n<li><strong>No PII stored<\/strong> \u2014 IP addresses are hashed (SHA-256), never stored in plain text<\/li>\n<li><strong>Optional IP anonymisation<\/strong> \u2014 strip the last octet before hashing<\/li>\n<li><strong>Do Not Track support<\/strong> \u2014 respects the browser DNT header when enabled<\/li>\n<li><strong>Local storage only<\/strong> \u2014 your data never leaves your server<\/li>\n<li><strong>Configurable retention<\/strong> \u2014 automatically delete data after 30 to 3,650 days<\/li>\n<li><strong>GDPR-ready privacy text<\/strong> \u2014 copy-paste paragraph for your privacy policy<\/li>\n<\/ul>\n\n<h4>IP &amp; Country Filtering<\/h4>\n\n<ul>\n<li>Exclude specific IP addresses or CIDR ranges (e.g. <code>192.168.1.0\/24<\/code>)<\/li>\n<li>One-click \"Ignore My IP\" button<\/li>\n<li>Exclude entire countries by country code<\/li>\n<li>Exclude logged-in users by role (administrators, editors, etc.)<\/li>\n<\/ul>\n\n<h4>REST API<\/h4>\n\n<p>A full set of authenticated REST API endpoints lets you access your analytics data programmatically:<\/p>\n\n<ul>\n<li><code>\/sfran\/v1\/summary<\/code> \u2014 overview stats with optional comparison<\/li>\n<li><code>\/sfran\/v1\/top-content<\/code> \u2014 most viewed content with pagination<\/li>\n<li><code>\/sfran\/v1\/traffic-sources<\/code> \u2014 referrer breakdown<\/li>\n<li><code>\/sfran\/v1\/time-series<\/code> \u2014 daily views\/visitors\/sessions<\/li>\n<li><code>\/sfran\/v1\/campaigns<\/code> \u2014 campaign performance<\/li>\n<li><code>\/sfran\/v1\/entry-pages<\/code> and <code>\/sfran\/v1\/exit-pages<\/code><\/li>\n<li><code>\/sfran\/v1\/referrers<\/code> \u2014 top referring domains<\/li>\n<li><code>\/sfran\/v1\/devices<\/code>, <code>\/sfran\/v1\/browsers<\/code>, <code>\/sfran\/v1\/geographic<\/code><\/li>\n<li><code>\/sfran\/v1\/online-now<\/code> \u2014 current active visitor count for the last N minutes (default 5)<\/li>\n<\/ul>\n\n<p>All endpoints require authentication (WordPress Application Passwords or other REST API auth) and the <code>manage_options<\/code> capability. Use these to build custom dashboards, export data, or integrate with other tools.<\/p>\n\n<h4>Performance<\/h4>\n\n<ul>\n<li><strong>Batch processing<\/strong> \u2014 pageviews are buffered and written in batches, reducing database load<\/li>\n<li><strong>Indexed tables<\/strong> \u2014 optimised queries for fast dashboard rendering<\/li>\n<li><strong>Lightweight frontend<\/strong> \u2014 a single inline verification script, no external files loaded for visitors<\/li>\n<li><strong>No impact on page speed<\/strong> \u2014 tracking uses <code>navigator.sendBeacon<\/code> (non-blocking)<\/li>\n<\/ul>\n\n<h4>Works with SFR Analytics Hub<\/h4>\n\n<p>SFR Analytics collects data on each individual site.<\/p>\n\n<p>For cross-site reporting, install the free <a href=\"https:\/\/wordpress.org\/plugins\/sfr-analytics-hub\/\">SFR Analytics Hub<\/a> on your main site.<\/p>\n\n<p>With SFR Analytics Hub, you can also view <strong>live online visitors across all connected sites<\/strong> from one central dashboard.<\/p>\n\n<p>The WordPress.org Hub edition supports up to 3 connected sites.<\/p>\n\n<p>Need more than 3 sites with the same workflow? See <a href=\"https:\/\/supportfromrichard.co.uk\/sfr-analytics\/\">SFR Analytics Hub Pro<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>sfr-analytics<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install directly from the WordPress plugin screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Database tables are created automatically on activation.<\/li>\n<li>Visit <strong>Analytics \u2192 Dashboard<\/strong> to see your data.<\/li>\n<li>If you manage multiple websites, install <a href=\"https:\/\/wordpress.org\/plugins\/sfr-analytics-hub\/\">SFR Analytics Hub<\/a> to view aggregated reporting in one dashboard.<\/li>\n<\/ol>\n\n<p>That's it \u2014 tracking begins immediately for all published pages and posts.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20send%20data%20to%20external%20services%3F\"><h3>Does this plugin send data to external services?<\/h3><\/dt>\n<dd><p>No. All data is stored locally in your WordPress database. No external API calls are made for tracking.<\/p><\/dd>\n<dt id=\"is%20this%20gdpr%20compliant%3F\"><h3>Is this GDPR compliant?<\/h3><\/dt>\n<dd><p>Yes. The plugin stores only anonymous hashed identifiers \u2014 no IP addresses, names, emails or any personally identifiable information. It also supports Do Not Track headers and provides ready-made privacy policy text.<\/p><\/dd>\n<dt id=\"does%20it%20use%20cookies%3F\"><h3>Does it use cookies?<\/h3><\/dt>\n<dd><p>No. Visitor and session identification is based on anonymised hashing of request headers, not cookies.<\/p><\/dd>\n<dt id=\"how%20does%20bot%20detection%20work%3F\"><h3>How does bot detection work?<\/h3><\/dt>\n<dd><p>Two layers: first, the User-Agent string is checked against 200+ known bot patterns. Second, a lightweight inline JavaScript verification confirms that the visitor is a real browser. Only verified pageviews appear in your dashboard stats.<\/p><\/dd>\n<dt id=\"can%20i%20exclude%20my%20own%20visits%3F\"><h3>Can I exclude my own visits?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Analytics \u2192 Settings<\/strong> and click the \"Ignore My IP\" button, or manually add IP addresses and CIDR ranges.<\/p><\/dd>\n<dt id=\"what%20is%20the%20campaign%20manager%3F\"><h3>What is the Campaign Manager?<\/h3><\/dt>\n<dd><p>A built-in tool to plan marketing campaigns and generate UTM-tagged URLs. When visitors arrive via those links, the campaign performance is tracked automatically and shown on your dashboard.<\/p><\/dd>\n<dt id=\"how%20does%20country%20detection%20work%3F\"><h3>How does country detection work?<\/h3><\/dt>\n<dd><p>Country detection relies on CDN headers (e.g. Cloudflare's <code>CF-IPCountry<\/code>). If your site is not behind a CDN that provides country headers, the geographic section will show no data \u2014 but all other tracking works normally.<\/p><\/dd>\n<dt id=\"can%20i%20control%20how%20long%20data%20is%20kept%3F\"><h3>Can I control how long data is kept?<\/h3><\/dt>\n<dd><p>Yes. In <strong>Analytics \u2192 Settings<\/strong>, set the retention period from 30 days to 10 years. Old data is cleaned up automatically via a daily scheduled task, or you can trigger cleanup manually.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20caching%20plugins%3F\"><h3>Does it work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. The tracking script runs client-side after the page loads, so it works correctly with page caching, CDN caching and server-side caching.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20down%20my%20site%3F\"><h3>Does it slow down my site?<\/h3><\/dt>\n<dd><p>No. The only frontend output is a small inline JavaScript snippet (no external files). It uses <code>navigator.sendBeacon<\/code> for non-blocking requests and does not affect page load time.<\/p><\/dd>\n<dt id=\"can%20i%20access%20analytics%20data%20programmatically%3F\"><h3>Can I access analytics data programmatically?<\/h3><\/dt>\n<dd><p>Yes. The plugin provides a full REST API with 11 endpoints. Authenticate with WordPress Application Passwords (or any REST API authentication method) and you can retrieve any data shown on the dashboard. Ideal for custom dashboards, reporting tools, or external integrations.<\/p><\/dd>\n<dt id=\"can%20i%20combine%20data%20from%20multiple%20sites%3F\"><h3>Can I combine data from multiple sites?<\/h3><\/dt>\n<dd><p>Yes. Install <a href=\"https:\/\/wordpress.org\/plugins\/sfr-analytics-hub\/\">SFR Analytics Hub<\/a> on a central WordPress site, then connect each site running SFR Analytics using WordPress Application Passwords (administrator account required on each feeder site).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.7.1<\/h4>\n\n<ul>\n<li>Fixed: Top Referring Sites % now correctly represents % of referral visitors (not views)<\/li>\n<li>Updated: Hub-aligned Online Now + UI wording and review prompt improvements for admins<\/li>\n<li>Updated: Referral and traffic-source percentage labels for clarity<\/li>\n<\/ul>\n\n<h4>0.7.0<\/h4>\n\n<ul>\n<li>Added: Online Now panel on the SFR Analytics dashboard with one-click live visitor checks<\/li>\n<li>Added: Online-only auto-refresh toggle (off by default) with 15s\/30s\/60s interval options<\/li>\n<li>Improved: Online controls moved to a dedicated row so date-range refresh and live checks are clearly separated<\/li>\n<li>Improved: Companion workflow with SFR Analytics Hub for cross-site live visibility<\/li>\n<\/ul>\n\n<h4>0.6.1<\/h4>\n\n<ul>\n<li>Added: Companion links for the free SFR Analytics Hub plugin in readme and admin UI<\/li>\n<li>Added: Plugin row meta links for Hub (free) and Hub Pro (more than 3 sites)<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>Added referral spam filtering \u2014 built-in blocklist of 30+ known ghost referrer domains, auto-cleanup on upgrade<\/li>\n<li>Added manual referrer domain blocking via Settings with one-click add\/remove<\/li>\n<li>Added IP address tracking with anonymisation support (respects existing anonymize-IP setting)<\/li>\n<li>Added IP address column to database schema with automatic migration<\/li>\n<li>Added self-referral filtering \u2014 own domain no longer appears in Top Referring Sites<\/li>\n<li>Added \"Last 24 Hours\" date preset button on the dashboard<\/li>\n<li>Added country flag emoji and full country names in the Geographic Distribution table<\/li>\n<li>Added icons for traffic source types (Direct, Search Engines, Social Media, Referral Sites)<\/li>\n<li>Added recognisable icons for popular referring domains (Google, Facebook, Twitter\/X, YouTube, LinkedIn, Reddit, Pinterest, Bing, etc.)<\/li>\n<li>Added REST API <code>\/bulk<\/code> endpoint \u2014 returns all data types in a single request<\/li>\n<li>Added REST API <code>\/daily<\/code> endpoint \u2014 returns per-day snapshots for external integrations<\/li>\n<li>Added human traffic percentage to summary stats API response<\/li>\n<li>Improved referral percentage display to 1 decimal place<\/li>\n<li>Improved Top Referring Sites description text<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Improved page picker filtering for UTM Link Builder \u2014 excludes password-protected pages, functional pages, and non-content post types<\/li>\n<li>Updated readme for WordPress.org submission<\/li>\n<li>Code quality and compatibility improvements<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Added Campaign Manager for creating and tracking marketing campaigns<\/li>\n<li>Added UTM Link Builder with smart page picker, preset sources\/mediums, and saved links<\/li>\n<li>Added Campaign Performance dashboard section with source\/medium drill-down<\/li>\n<li>Added Top Referring Sites dashboard section (individual domains)<\/li>\n<li>Added Entry Pages and Exit Pages dashboard sections<\/li>\n<li>Added REST API endpoints for campaigns, entry\/exit pages, referrers, devices, browsers, and geographic data<\/li>\n<li>Added smart page picker with AJAX search, post type filtering, and category filtering<\/li>\n<li>Added content-based filtering to exclude functional pages from the page picker<\/li>\n<li>Improved bot detection patterns<\/li>\n<li>Improved PHPCS compliance and security hardening<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Added IP address exclusion with CIDR range support<\/li>\n<li>Added one-click \"Ignore My IP\" button<\/li>\n<li>Added country exclusion for geographic filtering<\/li>\n<li>Added settings help documentation<\/li>\n<li>Added JavaScript verification for human traffic confirmation<\/li>\n<li>Added Device Types, Browser, OS, and Geographic dashboard sections<\/li>\n<li>Added Traffic Over Time chart<\/li>\n<li>Added Bounce Rate and Pages per Session metrics<\/li>\n<li>Improved bot detection with 200+ patterns including AI crawlers<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added collapsible dashboard sections with persistent preferences<\/li>\n<li>Added Traffic Sources chart and table<\/li>\n<li>Added data retention settings and manual cleanup<\/li>\n<li>Added user role exclusion from tracking<\/li>\n<li>Added Do Not Track header support<\/li>\n<li>Added IP anonymisation option<\/li>\n<li>Added privacy policy text generator<\/li>\n<li>Performance improvements with batch processing and buffer system<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Pageview tracking with visitor and session identification<\/li>\n<li>Admin dashboard with overview statistics<\/li>\n<li>Top Content report<\/li>\n<li>REST API endpoints (summary, top-content, traffic-sources, time-series)<\/li>\n<li>Bot detection and filtering<\/li>\n<li>Session tracking with configurable timeout<\/li>\n<li>GDPR-compliant privacy handling<\/li>\n<li>Data stored locally \u2014 no external services<\/li>\n<\/ul>","raw_excerpt":"Lightweight, privacy-focused WordPress analytics. Track pageviews, visitors, campaigns and more \u2014 all data stored locally in your own database.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/282138","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=282138"}],"author":[{"embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/supportfromrichard"}],"wp:attachment":[{"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=282138"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=282138"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=282138"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=282138"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=282138"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ibo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=282138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}