diff --git a/lang/en.json b/lang/en.json
index ad60dd48cea..967bc7b1327 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -2,6 +2,7 @@
"General": {
"12HourClock": "12-hour clock",
"24HourClock": "24-hour clock",
+ "AIAssistants": "AI Assistants",
"API": "API",
"AbandonedCarts": "Abandoned Carts",
"AboutPiwikX": "About Matomo %s",
diff --git a/plugins/AIAgents/Categories/AIAgentsOverviewSubcategory.php b/plugins/AIAgents/Categories/AIAgentsOverviewSubcategory.php
new file mode 100644
index 00000000000..1d2114cc1cc
--- /dev/null
+++ b/plugins/AIAgents/Categories/AIAgentsOverviewSubcategory.php
@@ -0,0 +1,30 @@
+%1$s
',
+ Piwik::translate('AIAgents_AIAgentsOverviewSubcategoryDescription')
+ );
+ }
+}
diff --git a/plugins/AIAgents/Categories/AIAssistantsOverviewSubcategory.php b/plugins/AIAgents/Categories/AIAssistantsOverviewSubcategory.php
deleted file mode 100644
index 682defe12e7..00000000000
--- a/plugins/AIAgents/Categories/AIAssistantsOverviewSubcategory.php
+++ /dev/null
@@ -1,32 +0,0 @@
-%1$s%2$s
%3$s
',
- Piwik::translate('AIAgents_AIAssistantsOverviewHelp1'),
- Piwik::translate('AIAgents_AIAssistantsOverviewHelp2'),
- Piwik::translate('AIAgents_AIAssistantsOverviewHelp3')
- );
- }
-}
diff --git a/plugins/AIAgents/Reports/Get.php b/plugins/AIAgents/Reports/Get.php
index 73a912d751b..145de78685e 100644
--- a/plugins/AIAgents/Reports/Get.php
+++ b/plugins/AIAgents/Reports/Get.php
@@ -31,8 +31,8 @@ protected function init()
parent::init();
$this->name = Piwik::translate('AIAgents_AIAgentVisits');
- $this->categoryId = 'AIAgents_AIAssistants';
- $this->subcategoryId = 'General_Overview';
+ $this->categoryId = 'General_AIAssistants';
+ $this->subcategoryId = 'AIAgents_AIAgentsOverview';
$this->order = 10;
$this->processedMetrics = [
diff --git a/plugins/AIAgents/lang/en.json b/plugins/AIAgents/lang/en.json
index ce1b56ab425..1acac348aa8 100644
--- a/plugins/AIAgents/lang/en.json
+++ b/plugins/AIAgents/lang/en.json
@@ -1,9 +1,10 @@
{
"AIAgents": {
"AIAgentName": "AI Agent Name",
+ "AIAgentsOverview": "AI Agents Overview",
"AIAgentVisits": "AI Agent Visits",
"AIAgentVisitsDocumentation": "This is an overview of AI Agent visits. AI agent traffic only includes visits where an AI opens your site in a real browser and behaves like a human visitor. It does not include background requests from ChatGPT or other AI tools that fetch your pages without using a browser.",
- "AIAssistants": "AI Assistants",
+ "AIAgentsOverviewSubcategoryDescription": "Review how AI agents and human visitors engage with your site at a glance. This overview surfaces combined metrics and trends so you can quickly spot changes before exploring detailed reports.",
"AIAssistantsOverviewHelp1": "The AI Assistant Overview page provide insights into website traffic originating from AI Assistants such as ChatGPT and other large language model–based assistants. These reports track key metrics including the number of requests made by these bots, the pages and documents they access, and any errors encountered. They also offer detailed breakdowns showing which bots visit specific page URLs, helping you understand how AI assistants interact with your content and identify opportunities to improve visibility and accessibility for AI-driven users.",
"AIAssistantsOverviewHelp2": "It’s important to note that none of these pages were actually viewed by humans in the traditional way — all requests originate from AI assistants fetching content automatically.",
"AIAssistantsOverviewHelp3": "Currently, these reports exclusively include requests from AI bots that do not execute JavaScript. They do not include traffic from AI crawlers used for training AI models or from AI agents capable of executing JavaScript.",
diff --git a/plugins/AIAgents/tests/UI/AIAgents_spec.js b/plugins/AIAgents/tests/UI/AIAgents_spec.js
index 86b466b4184..6aa3437b14f 100644
--- a/plugins/AIAgents/tests/UI/AIAgents_spec.js
+++ b/plugins/AIAgents/tests/UI/AIAgents_spec.js
@@ -10,7 +10,7 @@
describe('AIAgents', function () {
this.fixture = 'Piwik\\Plugins\\AIAgents\\tests\\Fixtures\\AIAgents';
- const url = '?module=CoreHome&action=index&category=AIAgents_AIAssistants&subcategory=General_Overview&idSite=1&period=day&date=2025-07-20';
+ const url = '?module=CoreHome&action=index&category=General_AIAssistants&subcategory=AIAgents_AIAgentsOverview&idSite=1&period=day&date=2025-07-20';
it('should display the AI agents overview', async function () {
await page.goto(url);
diff --git a/plugins/AIAgents/tests/UI/expected-ui-screenshots/AIAgents_menu.png b/plugins/AIAgents/tests/UI/expected-ui-screenshots/AIAgents_menu.png
index 6ccc58670e8..0ef57c5da9c 100644
Binary files a/plugins/AIAgents/tests/UI/expected-ui-screenshots/AIAgents_menu.png and b/plugins/AIAgents/tests/UI/expected-ui-screenshots/AIAgents_menu.png differ
diff --git a/plugins/AIAgents/Categories/AIAssistantsCategory.php b/plugins/CoreHome/Categories/AIAssistantsCategory.php
similarity index 78%
rename from plugins/AIAgents/Categories/AIAssistantsCategory.php
rename to plugins/CoreHome/Categories/AIAssistantsCategory.php
index 72789aae04e..5b64fccf728 100644
--- a/plugins/AIAgents/Categories/AIAssistantsCategory.php
+++ b/plugins/CoreHome/Categories/AIAssistantsCategory.php
@@ -9,13 +9,13 @@
declare(strict_types=1);
-namespace Piwik\Plugins\AIAgents\Categories;
+namespace Piwik\Plugins\CoreHome\Categories;
use Piwik\Category\Category;
class AIAssistantsCategory extends Category
{
- protected $id = 'AIAgents_AIAssistants';
+ protected $id = 'General_AIAssistants';
protected $order = 80;
protected $icon = 'icon-admin-platform';
}
diff --git a/tests/PHPUnit/Integration/Category/CategoryListTest.php b/tests/PHPUnit/Integration/Category/CategoryListTest.php
index 248d22a613d..01ad72b041d 100644
--- a/tests/PHPUnit/Integration/Category/CategoryListTest.php
+++ b/tests/PHPUnit/Integration/Category/CategoryListTest.php
@@ -35,6 +35,7 @@ public function testGetAllCategoriesWithSubcategoriesShouldFindCategories()
$list = CategoryList::get();
$this->assertSame(array(
+ 'General_AIAssistants',
'General_Actions',
'General_KpiMetric',
'General_Visitors',
@@ -55,7 +56,6 @@ public function testGetAllCategoriesWithSubcategoriesShouldFindCategories()
'ProfessionalServices_PromoHeatmaps',
'ProfessionalServices_PromoMediaAnalytics',
'ProfessionalServices_PromoSessionRecording',
- 'AIAgents_AIAssistants',
'ExampleUI_UiFramework',
'CustomVariables_CustomVariables',
), array_keys($list->getCategories()));
diff --git a/tests/PHPUnit/Integration/WidgetsListTest.php b/tests/PHPUnit/Integration/WidgetsListTest.php
index e46ffa40b69..f937643f24d 100644
--- a/tests/PHPUnit/Integration/WidgetsListTest.php
+++ b/tests/PHPUnit/Integration/WidgetsListTest.php
@@ -52,7 +52,7 @@ public function testGet()
'Referrers_Referrers' => 11,
'About Matomo' => 11,
'Marketplace_Marketplace' => 3,
- 'AIAgents_AIAssistants' => 2,
+ 'General_AIAssistants' => 2,
// widgets provided by Professional Services plugin for plugin promos
'ProfessionalServices_PromoAbTesting' => 1,
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
index c596128c45b..e9a271b382b 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
@@ -3546,7 +3546,7 @@
AI Assistants
- Overview
+ AI Agents Overview
AI Agent Visits
AIAgents
get
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
index 368430b7169..1c02b485649 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
@@ -1,5 +1,56 @@
+
+ General_AIAssistants.AIAgents_AIAgentsOverview
+
+ General_AIAssistants
+ AI Assistants
+ 80
+ icon-admin-platform
+
+
+
+
+ AIAgents_AIAgentsOverview
+ AI Agents Overview
+ 10
+ <p>Review how AI agents and human visitors engage with your site at a glance. This overview surfaces combined metrics and trends so you can quickly spot changes before exploring detailed reports.</p>
+
+
+
+ AI Agents Over Time
+ AIAgents
+ getEvolutionGraph
+ 1
+
+ 1
+ graphEvolution
+ AIAgents
+ getEvolutionGraph
+
+ widgetAIAgentsgetEvolutionGraphforceView1viewDataTablegraphEvolution
+ 0
+ graphEvolution
+ 1
+
+
+ AI Agent Overview
+ AIAgents
+ get
+ 2
+
+ 1
+ sparklines
+ AIAgents
+ get
+
+ widgetAIAgentsgetforceView1viewDataTablesparklines
+ 0
+ sparklines
+ 1
+
+
+
General_Actions.VisitorInterest_Engagement
@@ -6713,57 +6764,6 @@
-
- AIAgents_AIAssistants.General_Overview
-
- AIAgents_AIAssistants
- AI Assistants
- 80
- icon-admin-platform
-
-
-
-
- General_Overview
- Overview
- 10
- <p>The AI Assistant Overview page provide insights into website traffic originating from AI Assistants such as ChatGPT and other large language model–based assistants. These reports track key metrics including the number of requests made by these bots, the pages and documents they access, and any errors encountered. They also offer detailed breakdowns showing which bots visit specific page URLs, helping you understand how AI assistants interact with your content and identify opportunities to improve visibility and accessibility for AI-driven users.</p><p>It’s important to note that none of these pages were actually viewed by humans in the traditional way — all requests originate from AI assistants fetching content automatically.</p><p>Currently, these reports exclusively include requests from AI bots that do not execute JavaScript. They do not include traffic from AI crawlers used for training AI models or from AI agents capable of executing JavaScript.</p>
-
-
-
- AI Agents Over Time
- AIAgents
- getEvolutionGraph
- 1
-
- 1
- graphEvolution
- AIAgents
- getEvolutionGraph
-
- widgetAIAgentsgetEvolutionGraphforceView1viewDataTablegraphEvolution
- 0
- graphEvolution
- 1
-
-
- AI Agent Overview
- AIAgents
- get
- 2
-
- 1
- sparklines
- AIAgents
- get
-
- widgetAIAgentsgetforceView1viewDataTablesparklines
- 0
- sparklines
- 1
-
-
-
ExampleUI_UiFramework.ExampleUI_GetTemperaturesDataTable
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
index 3b4a0bbf891..2fd3456b920 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
@@ -3651,7 +3651,7 @@
AI Agents Over Time
- AIAgents_AIAssistants
+ General_AIAssistants
AI Assistants
80
icon-admin-platform
@@ -3659,10 +3659,10 @@
- General_Overview
- Overview
+ AIAgents_AIAgentsOverview
+ AI Agents Overview
10
- <p>The AI Assistant Overview page provide insights into website traffic originating from AI Assistants such as ChatGPT and other large language model–based assistants. These reports track key metrics including the number of requests made by these bots, the pages and documents they access, and any errors encountered. They also offer detailed breakdowns showing which bots visit specific page URLs, helping you understand how AI assistants interact with your content and identify opportunities to improve visibility and accessibility for AI-driven users.</p><p>It’s important to note that none of these pages were actually viewed by humans in the traditional way — all requests originate from AI assistants fetching content automatically.</p><p>Currently, these reports exclusively include requests from AI bots that do not execute JavaScript. They do not include traffic from AI crawlers used for training AI models or from AI agents capable of executing JavaScript.</p>
+ <p>Review how AI agents and human visitors engage with your site at a glance. This overview surfaces combined metrics and trends so you can quickly spot changes before exploring detailed reports.</p>
AIAgents
getEvolutionGraph
@@ -3681,7 +3681,7 @@
AI Agent Overview
- AIAgents_AIAssistants
+ General_AIAssistants
AI Assistants
80
icon-admin-platform
@@ -3689,10 +3689,10 @@
- General_Overview
- Overview
+ AIAgents_AIAgentsOverview
+ AI Agents Overview
10
- <p>The AI Assistant Overview page provide insights into website traffic originating from AI Assistants such as ChatGPT and other large language model–based assistants. These reports track key metrics including the number of requests made by these bots, the pages and documents they access, and any errors encountered. They also offer detailed breakdowns showing which bots visit specific page URLs, helping you understand how AI assistants interact with your content and identify opportunities to improve visibility and accessibility for AI-driven users.</p><p>It’s important to note that none of these pages were actually viewed by humans in the traditional way — all requests originate from AI assistants fetching content automatically.</p><p>Currently, these reports exclusively include requests from AI bots that do not execute JavaScript. They do not include traffic from AI crawlers used for training AI models or from AI agents capable of executing JavaScript.</p>
+ <p>Review how AI agents and human visitors engage with your site at a glance. This overview surfaces combined metrics and trends so you can quickly spot changes before exploring detailed reports.</p>
AIAgents
get
diff --git a/tests/UI/expected-screenshots/QuickAccess_search_1.png b/tests/UI/expected-screenshots/QuickAccess_search_1.png
index d849c15de72..0291b784027 100644
--- a/tests/UI/expected-screenshots/QuickAccess_search_1.png
+++ b/tests/UI/expected-screenshots/QuickAccess_search_1.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b966d5020a61e51a76f2094111e404ee2cfd0b562ef195d204b5f1ea6bff4dfc
-size 96879
+oid sha256:77b991f7a35b16ded1329a70e3fa23cd628fd645e09f7b5917b518a920fc5d40
+size 97591
diff --git a/tests/UI/expected-screenshots/QuickAccess_search_2.png b/tests/UI/expected-screenshots/QuickAccess_search_2.png
index 76ca638567f..b28006afd68 100644
--- a/tests/UI/expected-screenshots/QuickAccess_search_2.png
+++ b/tests/UI/expected-screenshots/QuickAccess_search_2.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b455fce95e8019d85d7d352fdfcfd98d9e7048a4f7d1c4d8e114e62660d928f6
-size 18495
+oid sha256:3ce4aa38db7ceb808b715ced83babee0730f8ede4bd763dbd6210c4760860b2b
+size 19242
diff --git a/tests/UI/expected-screenshots/QuickAccess_search_sites.png b/tests/UI/expected-screenshots/QuickAccess_search_sites.png
index 4f3f54b1295..28a12316c2b 100644
--- a/tests/UI/expected-screenshots/QuickAccess_search_sites.png
+++ b/tests/UI/expected-screenshots/QuickAccess_search_sites.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3b109bc1403da25515df7bff6cabdb71d114efb6345473d09697f3ede383431c
-size 46366
+oid sha256:5476a5327898026334999ca2a4a6bdcb8def7a48a062d7accc6c7e7c52686c19
+size 47079