spatie/laravel-referer
Store a visitor’s original referrer in the Laravel session. Detects from utm_source first, then the external domain from the Referer header, otherwise empty. Configurable session key and referrer sources via published config.
Referer header → empty) is flexible and can be customized via configuration, allowing for alignment with business requirements (e.g., marketing attribution vs. general tracking).web group for web routes, or globally via AppServiceProvider). No route or controller modifications are needed.config/laravel-referer.php, allowing for adjustments like:
Referer over UTM).Referer headers may be stripped (e.g., HTTPS → HTTP, privacy tools like uBlock), leading to incomplete data.utm_source=) could cause edge cases.Referer and UTM are unavailable? Should a default value (e.g., "direct") be set?web group).composer require spatie/laravel-referer
php artisan vendor:publish --provider="Spatie\Referer\RefererServiceProvider"
config/laravel-referer.php (e.g., adjust priorities, whitelists).Referer header checks for internal domains:
'ignore_domains' => [
'app.example.com',
'*.internal.example.com',
],
app/Http/Kernel.php:
protected $middlewareGroups = [
'web' => [
// ...
\Spatie\Referer\Middleware\StoreReferer::class,
],
];
$referer = session('referer');
StoreReferer middleware if additional logic is needed (e.g., logging, enrichment).laravel-session, spatie/laravel-activitylog).spatie/laravel-utm, ensure UTM parsing logic aligns with referer priorities.StoreReferer early in the web group to capture referer data before other middleware (e.g., auth, CORS) might alter the request.TrustProxies
StoreReferer <-- Add here
StartSession
Authenticate
...
Referer headers) using middleware conditions:
public function handle(Request $request, Closure $next) {
if (!$request->is('web/*')) return $next($request);
// Store referer logic
}
Referer headers vs. stored session values).session('referer') is null >5% of requests).config/laravel-referer.php) reduces risk of environment-specific issues.Referer headers (use dd($request->header('Referer')) in middleware).session() helper to inspect stored data.telescope/laravel-telescope for middleware execution logs.spatie/laravel-queueable).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Session driver failure (e.g., Redis down) | Lost referer data for session duration | Use fallback session driver ( |
How can I help you explore Laravel packages today?