nucleos/matomo-bundle
Symfony bundle for integrating Matomo analytics into your application. It offers configuration for Matomo tracking, Twig helpers to embed the tracking code, and services that simplify adding privacy-friendly web analytics to Symfony projects without boilerplate.
Architecture fit: This remains a Symfony bundle (nucleos/matomo-bundle), not a Laravel package. The prompt frames it as a "Laravel/PHP package," but the artifact is explicitly a Symfony bundle providing a block service for embedding Matomo tracking inside Symfony applications. For a Laravel-based product, there is no native architecture fit — the bundle depends on Symfony's bundle/kernel, service container, and config component conventions. Any Laravel adoption would require shimming Symfony services into Laravel's container or, more realistically, using raw matomo/matomo-php-tracker directly and skipping the bundle entirely. Release 4.4.0 does not change this: it adds a Symfony 8 constraint, which widens the Symfony compatibility envelope but does nothing for non-Symfony consumers.
Integration feasibility: Within a Symfony codebase, integration is straightforward: register the bundle, configure Matomo host/site ID/auth token via bundle config, and inject the block/tracker service where analytics events are emitted. 4.4.0 confirms the bundle is viable through Symfony 8, so a greenfield Symfony 7→8 migration no longer requires dropping the bundle. Outside Symfony, feasibility drops sharply — the value the bundle adds (DI wiring, config schema, Twig/block rendering hooks) is exactly what doesn't transfer to Laravel. The underlying Matomo PHP tracker is the portable part; the bundle is the framework-glue part.
Technical risk: Unchanged at the level that matters. Six GitHub stars and zero dependents still indicate a narrow user base — likely internal to the Nucleos ecosystem. The 4.4.0 release is a mild positive signal: it lands Symfony 8 support, PHPUnit 13 compatibility, and routine dependency refreshes, which directly addresses the common "analytics bundle lags Symfony majors" failure mode. But the release data also sharpens the bus-factor concern: 5 PRs from 2 contributors, one of whom is renovate[bot]. Effective human maintainership is one person (core23). License (MIT) is clean, lowering legal risk. Note also that this was a feature (minor) release containing zero functional changes — no new tracking capability, no deprecations, no API changes. It is maintenance churn, not product evolution; do not read it as growing investment in the package.
Key questions:
^6.4 || ^7 || ^8 or similar rather than an additive-only ^8 that would strand us on the old branch._paq/tracker calls? If the latter, a thin wrapper around matomo/matomo-php-tracker is lower-dependency.Stack fit: Only viable for a Symfony stack that already uses Nucleos conventions or is willing to adopt them. 4.4.0 strengthens this narrow case by extending support to Symfony 8. For a Laravel stack — which the prompt implies — the correct approach is unchanged: treat this repository as reference material, not a dependency. Read how it wires the Matomo tracker, then implement equivalent logic in a small Laravel service provider wrapping matomo/matomo-php-tracker. That keeps us on a well-maintained upstream and avoids a Symfony-in-Laravel compatibility layer that no one will want to own.
Migration path: If we are currently on direct Matomo snippet injection (JS) and want server-side tracking, migrate incrementally: keep the JS tracker, add server-side events behind a feature flag, compare event fidelity, then retire duplicated paths. If we are currently on a different analytics vendor, do not use a bundle migration as the excuse for a vendor swap — sequence them separately. If we are already on an earlier 4.x of this bundle, 4.4.0 is a low-risk in-place bump: it is dependency-only, with no functional delta and no deprecation surface to remediate.
Compatibility: Verify PHP version range, Symfony major version support, and whether the bundle's config schema is stable across the versions we would pin. 4.4.0 explicitly adds Symfony 8 and bumps the test toolchain (PHPUnit 13, symfony/phpunit-bridge v8), which means CI is now exercising the newer matrix — a good sign for Symfony 8 readiness. Because there are zero dependents, expect to be the first to hit edge cases on any new major; pin exact versions rather than floating constraints.
Sequencing:
matomo/matomo-php-tracker directly and treat the bundle as documentation.Maintenance: The bundle's small user base shifts maintenance burden onto us. We should budget for reading the source rather than relying on docs, and for occasionally patching or forking. 4.4.0 shows the dependency-refresh treadmill is being handled by automation plus one human, which is sustainable short-term but fragile: a single unresponsive maintainer stalls Symfony 9 readiness the same way it would have stalled 8. A single-maintainer dependency in the analytics path is tolerable only if analytics is non-critical to revenue flows.
Support: No meaningful community support surface — six stars means Stack Overflow and forum answers will be sparse. Internal runbooks and a named owner are prerequisites, not nice-to-haves. Expect to answer your own Symfony 8 compatibility questions by reading the constraint in composer.json rather than finding a migration guide.
Scaling: Analytics tracking is I/O-bound on the outbound Matomo request. Server-side tracking adds latency to request paths unless batched or queued. Design for async dispatch (queue or buffered flush) from day one; do not let a bundle's convenience API silently put a synchronous HTTP call in the hot path. Nothing in 4.4.0 addresses dispatch behaviour — the convenience API is unchanged, so the latency warning stands.
Failure modes:
Ramp-up: Low for a Symfony engineer already familiar with packages — perhaps half a day to wire, a day to validate, and near-zero incremental effort to absorb 4.4.0. For a Laravel team, ramp-up is inverted: the effort is not learning the bundle but deciding not to use it and building the equivalent in ~a day with the upstream tracker. The real ramp-up cost is organizational: establishing ownership of a thinly-adopted dependency. The 4.4.0 release improves the framework-compatibility story but does not change the adoption calculus — six stars, zero dependents, one human committer, and a Laravel context that the bundle cannot serve. My recommendation is unchanged: do not adopt this bundle as a dependency for a Laravel codebase; instead either (a) adopt matomo/matomo-php-tracker directly, or (b) for a genuine Symfony codebase on or heading to 8.x, take 4.4.0 as a low-risk maintenance bump with a documented exit path to the upstream tracker.
How can I help you explore Laravel packages today?