postare / filament-tracking-consent
A FilamentPHP plugin to easily add tracking codes (e.g., Google Analytics) to the frontend, manage related cookies, and display a customizable GDPR consent banner.
Fund package maintenance!
postare
Requires
- php: ^8.1
- filament/filament: ^3.0
- postare/db-config: ^3.02
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.1
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- spatie/laravel-ray: ^1.26
README
Filament Tracking Consent is a Filament plugin that allows you to easily integrate tracking codes (e.g., Google Analytics) into your frontend while ensuring compliance with GDPR and other privacy regulations.
This package includes a fully customizable cookie consent banner and provides a structured way to manage tracking scripts based on user preferences.
Features
✅ GDPR-Compliant Cookie Consent Banner – Display a customizable banner for users to accept or reject tracking cookies.
✅ Automatic Script Blocking – Tracking scripts are only executed once user consent is granted.
✅ Granular Consent Management – Users can enable or disable tracking per category (e.g., Analytics, Marketing, Preferences).
✅ Easy Integration – Simple Blade components and stack placeholders to include tracking scripts in your layout.
✅ Fully Configurable – Modify the banner style, text, and behavior via a Filament Page.
✅ Supports Multiple Languages – Easily translate consent messages for multilingual applications.
✅ Built on CookieConsent.js – Uses the powerful CookieConsent library by Orest Bida for a robust and reliable solution.
Prerequisites
This package depends on DB Config. Make sure you install it first.
Installation
Install the package via Composer:
composer require postare/filament-tracking-consent
Publish the configuration file:
php artisan vendor:publish --tag="filament-tracking-consent-config"
The default configuration file looks like this:
return [ 'settings-page' => [ 'title' => 'Tracking Settings', 'navigation-label' => 'Tracking and Consent', 'navigation-icon' => 'heroicon-o-presentation-chart-bar', 'navigation-group' => 'Settings', ], ];
Registering the Plugin
To enable the plugin, register it inside your Filament panel provider, typically in app/Providers/Filament/AdminPanelProvider.php
:
->plugins([ ... \Postare\FilamentTrackingConsent\FilamentTrackingConsentPlugin::make(), ])
Usage
Displaying the Consent Banner
Add the tracking consent component inside your layout file, just before the closing <head>
tag:
<x-filament-tracking-consent::tracking-consent />
Injecting Tracking Scripts
Use these stack placeholders to control where tracking scripts are injected:
-
Immediately after opening
<body>
:@stack('tracking-consent-body-start')
-
Just before closing
</body>
:@stack('tracking-consent-body-end')
Cookie Preferences Button
To allow users to adjust their cookie preferences after initial selection, place this stack wherever you want the button to appear (e.g., in the footer):
@stack('tracking-consent-preferences-btn')
JavaScript Dependency
This plugin is powered by CookieConsent.js, an open-source, lightweight, and highly customizable JavaScript library for managing cookie consent.
Why CookieConsent.js?
- Fully customizable UI – Modify the banner design to match your brand.
- Granular consent control – Users can enable or disable specific categories of cookies.
- Automatic script management – Blocks tracking scripts until consent is given.
- Multiple language support – Display consent banners in different languages.
- Privacy law compliance – Helps ensure compliance with GDPR, CCPA, and similar regulations.
For advanced customization options, refer to the CookieConsent documentation.
Credits
License
This package is open-source software licensed under the MIT License.