{"id":387445,"date":"2026-10-17T22:13:22","date_gmt":"2026-10-17T22:13:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/saddle-analytics\/"},"modified":"2026-10-17T22:13:04","modified_gmt":"2026-10-17T22:13:04","slug":"saddle-analytics","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/saddle-analytics\/","author":8610910,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.9","requires_php":"8.1","requires_plugins":null,"header_name":"Saddle Analytics","header_author":"PlugPress","header_description":"Self-hosted analytics for WordPress: visitors, sources, pages and AI traffic, with nothing sent anywhere else.","assets_banners_color":"fcfcfc","last_updated":"2026-10-17 22:13:04","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/saddle.to","rating":0,"author_block_rating":0,"active_installs":0,"downloads":86,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"badhonrocks","date":"2026-10-17 22:13:04","revision":3752401}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3752401,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3752401,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3752401,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3752401,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3752401,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3752401,"resolution":"1","location":"assets","locale":"","width":1280,"height":853},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3752401,"resolution":"2","location":"assets","locale":"","width":1280,"height":1029},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3752401,"resolution":"3","location":"assets","locale":"","width":1280,"height":545},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3752401,"resolution":"4","location":"assets","locale":"","width":1280,"height":853},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3752401,"resolution":"5","location":"assets","locale":"","width":1280,"height":853},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3752401,"resolution":"6","location":"assets","locale":"","width":1280,"height":853}},"screenshots":{"1":"Your totals on one page, over a chart of visitors and page views.","2":"Sources, pages, countries and devices. Click a row to filter the whole page.","3":"The AI bots that read your site, and your latest visitors with made-up names and faces.","4":"Details: the full list behind a card, with search.","5":"One visitor's path: where they came from and every page they opened.","6":"Settings: cookies, which visit gets the credit, and how long page views are kept."}},"plugin_section":[262246],"plugin_tags":[2353,232,20315,396,521],"plugin_category":[36,54],"plugin_contributors":[203414],"plugin_business_model":[],"class_list":["post-387445","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","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-badhonrocks","plugin_committers-badhonrocks"],"banners":{"banner":"https:\/\/ps.w.org\/saddle-analytics\/assets\/banner-772x250.png?rev=3752401","banner_2x":"https:\/\/ps.w.org\/saddle-analytics\/assets\/banner-1544x500.png?rev=3752401","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/saddle-analytics\/assets\/icon.svg?rev=3752401","icon":"https:\/\/ps.w.org\/saddle-analytics\/assets\/icon.svg?rev=3752401","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/saddle-analytics\/assets\/screenshot-1.png?rev=3752401","caption":"Your totals on one page, over a chart of visitors and page views."},{"src":"https:\/\/ps.w.org\/saddle-analytics\/assets\/screenshot-2.png?rev=3752401","caption":"Sources, pages, countries and devices. Click a row to filter the whole page."},{"src":"https:\/\/ps.w.org\/saddle-analytics\/assets\/screenshot-3.png?rev=3752401","caption":"The AI bots that read your site, and your latest visitors with made-up names and faces."},{"src":"https:\/\/ps.w.org\/saddle-analytics\/assets\/screenshot-4.png?rev=3752401","caption":"Details: the full list behind a card, with search."},{"src":"https:\/\/ps.w.org\/saddle-analytics\/assets\/screenshot-5.png?rev=3752401","caption":"One visitor's path: where they came from and every page they opened."},{"src":"https:\/\/ps.w.org\/saddle-analytics\/assets\/screenshot-6.png?rev=3752401","caption":"Settings: cookies, which visit gets the credit, and how long page views are kept."}],"raw_content":"<!--section=description-->\n<p>Saddle Analytics shows who visits your site and what they do there. It counts visits without cookies. All the data stays in your own database.<\/p>\n\n<p>It also counts something most stats tools miss: people sent to you by AI chat apps like ChatGPT, Claude and Perplexity.<\/p>\n\n<h4>Everything on one page<\/h4>\n\n<p>Open <strong>Saddle \u2192 Analytics<\/strong>. All your stats are on a single screen, with no menus to dig through.<\/p>\n\n<ul>\n<li>Totals: visitors, visits, page views, time on site and bounce rate (visits that saw only one page).<\/li>\n<li>Change: how each total moved since the period before.<\/li>\n<li>Chart: visitors and page views for each day.<\/li>\n<li>Online now: who visited in the last 30 minutes. A small box on your WordPress Dashboard shows this too.<\/li>\n<li>Filters: click a source, country or browser, and every number on the page shows only those visitors.<\/li>\n<li>Details: open any card as a full list, with search.<\/li>\n<\/ul>\n\n<h4>Where visitors come from<\/h4>\n\n<ul>\n<li>Channels: AI, search, social, paid, email, other sites and direct.<\/li>\n<li>Referrers: the sites that link to you.<\/li>\n<li>Campaigns: the UTM tags you add to your own links.<\/li>\n<li>Pages: your top pages, the first page of each visit and the last one.<\/li>\n<li>Exit links: links to other sites that visitors click.<\/li>\n<li>Audience: country, browser, operating system and device.<\/li>\n<\/ul>\n\n<h4>AI traffic<\/h4>\n\n<p>More people now find websites through AI chat apps. Saddle Analytics puts those visits in their own channel, called AI, at the top of the list. It knows ChatGPT, Claude, Perplexity, Gemini, Copilot, DeepSeek, Grok and more.<\/p>\n\n<p>AI bots also read your pages, and the AI crawlers card shows which ones. It sorts them by why they came:<\/p>\n\n<ul>\n<li>Training: collecting pages to train AI models.<\/li>\n<li>Indexing: building an AI search engine.<\/li>\n<li>Answers: fetching a page because someone just asked a question about it.<\/li>\n<\/ul>\n\n<h4>One visitor at a time<\/h4>\n\n<p>Each visitor gets a made-up name and a little face. Click one to see their path: where they came from, and every page they opened, in order. You never see a real name, email or IP address.<\/p>\n\n<h4>Light tracker<\/h4>\n\n<p>The tracking script is under 1 KB. It loads after the rest of the page. It sends small messages to your own site only.<\/p>\n\n<h4>Settings<\/h4>\n\n<ul>\n<li>Remember returning visitors: off by default. Turn it on to use a cookie and count returning visitors across days.<\/li>\n<li>Credit a returning visitor to: the source of their first visit, or of their latest one.<\/li>\n<li>Keep page views for: 90 days by default, anywhere from 7 days to 3 years.<\/li>\n<li>Count logged-in admins: off by default, so your own visits do not count.<\/li>\n<li>Delete all data on uninstall: off by default.<\/li>\n<\/ul>\n\n<h4>Ask your AI assistant<\/h4>\n\n<p>Saddle Analytics works inside <a href=\"https:\/\/wordpress.org\/plugins\/saddle\/\">Saddle<\/a>, a free plugin that connects AI assistants to your site. Connect one, such as Claude, ChatGPT or Cursor. Then ask it: \"How many visitors came from ChatGPT this week?\" It answers from the same numbers you see on the page. Saddle Analytics gives it nine tools that can only read. They cannot change anything.<\/p>\n\n<h4>For developers<\/h4>\n\n<ul>\n<li>WP-CLI: <code>wp saddle-analytics<\/code> prints every report, checks your setup and runs the move from Loggle.<\/li>\n<li>Hooks: add your own AI apps with <code>saddle_analytics_ai_referrers<\/code> and your own bots with <code>saddle_analytics_bots<\/code>.<\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<ul>\n<li>Saved in your own database: visitor counts, page paths, referring sites, UTM campaign names, links to other sites that visitors click, country, browser, operating system and device type.<\/li>\n<li>IP addresses are never saved. Without cookies, a visitor is known only by a code that changes every day (see \"How does it count visitors without cookies?\").<\/li>\n<li>Country comes from Cloudflare's <code>CF-IPCountry<\/code> header, and only when the request really came through Cloudflare.<\/li>\n<li>With \"Remember returning visitors\" on, it sets two first-party, HTTP-only cookies: <code>_saddle_analytics_v<\/code> (a random id, 1 year) and <code>_saddle_analytics_s<\/code> (a random session id, 30 minutes).<\/li>\n<li>Visitors who send Do Not Track or Global Privacy Control are not counted.<\/li>\n<li>Page views are deleted after the number of days you choose. A short summary of each visitor (first and last source, landing page, country, browser, operating system, device and totals) stays until you delete the plugin's data.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>None. Saddle Analytics sends no data off your site. It loads no scripts, fonts or images from other servers.<\/p>\n\n<h3>Source code<\/h3>\n\n<p>The admin screens are built from the source files in the plugin's <code>src\/<\/code> folder. <code>package.json<\/code> and <code>package-lock.json<\/code> are included. To rebuild them, run <code>npm ci &amp;&amp; npm run build<\/code> (it uses <code>@wordpress\/scripts<\/code>). The interface parts come from Saddle at runtime and are not bundled. The tracker, <code>assets\/tracker.js<\/code>, is plain JavaScript and is not compiled.<\/p>\n\n<h3>Credits<\/h3>\n\n<ul>\n<li>Charts: <a href=\"https:\/\/www.chartjs.org\/\">Chart.js<\/a>, MIT License.<\/li>\n<li>Country flags: <a href=\"https:\/\/gitlab.com\/catamphetamine\/country-flag-icons\">country-flag-icons<\/a>, MIT License (see <code>assets\/flags\/LICENSE<\/code>).<\/li>\n<li>Channel icons: <a href=\"https:\/\/simpleicons.org\/\">Simple Icons<\/a>, CC0.<\/li>\n<li>Full licence texts: <code>THIRD-PARTY-LICENSES.txt<\/code>.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong> and install Saddle and Saddle Analytics. Both are free.<\/li>\n<li>Activate both. Counting starts right away.<\/li>\n<li>In the admin menu, go to <strong>Saddle \u2192 Analytics<\/strong>.<\/li>\n<li>To change settings, click the gear icon at the top of the page.<\/li>\n<\/ol>\n\n<p>If your site uses a page cache, clear it once so your pages load the tracker.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20saddle%3F\"><h3>Do I need Saddle?<\/h3><\/dt>\n<dd><p>Yes. Saddle Analytics is a page inside Saddle, so WordPress asks you to install Saddle first. If Saddle is ever turned off, visits are still counted, and Saddle Analytics shows a page that helps you get Saddle back.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20cookie%20banner%3F\"><h3>Do I need a cookie banner?<\/h3><\/dt>\n<dd><p>Not for Saddle Analytics in its default mode, because it stores nothing on your visitor's device. If you turn on \"Remember returning visitors\", it sets a cookie, and in the EU and UK that usually needs consent. Other plugins on your site may still need a banner. This is not legal advice.<\/p><\/dd>\n<dt id=\"how%20does%20it%20count%20visitors%20without%20cookies%3F\"><h3>How does it count visitors without cookies?<\/h3><\/dt>\n<dd><p>It mixes the visitor's IP address and browser with a secret that changes every day, and keeps only the result. Each day's secret is deleted, so the result can't be traced back to the IP address later. The cost: someone who comes back tomorrow counts as a new visitor.<\/p><\/dd>\n<dt id=\"why%20do%20some%20ai%20visits%20show%20as%20direct%3F\"><h3>Why do some AI visits show as Direct?<\/h3><\/dt>\n<dd><p>Some AI apps open links without saying where the visitor came from. When that happens, no tool can tell, so the visit counts as Direct. Every visit that does name an AI app counts as AI.<\/p><\/dd>\n<dt id=\"why%20is%20the%20country%20card%20empty%3F\"><h3>Why is the Country card empty?<\/h3><\/dt>\n<dd><p>Country comes from Cloudflare. If your site is not behind Cloudflare, the card stays empty. Saddle Analytics never looks up IP addresses.<\/p><\/dd>\n<dt id=\"i%20used%20loggle.%20what%20happens%3F\"><h3>I used Loggle. What happens?<\/h3><\/dt>\n<dd><p>Saddle Analytics replaces Loggle. When you activate it, it turns Loggle off and copies over your visitors, page views, exit links, AI bot history and settings. Then it deletes Loggle's data from your database. Revenue and goal records are not copied. The move runs in the background while you use wp-admin, or all at once with <code>wp saddle-analytics migrate<\/code>. Your site keeps using cookies, so your numbers carry on. When it is done, a notice offers to delete Loggle.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release, replacing Loggle.<\/li>\n<li>Counts visitors without cookies by default.<\/li>\n<li>One page with your totals, a chart and cards for sources, pages, countries, devices, AI bots and visitors.<\/li>\n<li>AI chat apps get their own channel.<\/li>\n<li>Each visitor gets a made-up name and face.<\/li>\n<li>Nine read-only tools let AI assistants read your stats through Saddle.<\/li>\n<li>Moves your data from Loggle, then deletes Loggle's copy.<\/li>\n<li>Left behind from Loggle: revenue tracking, goals and the licence code.<\/li>\n<\/ul>","raw_excerpt":"Cookieless site stats kept in your own database. See who visits, what they read, and how many people AI chat apps send you.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/387445","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=387445"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/badhonrocks"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=387445"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=387445"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=387445"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=387445"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=387445"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=387445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}