beeketing/tracker-hub
Laravel package that centralizes client-side tracking integrations into a single “hub” so you can emit events and manage multiple trackers from one place. Aims to simplify setup and keep tracking code consistent across your app.
Installation
composer require beeketing/tracker-hub
Ensure beeketing/tracker-hub is listed in config/app.php under providers.
Publish Config
php artisan vendor:publish --provider="Beeketing\TrackerHub\TrackerHubServiceProvider" --tag="config"
This generates config/tracker-hub.php. Review the default settings (e.g., API keys, allowed trackers).
Environment Setup
Add your API keys to .env (e.g., TRACKER_HUB_API_KEY=your_key_here).
Basic Usage
use Beeketing\TrackerHub\Facades\TrackerHub;
// Track a page view
TrackerHub::trackPageView('homepage');
// Track a custom event
TrackerHub::trackEvent('user_signup', ['email' => 'user@example.com']);
Middleware Integration
Add the Beeketing\TrackerHub\Http\Middleware\TrackPageViews middleware to your app/Http/Kernel.php:
protected $middleware = [
// ...
\Beeketing\TrackerHub\Http\Middleware\TrackPageViews::class,
];
Page View Tracking
TrackPageViews).app/Http/Middleware/TrackPageViews.php:
public function handle($request, Closure $next) {
TrackerHub::trackPageView($request->path(), [
'referrer' => $request->header('referer'),
'user_agent' => $request->userAgent(),
]);
return $next($request);
}
Event Tracking
trackEvent() for custom events (e.g., button clicks, form submissions):
TrackerHub::trackEvent('checkout_started', [
'product_id' => $product->id,
'value' => $product->price,
]);
User Identification
if (auth()->check()) {
TrackerHub::identifyUser(auth()->id(), auth()->user()->email);
}
Batch Processing
TrackerHub::queueEvent('purchase_completed', ['order_id' => 123]);
Laravel Scout Sync: If using Scout, extend Beeketing\TrackerHub\ScoutEngine to sync data.
Blade Directives: Create a @track directive for inline tracking:
Blade::directive('track', function ($event) {
return "<?php \\Beeketing\\TrackerHub\\Facades\\TrackerHub::trackEvent('{$event[0]}', ".json_encode($event[1] ?? []).'); ?>";
});
Usage:
@track(['button_click', ['button_id' => 'cta']])
API Routes: Expose a /track endpoint for frontend JS tracking:
Route::post('/track', function (Request $request) {
TrackerHub::trackEvent($request->event, $request->data);
return response()->json(['success' => true]);
});
API Key Leaks
.env is in .gitignore.Rate Limiting
config/tracker-hub.php for max_retries and timeout settings.Data Sanitization
config/tracker-hub.php to whitelist allowed fields:
'allowed_event_fields' => ['product_id', 'category', 'value'],
Middleware Order
TrackPageViews after StartSession and Authenticate to access $request data.Log Events: Enable debug mode in config/tracker-hub.php:
'debug' => env('TRACKER_HUB_DEBUG', false),
Logs will appear in storage/logs/laravel.log.
Test Locally: Use a mock tracker (e.g., TrackerHub::setMockMode(true)) to verify events before going live.
Custom Trackers
Beeketing\TrackerHub\Contracts\Tracker to add support for new analytics platforms:
class CustomTracker implements Tracker {
public function track($event, array $data) {
// Custom logic (e.g., HTTP requests to your own endpoint)
}
}
config/tracker-hub.php:
'trackers' => [
'custom' => \App\Services\CustomTracker::class,
],
Event Transformers
TrackerHub::extend(function ($event, $data) {
$data['processed_at'] = now()->toIso8601String();
return $data;
});
Webhook Listeners
TrackerHub::onResponse(function ($response) {
Log::info('Tracker response', $response->toArray());
});
How can I help you explore Laravel packages today?