beyondcode/fathom-api
A Laravel-friendly PHP client for the Fathom Analytics API. Query sites, page views, events, and other analytics data directly from your app, with a clean wrapper around Fathom's endpoints for dashboards and reporting.
1.1.0 release — which adds Fathom v3 compatibility — is the signal that the client points at a current API surface, not a deprecated one. Weigh internal build effort against a Composer dependency with a single-maintainer profile.1.1.0 is a real maintenance signal but not a cadence or a track record. Suitable for a time-boxed spike or low-risk internal tooling; not a strategic dependency without engineering sign-off.1.1.0 is additive or breaking — before rolling forward. Do not bundle it with a feature release.analytics_daily table gives us history that outlives Fathom's own retention window and lets us backfill or repair without touching the vendor. That's a product-level durability decision, not just an engineering pattern.Consider it when:
Fathom facade / DI access, fluent site→metric→date-range calls returning arrays) rather than hand-rolling and maintaining a Fathom HTTP client.AnalyticsReport adapter) so the facade never leaks into controllers or Blade and the vendor stays replaceable with a one-line container binding.1.1.0, not ^1.1) and track the repo and Fathom's v3 changelog, with a fork or in-house client as a pre-planned escape hatch.firstWhere('name', ...) pattern fails silently on renames.Look elsewhere when:
/sites, /aggregations, /events, /current_visitors; anything beyond aggregate reporting should be verified against Fathom's v3 docs before it's assumed to exist.null in a widget with no error anywhere.For executives: We can ship privacy-friendly traffic reporting inside our own admin and client-facing dashboards without building an analytics backend. Fathom stays the system of record; this package is a small, replaceable adapter that pulls its numbers into our Laravel app. The strategic value is the privacy posture and the avoided build cost — not the package itself. Recommendation: approve as a scoped, low-risk integration behind our own interface, with an exact version pin and a quarterly dependency review. Do not treat it as a platform commitment.
For engineering: It's a thin fluent builder over Laravel's HTTP client — Fathom::site($id)->pageviews(from:, to:) returning plain arrays, with a published config and auto-discovered provider. That's the entire public surface. Two hard requirements before it goes anywhere near production: (1) wrap the facade in an AnalyticsReport interface so the vendor is a one-line container swap, and (2) never call Fathom live from a request path — run a nightly snapshot job into a local table and let dashboards read from the database. Everything is untyped, so map to DTOs at the boundary and log on missing keys as our early warning for API drift. Watch for the known traps: stale config:cache is the #1 cause of phantom 401s, base_url/API-version is the single most important config value, and name-based site lookup fails silently on rename.
The honest risk statement, stated once: zero stars, zero dependents, one release signal, no maintenance cadence. That doesn't disqualify it for internal reporting — it disqualifies it as an unexamined dependency. Pin it, isolate it, and have the fork ready.
How can I help you explore Laravel packages today?