konradmichalik / typo3-page-metrics
Page-level metrics inside the TYPO3 backend, resolved from arbitrary URLs to page UIDs, from swappable data providers.
Package info
github.com/konradmichalik/typo3-page-metrics
Type:typo3-cms-extension
pkg:composer/konradmichalik/typo3-page-metrics
Requires
- php: ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0
- ext-hash: *
- ext-json: *
- ext-zlib: *
- doctrine/dbal: ^4.0
- firebase/php-jwt: ^7.0
- psr/event-dispatcher: ^1.0
- psr/http-message: ^1.0 || ^2.0
- symfony/console: ^7.0 || ^8.0
- symfony/dependency-injection: ^7.0 || ^8.0
- typo3/cms-backend: ^13.4 || ^14.0
- typo3/cms-core: ^13.4 || ^14.0
Requires (Dev)
- ext-openssl: *
- composer/class-map-generator: ^1.7
- eliashaeussler/version-bumper: ^4.0.4
- guzzlehttp/psr7: ^2.0
- konradmichalik/ttt: ^0.4.0
- phpunit/phpunit: ^11.0 || ^12.0 || ^13.0
- typo3/cms-base-distribution: ^13.4 || ^14.0
- typo3/cms-dashboard: ^13.4 || ^14.0
- typo3/cms-extbase: ^13.4 || ^14.0
- typo3/cms-frontend: ^13.4 || ^14.0
- typo3/cms-lowlevel: ^13.4 || ^14.0
- typo3/cms-redirects: ^13.4 || ^14.0
- typo3/testing-framework: ^8.2 || ^9.0.3 || ^10.0
Suggests
- typo3/cms-dashboard: Enables the dashboard widgets. Those with settings, including 'Page metrics', need TYPO3 14.
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-11-06 12:48:54 UTC
README
TYPO3 extension typo3_page_metrics
Page-level metrics inside the TYPO3 backend, from an analytics provider you already run.
No tracking code, no third-party service, no subscription. The extension reads your existing Matomo or GA4 data, or your web server's own access log without any analytics service at all. It resolves every URL it reports, through redirect chains and multilingual slugs, back to a TYPO3 page UID, then stores per-page daily aggregates so editors can see "how is this page doing" without leaving the backend.
Warning
This extension is still in beta. Configuration, tile behaviour and APIs can change before a stable 1.0 release.
✨ Features
- URL → page UID resolution at import time, through redirect chains,
multilingual slugs and route enhancers, so every number hangs off a page in
the tree rather than a URL string: a record detail URL such as
/news/my-articlecounts for the page that renders it, tiles link straight into the page module, a section can roll its whole subtree up into one figure, and URLs that resolve to no page are reported as Not found pages - Metric tiles right in
Web > Page, below the page title: page views, visits, avg. time on page, bounce rate, a period switch (7/30/90 days), and a sparkline popover per tile, see Page module tiles - Site-wide EXT:dashboard widgets plus a ready-made dashboard preset, see Dashboard widgets
- Annotations, derived from TYPO3's own record history (a page edited, a redirect created), imported (e.g. Matomo release markers) or created by hand, categorised, optionally spanning days or scoped to one page, and marked on every sparkline, see Annotations
- Goal conversions per page, from Matomo goals or GA4 key events, as a tile of their own beside the traffic ones, with optional revenue, see Goal tiles
- Bot traffic per page from the access log, folded into one tile, with AI chatbots and AI crawlers as tiles of their own that name the bots behind the number, see Bot traffic
- Matomo, GA4 and your own web server access log as pluggable providers, extensible with your own, see Registering custom tiles
🔥 Installation
Requirements
- TYPO3 13.4 or 14.3
- PHP 8.2 - 8.5
- One of the supported providers: Matomo, GA4 or the access log
Composer
composer require konradmichalik/typo3-page-metrics
TER
Download the zip file from TYPO3 extension repository (TER).
Then configure a provider for the site, see Configuration.
⚙️ Configuration
Add to a site's config/sites/<identifier>/config.yaml, under pageMetrics.
Each provider has its own settings and setup notes:
Name a storage page under pageMetrics.annotations.storagePid and editors can
add their own markers straight from the page module, see
Adding a marker.
🚀 Quick start
Run the import (also schedulable via the TYPO3 Scheduler). The same command imports both metrics and any annotations from a registered provider (e.g. Matomo release markers, see Page module tiles):
vendor/bin/typo3 page-metrics:import vendor/bin/typo3 page-metrics:import --force
Then open Web → Page and select a page in the page tree. The tiles appear directly below the page title. See Page module tiles for the period switch, the subpages toggle and the sparkline popover, or Dashboard widgets for the site-wide EXT:dashboard widgets.
📚 Documentation
| Page | What's inside |
|---|---|
| Matomo provider | Site configuration, additionalHosts for Dev/Stage instances |
| GA4 provider | Site configuration, the service-account key file, known GA4 caveats |
| Access log provider | Site configuration, what it can and cannot measure, bot/asset filtering |
| Dashboard widgets | The full EXT:dashboard widget catalog, their settings and the bundled preset |
| Page module tiles | The period switch, the subpages toggle, sparkline popovers and annotations |
| Security | Restricting tile visibility per backend user group |
| Registering custom tiles | Contributing an additional tile via ModifyMetricTilesEvent, without implementing MetricProviderInterface |
| Related extensions | How this compares to TYPO3 Analytics, matomo_widgets and analytics_matomo |
🧑💻 Contributing
Please have a look at CONTRIBUTING.md.
💎 Credits
Tile icons are from Tabler Icons, MIT licensed.
⭐ License
GPL-2.0-or-later, see LICENSE.md.
