ronald2wing / laravel-ga4
Drop-in Google Analytics 4 (gtag) snippet for Laravel Blade.
Requires
- php: ^8.3
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
Requires (Dev)
- laravel/pint: ^1.26
- orchestra/testbench: ^8.0|^9.0|^10.0|^11.0
- phpstan/phpstan: ^2.1.33
- phpunit/phpunit: ^10.0|^11.5
This package is auto-updated.
Last update: 2026-04-27 02:54:01 UTC
README
A small Laravel package that drops the Google Analytics 4 tracking snippet into your Blade layout. One directive, one env var, no ceremony.
Requirements
- PHP 8.3+
- Laravel 10.x, 11.x, 12.x, or 13.x
Installation
composer require ronald2wing/laravel-ga4
The service provider is auto-registered.
Configuration
Add your measurement ID to .env:
GA4_MEASUREMENT_ID=G-XXXXXXXXXX
Optionally publish the config:
php artisan vendor:publish --tag=ga4-config
gtag parameters
Forwarded as the third argument to gtag('config', id, parameters):
// config/ga4.php 'parameters' => [ 'send_page_view' => true, 'anonymize_ip' => true, ],
Usage
Place @ga4 in your layout's <head>:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{{ config('app.name') }}</title> @ga4 </head> <body> @yield('content') </body> </html>
The directive renders the tracking snippet, or nothing at all if no measurement ID is configured — so it's safe to drop into any layout unconditionally.
Conditional rendering
Ga4Tag::isEnabled() lets you guard analytics-aware UI:
@use(Ronald2Wing\LaravelGa4\Ga4Tag) @if(app(Ga4Tag::class)->isEnabled()) <button data-track="sign_up">Sign Up</button> @endif
Ga4Tag implements Htmlable and Stringable, so {{ $tag }} and {!! $tag !!} both work if you'd rather inject the instance directly.
Composer scripts
composer test # run tests composer check # lint + test composer lint # Pint dry-run composer pint # Pint fix composer analyse # PHPStan
License
MIT © Ronald2Wing