vincentbean / laravel-plausible
Laravel Plausible
Fund package maintenance!
VincentBean
Installs: 39 658
Dependents: 0
Suggesters: 0
Security: 0
Stars: 23
Watchers: 2
Forks: 5
Open Issues: 0
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.4
- illuminate/contracts: ^11.0|^12.0
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.7
- orchestra/testbench: ^10.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/phpstan-mockery: ^2.0
- phpunit/phpunit: ^11.1
README
This package provides a blade view with the script tag for plausible and a wrapper to easily send custom events to Plausible.
Installation
You can install the package via composer:
composer require vincentbean/laravel-plausible
You can publish the config file with:
php artisan vendor:publish --provider="VincentBean\Plausible\LaravelPlausibleServiceProvider" --tag="config"
Add the following to your env:
PLAUSIBLE_TRACKING_DOMAIN=DOMAIN_YOU_WANT_TO_TRACK
PLAUSIBLE_DOMAIN=OPTIONAL_IF_SELF_HOSTING
Usage
This package supports both client side and server side tracking.
Client Side Tracking
Include the component in your layout to add the plausible script, with optional tracking extensions.
<x-plausible::tracking />
or
<x-plausible::tracking extensions="hash, outbound-links, etc.." />
Plausible will be available on the window object for sending custom events via Javascript:
plausible('event')
Server Side Tracking
Track pageviews server side using middleware.
Laravel 11:
// bootstrap/app.php return Application::configure(basePath: dirname(__DIR__)) // ... ->withMiddleware(function (Middleware $middleware) { // Append this middleware to track globally $middleware->web(append: [\VincentBean\Plausible\Middleware\TrackPlausiblePageviews::class]); }) // ...
Laravel 10 and earlier versions:
// app/Http/Kernel.php 'web' => [ // Add this middleware to the web group to track globally \VincentBean\Plausible\Middleware\TrackPlausiblePageviews::class, ],
Custom Events
You can trigger custom events on the server.
\VincentBean\Plausible\Events\PlausibleEvent::fire('custom event', ['country' => 'netherlands']);
If firing your event from a queued job or event listener, it might be necessary to pass on the user's ip
and user-agent
string which are used by Plausible to generate user session ID's.
\VincentBean\Plausible\Events\PlausibleEvent::fire('custom event', ['country' => 'netherlands'], headers: [ 'X-Forwarded-For' => $event->userIp, 'user-agent' => $event->userAgent ]);
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Credits
License
The MIT License (MIT). Please see License File for more information.