Filament Google Analytics
#Google Analytics (GA4)
Google Analytics integration for Filament Panels with a set of widgets to display your analytics data in a beautiful way.
#Compatibility
#Upgrading from v2 to v3
If you are upgrading from version 2 to version 3, you will need to update the namespace anywhere you are using the plugin from BezhanSalleh\FilamentGoogleAnalytics to BezhanSalleh\GoogleAnalytics.
#Installation
You can install the package in to a Laravel app that uses Filament via composer:
composer require bezhansalleh/filament-google-analytics
For now, follow the directions on Spatie's Laravel Google Analytics package for getting your credentials, then put them here:
yourapp/storage/app/analytics/service-account-credentials.json
Also add this to the .env for your Filament PHP app:
ANALYTICS_PROPERTY_ID=
[!IMPORTANT] If you have not set up a custom theme and are using Filament Panels follow the instructions in the Filament Docs first.
After setting up a custom theme add the following to your theme css file.
@source '../../../../vendor/bezhansalleh/filament-google-analytics/resources/views/**/*';
@source '../../../../vendor/bezhansalleh/filament-google-analytics/src/{Widgets,Support}/*';
public function panel(Panel $panel): Panel { return $panel ->plugins([ ... \BezhanSalleh\GoogleAnalytics\GoogleAnalyticsPlugin::make() ]); }
#Usage
All the widgets are enabled by default for you to use them in your filament pages/resources. In order to enable the widgets for the default filament dashboard, you need to set the filament_dashboard option to true in the config file google-analytics.php for each widget you want to enable.
Publish the config files and set your settings:
php artisan vendor:publish --tag=google-analytics-config
#Available Widgets
use BezhanSalleh\GoogleAnalytics\Widgets; Widgets\PageViewsWidget::class, Widgets\VisitorsWidget::class, Widgets\ActiveUsersOneDayWidget::class, Widgets\ActiveUsersSevenDayWidget::class, Widgets\ActiveUsersTwentyEightDayWidget::class, Widgets\SessionsWidget::class, Widgets\SessionsByCountryWidget::class, Widgets\SessionsDurationWidget::class, Widgets\SessionsByDeviceWidget::class, Widgets\MostVisitedPagesWidget::class, Widgets\TopReferrersListWidget::class,
#Custom Dashboard
Though this plugin comes with a default dashboard, but sometimes you might want to change navigationLabel or navigationGroup or disable some widgets or any other options and given that the dashboard is a simple filament page; The easiest solution would be to disable the default dashboard and create a new page:
php artisan filament:page MyCustomDashboardPage
then register the widgets you want from the Available Widgets list either in the getHeaderWidgets() or getFooterWidgets():
<?php namespace App\Filament\Pages; use Filament\Pages\Page; use BezhanSalleh\GoogleAnalytics\Widgets; class MyCustomDashboardPage extends Page { protected static ?string $navigationIcon = 'heroicon-o-document-text'; protected static string $view = 'filament.pages.my-custom-dashboard-page'; protected function getHeaderWidgets(): array { return [ Widgets\PageViewsWidget::class, Widgets\VisitorsWidget::class, Widgets\ActiveUsersOneDayWidget::class, Widgets\ActiveUsersSevenDayWidget::class, Widgets\ActiveUsersTwentyEightDayWidget::class, Widgets\SessionsWidget::class, Widgets\SessionsByCountryWidget::class, Widgets\SessionsDurationWidget::class, Widgets\SessionsByDeviceWidget::class, Widgets\MostVisitedPagesWidget::class, Widgets\TopReferrersListWidget::class, ]; } }
[!NOTE]
In order to enable the widgets for the default filament dashboard, you need to set thefilament_dashboardoption totruein the config filegoogle-analytics.phpfor each widget you want to enable.
#Preview
Widgets rendered in a dedicated dashboard (or any other page you create)

#Changelog
Please see CHANGELOG for more information on what has changed recently.
#Contributing
If you want to contribute to this packages, you may want to test it in a real Filament project:
- Fork this repository to your GitHub account.
- Create a Filament app locally.
- Clone your fork in your Filament app's root directory.
- In the
/filament-google-analyticsdirectory, create a branch for your fix, e.g.fix/error-message.
Install the packages in your app's composer.json:
"require": { "bezhansalleh/filament-google-analytics": "dev-fix/error-message as main-dev", }, "repositories": [ { "type": "path", "url": "filament-google-analytics" } ]
Now, run composer update.
Please see CONTRIBUTING for details.
#Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
#Credits
#License
The MIT License (MIT). Please see License File for more information.