Event tracking is on by default (events.enabled = true). Use it to record custom events from anywhere in your application.
From Ranetrace::trackEvent(), each event ships with:
?int $userId you pass explicitly).user_agent_hash — the user agent hashed, not stored raw.session_id_hash — the session ID hashed.The IP address is not included in the event payload.
use Ranetrace\Laravel\Facades\Ranetrace;
Ranetrace::trackEvent('button_clicked', [
'button_id' => 'header-cta',
'page' => 'homepage',
]);
Full signature:
Ranetrace::trackEvent(
string $eventName,
array $properties = [],
?int $userId = null,
bool $validate = true,
);
By default the event name is validated. Pass validate: false to skip that check.
The RanetraceEvents facade exposes typed helpers (see the @method block on Ranetrace\Laravel\Facades\RanetraceEvents):
use Ranetrace\Laravel\Facades\RanetraceEvents;
// Sales
RanetraceEvents::sale(
orderId: 'ORDER-456',
totalAmount: 89.97,
products: [
['id' => 'PROD-123', 'name' => 'Widget', 'price' => 29.99, 'quantity' => 3],
],
currency: 'USD',
);
// Cart additions
RanetraceEvents::productAddedToCart(
productId: 'PROD-123',
productName: 'Widget',
price: 29.99,
quantity: 1,
);
// Authentication
RanetraceEvents::userRegistered(userId: $user->id);
RanetraceEvents::userLoggedIn(userId: $user->id);
// Page views (server-recorded)
RanetraceEvents::pageView(pageName: 'pricing');
// Generic custom event
RanetraceEvents::custom('newsletter_signup', ['source' => 'footer']);
All helpers accept an array $additionalProperties = [] as their final argument for ad-hoc fields.
php artisan ranetrace:test-events
From config/ranetrace.php:
'events' => [
'enabled' => env('RANETRACE_EVENTS_ENABLED', true),
'queue' => env('RANETRACE_EVENTS_QUEUE', true),
'queue_name' => env('RANETRACE_EVENTS_QUEUE_NAME', 'default'),
'timeout' => env('RANETRACE_EVENTS_TIMEOUT', 10),
],
To disable:
RANETRACE_EVENTS_ENABLED=false