spatie/laravel-analytics
Laravel package to retrieve Google Analytics data in your app. Provides simple methods to fetch visitors, page views, and most visited pages over a given period, returning results as Laravel Collections via an easy-to-use facade.
Pros:
fetchVisitorsAndPageViews, fetchMostVisitedPages), enabling targeted feature adoption without overhauling the system.Analytics facade, abstracting complexity for developers and reducing boilerplate.Period class simplifies date-range handling, reducing errors in API calls.Cons:
get() method.cache_lifetime_in_minutes), and testing tools (e.g., Analytics::fake()).['date', 'visitors', 'pageViews']), compatible with Laravel’s Eloquent or Blade templating.Analytics::fake()) simplifies unit/integration tests.cache_lifetime_in_minutes) to mitigate.get() method for advanced queries?AnalyticsServiceProvider).Analytics::fetchVisitorsAndPageViews()).Illuminate\Support\Collection).google/auth (for OAuth2).google/analytics-data (GA4 API client).spatie/laravel-package-tools (for config publishing).composer require spatie/laravel-analytics
php artisan vendor:publish --tag="analytics-config"
.env:
ANALYTICS_PROPERTY_ID=your-ga4-property-id
storage/app/analytics/service-account-credentials.json (or update service_account_credentials_json in config/analytics.php).Analytics::fake() in tests to mock responses.$data = Analytics::fetchVisitorsAndPageViews(Period::days(1));
dd($data);
google/analytics-data v1beta, which may evolve. Monitor GA4 API updates.config/analytics.php.Route::get('/analytics/dashboard', function () {
$visitors = Analytics::fetchVisitorsAndPageViews(Period::days(7));
return view('analytics.dashboard', compact('visitors'));
});
Analytics::get().cache_lifetime_in_minutes based on usage patterns.service_account_credentials_json path/config in config/analytics.php.try {
$data = Analytics::fetchVisitorsAndPageViews(Period::days(1));
} catch (\Exception $e) {
\Log::error('Analytics API failed: ' . $e->getMessage());
}
cache_lifetime_in_minutes) to reduce API calls.How can I help you explore Laravel packages today?