jeffersongoncalves/filament-umami
A Filament plugin that brings Umami analytics into your Laravel admin panel, letting you view website traffic, page views, and key metrics without leaving your dashboard. Simple setup and a clean, native Filament integration.
Requires filament-analytics-core 3.1+ if you intend to use the new navigationGroup() API. Start by bumping the core dependency, then update the plugin registration in your panel provider:
use Vendor\Analytics\AnalyticsPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
AnalyticsPlugin::make()
->navigationGroup('Settings'),
]);
}
The first practical use case is simply moving the analytics settings page out of its translated default group and into a group your panel already uses (e.g. Settings, Configuration, Reporting). If you do nothing, behavior is unchanged: the package keeps its translated navigation group, so this release is non-breaking.
Where to look first:
Plugin class (make() / navigationGroup()), which is the fluent entry point.filament-analytics-core 3.1 release notes, since the grouping behavior is implemented there.Static grouping for a single panel
AnalyticsPlugin::make()->navigationGroup('Reporting')
Use this when the plugin lives alongside other reporting pages and you want a coherent sidebar section.
Closure-based grouping for dynamic labels
Because the parameter is string|Closure, you can resolve the group at render time — useful for localization or role-based layouts:
AnalyticsPlugin::make()->navigationGroup(
fn () => __('navigation.groups.insights')
)
Keep closures pure and cheap: they are evaluated during navigation building, so avoid queries, container resolution of heavy services, or per-request HTTP calls.
Aligning with existing Filament groups
Match the exact string used by other plugins/pages in the panel. Filament groups by label, so 'Settings' and 'settings' will render as two separate sections. Centralize the group name in a config constant or enum-backed helper if several plugins need to share it.
Multi-panel setups
Register the plugin per panel and set the group individually. A common pattern is a shared admin panel using 'Settings' and a lighter client panel using 'Account', or omitting navigationGroup() entirely so the translated default applies.
Pairing with navigation sort/icon
navigationGroup() only affects grouping; ordering within the group still comes from the page's navigation sort. When moving the page into a crowded group, set an explicit sort so it doesn't land unpredictably relative to other plugin pages.
navigationGroup() depends on filament-analytics-core 3.1. Composer will not stop you from calling the method if you pin an older core, so verify composer show / composer why after upgrading. A missing method surfaces as a BadMethodCallException at panel boot.now(), random values, or request-dependent output in the closure unless that instability is intentional.canAccess/policy configuration; grouping is presentation only.php artisan filament:optimize-clear (or clearing cached components) and dump the registered pages through Filament's panel inspection helpers. Stale caches after a plugin upgrade are a frequent cause of "my new group isn't applied".navigationGroup() panel by panel.How can I help you explore Laravel packages today?