PHPackages                             moselwal/fa4t3 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. moselwal/fa4t3

ActiveTypo3-cms-extension[Admin Panels](/categories/admin)

moselwal/fa4t3
==============

Fathom Analytics integration for TYPO3 CMS — Backend Dashboard, Page Analytics, Frontend Tracking.

v4.0.5(1mo ago)00MITPHPPHP ^8.5

Since Jun 6Pushed 1mo agoCompare

[ Source](https://github.com/Moselwal-Digitalagentur/fa4t3)[ Packagist](https://packagist.org/packages/moselwal/fa4t3)[ Docs](https://moselwal.de)[ RSS](/packages/moselwal-fa4t3/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (17)Versions (5)Used By (0)

Fathom Analytics — TYPO3 Extension
==================================

[](#fathom-analytics--typo3-extension)

[![TYPO3 14](https://camo.githubusercontent.com/8f02675f3749751be8f38b62ba260ffb937ee6fad6c4b7ab3a1e704af48fea2a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5459504f332d31342e782d6f72616e67652e737667)](https://get.typo3.org/)[![PHP 8.5+](https://camo.githubusercontent.com/2788132aa1e54031a6c94edcbf8688566d3e18cb5492cd1766836f74a24b27b5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e352532422d626c75652e737667)](https://php.net/)[![License: GPL-2.0-or-later](https://camo.githubusercontent.com/d865d3f061b5bdb93940bfc940d9e431166c9a28b20e625622a9d77854d1e3c7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d47504c2d2d322e302d2d6f722d2d6c617465722d677265656e2e737667)](https://www.gnu.org/licenses/gpl-2.0.html)

Privacy-focused analytics for TYPO3 powered by [Fathom Analytics](https://usefathom.com/). Provides a backend dashboard module, page-specific analytics in the page module, and optional frontend tracking script injection.

Features
--------

[](#features)

- **Backend Dashboard Module** — View analytics data directly in the TYPO3 backend
- **Page-Specific Analytics** — See per-page metrics in the TYPO3 page module
- **Frontend Tracking** — Optional automatic injection of the Fathom tracking script
- **Dashboard Widgets** — Integration with TYPO3's Dashboard extension for custom widgets
- **TYPO3 14.x** — Tested on the current LTS line
- **Caching** — Uses TYPO3's Caching Framework for API response caching

Screenshots
-----------

[](#screenshots)

### Backend Dashboard

[](#backend-dashboard)

[![Fathom Analytics Dashboard in the TYPO3 backend — realtime visitors, pageviews, average time on site, bounce rate and event completions](docs/screenshot-dashboard.png)](docs/screenshot-dashboard.png)

The dashboard module appears under **Content → Fathom Analytics** in the TYPO3 backend sidebar. It shows realtime visitors, daily pageviews, average time on site, bounce rate, and event completions — without leaving TYPO3.

### Per-Page Analytics Widget

[](#per-page-analytics-widget)

[![Fathom Analytics per-page widget — 30-day overview per URL showing pageviews, visitors, average duration and bounce rate](docs/screenshot-page-widget.png)](docs/screenshot-page-widget.png)

The page analytics widget appears directly on every TYPO3 page record and shows the last 30 days of Fathom data (pageviews, visitors, avg. duration, bounce rate) for the DE and EN URL of that page.

Installation
------------

[](#installation)

```
composer require moselwal/fa4t3
```text

### Requirements

- PHP 8.5+
- TYPO3 14.x
- Fathom Analytics account with API key

### Secure Secret Management (Recommended)

For secure handling of your Fathom API key and password, we recommend using [`moselwal/secret-resolver`](https://packagist.org/packages/moselwal/secret-resolver):

```bash
composer require moselwal/secret-resolver
```

**Why not just environment variables?**

Environment variables are a common approach for secrets, but they have significant drawbacks:

- **Visible in plain text** at runtime — any process on the server, a `phpinfo()` call, or a debug dump can expose them.
- **No encryption at rest** — `.env` files and server configs store secrets unencrypted on disk.
- **Leak-prone** — environment variables are inherited by child processes, logged by error handlers, and often end up in CI/CD logs or container inspection output.

**What `secret-resolver` does differently:**

- Secrets can **encrypted at rest** in your repository (via SOPS/age), in Vault, or in other backends — and are only resolved at runtime.
- The decryption happens **outside your application** — the runtime environment (Docker Secrets, Vault Agent, etc.) provides the plaintext values. `secret-resolver` reads these resolved values and makes them available to TYPO3. The extension itself never handles encryption or decryption.
- Unlike environment variables, secrets are **not globally visible** in the process environment — they are resolved on demand and scoped to the consuming configuration.
- Supports multiple resolution strategies: **Docker Secrets** (`/run/secrets/`), **file-based env vars** (`KEY_FILE`), **HashiCorp Vault**, and others.

**Usage in TYPO3 YAML files:**

`secret-resolver` hooks into TYPO3's central `YamlFileLoader`, so the `%secret(KEY)%` placeholder works in **all** TYPO3 YAML configurations — not just Site Configuration:

```
# config/sites/main/config.yaml
fa4t3ApiKey: '%secret(FA4T3_API_KEY)%'
fa4t3Password: '%secret(FA4T3_PASSWORD)%'
```text

This includes Site Configuration, Form Framework definitions, Services.yaml, and any other YAML loaded through TYPO3's standard YAML loader.

See the [secret-resolver documentation](https://packagist.org/packages/moselwal/secret-resolver) for setup details.

## Architecture

```

Classes/ ├── Controller/ # Backend module controllers ├── Domain/ # Models and repositories ├── Exception/ # Domain-specific exceptions ├── Middleware/ # Frontend tracking script injection ├── Service/ # Fathom API client and data services └── Widgets/ # TYPO3 Dashboard widgets

```

## Configuration

1. Obtain an API key from your [Fathom Analytics dashboard](https://app.usefathom.com/)
2. Configure the extension in the TYPO3 backend (Extension Configuration)
3. Set your Site ID for frontend tracking (optional)

### Dashboard Widgets

When `typo3/cms-dashboard` is installed, additional widgets are available:

- Page views over time
- Top pages
- Referrer sources
- Browser/device breakdown

## Development

```bash
composer install
composer test                    # Unit tests
composer phpstan                 # Static analysis
vendor/bin/php-cs-fixer fix      # Code style (PER-CS3x0)

```

Dependencies
------------

[](#dependencies)

PackageTypePurpose`typo3/cms-dashboard`OptionalDashboard widget support`moselwal/secret-resolver`OptionalSecure API key and password resolution from encrypted sources`moselwal/dev`DevShared QA toolingLicense
-------

[](#license)

GPL-2.0-or-later — see [LICENSE](LICENSE) for details.

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance90

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

4

Last Release

47d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7e0a48f51d9fddd2b5104df8997e3281935968f4895d7c0392e719ecb916ccea?d=identicon)[o.hartwig](/maintainers/o.hartwig)

---

Top Contributors

[![ohartwig](https://avatars.githubusercontent.com/u/4158815?v=4)](https://github.com/ohartwig "ohartwig (75 commits)")

---

Tags

dashboardanalyticstypo3privacyfathomfa4t3

### Embed Badge

![Health badge](/badges/moselwal-fa4t3/health.svg)

```
[![Health](https://phpackages.com/badges/moselwal-fa4t3/health.svg)](https://phpackages.com/packages/moselwal-fa4t3)
```

###  Alternatives

[eliashaeussler/typo3-warming

Warming - Warms up Frontend caches based on an XML sitemap. Cache warmup can be triggered via TYPO3 backend or using a console command. Supports multiple languages and custom crawler implementations.

22260.2k](/packages/eliashaeussler-typo3-warming)[typo3/cms-adminpanel

TYPO3 CMS Admin Panel - The Admin Panel displays information about your site in the frontend and contains a range of metrics including debug and caching information.

115.7M68](/packages/typo3-cms-adminpanel)[pagemachine/typo3-formlog

Form log for TYPO3

23238.6k8](/packages/pagemachine-typo3-formlog)[pagemachine/searchable

TYPO3 extension to index and search content with Elasticsearch

1139.9k](/packages/pagemachine-searchable)[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k57](/packages/friendsoftypo3-content-blocks)[eliashaeussler/typo3-form-consent

Extension for TYPO3 CMS that adds double opt-in functionality to EXT:form

1595.5k](/packages/eliashaeussler-typo3-form-consent)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
