spatie/analytics-reports
Abandoned Laravel 4 package by Spatie to retrieve Google Analytics data via service provider/facade. Includes config publishing and depends on google/apiclient and thujohn/analytics. For Laravel 5+, use spatie/laravel-analytics.
## Getting Started
### Minimal Setup
1. **Installation** (Laravel 4 only):
```bash
composer require spatie/analytics-reports
Publish the config file:
php artisan config:publish spatie/analytics-reports
Configuration:
viewId and apiKey in config/analytics-reports.php.First Use Case: Fetch basic metrics (e.g., pageviews) for a date range:
use Spatie\AnalyticsReports\AnalyticsReportsFacade as Analytics;
$data = Analytics::get('ga:pageviews', [
'ids' => 'ga:YOUR_VIEW_ID',
'start-date' => '30daysAgo',
'end-date' => 'today',
]);
Querying Data:
Use the facade (Analytics::get()) to fetch metrics via Google Analytics' Core Reporting API.
Example: Fetch sessions by traffic source:
$sessions = Analytics::get('ga:sessions', [
'dimensions' => 'ga:source,ga:medium',
'sort' => '-ga:sessions',
]);
Date Ranges:
Leverage Google Analytics' date syntax (e.g., 7daysAgo, yesterday, 2023-01-01).
Example: Compare weekly performance:
$lastWeek = Analytics::get('ga:pageviews', [
'ids' => 'ga:YOUR_VIEW_ID',
'start-date' => '7daysAgo',
'end-date' => '1daysAgo',
]);
Integration with Laravel:
$cachedData = Cache::remember('analytics_pageviews', now()->addHours(1), function () {
return Analytics::get('ga:pageviews', [...]);
});
return view('dashboard', ['pageviews' => $data]);
Complex Reports: Combine metrics/dimensions for advanced insights:
$report = Analytics::get('ga:pageviews,ga:bounces', [
'dimensions' => 'ga:pagePath',
'metrics' => 'ga:pageviews,ga:bounces',
'filters' => 'ga:pagePath=@/blog',
]);
API Quotas:
Deprecated Package:
spatie/laravel-analytics for Laravel 5+.Laravel 4 Only:
Authentication Issues:
apiKey is a Service Account Key (JSON) with https://www.googleapis.com/auth/analytics.readonly scope.Date Format Strictness:
2023-01-01). Relative dates (e.g., yesterday) work but may break in edge cases.Enable Logging:
Add this to config/analytics-reports.php to log raw API responses:
'log_responses' => true,
Check storage/logs/laravel.log for errors.
Validate Queries: Use Google’s Query Explorer to test queries before implementing them in code.
Common Errors:
Invalid Value: Check ids, metrics, or dimensions syntax.User does not have any Google Analytics account: Verify viewId and permissions.Daily Limit Exceeded: Implement exponential backoff or switch to a paid API plan.Custom Metrics/Dimensions:
Extend the facade to support non-standard metrics by subclassing Spatie\AnalyticsReports\AnalyticsReportsServiceProvider:
// app/Providers/AnalyticsServiceProvider.php
namespace App\Providers;
use Spatie\AnalyticsReports\AnalyticsReportsServiceProvider as BaseProvider;
class AnalyticsServiceProvider extends BaseProvider {
public function register() {
parent::register();
$this->app->alias('analytics', 'App\Services\CustomAnalytics');
}
}
Batch Processing: Use Laravel queues to process large datasets asynchronously:
Analytics::dispatch('ga:pageviews', [...])->onQueue('analytics');
Local Testing: Mock the API responses in tests using Laravel’s HTTP mocking:
$response = Analytics::get('ga:pageviews', [...]);
Analytics::shouldReceive('get')->andReturn(['data' => 'mocked']);
---
**Note**: Due to the package's abandoned status, prioritize migrating to [`spatie/laravel-analytics`](https://github.com/spatie/laravel-analytics) for long-term projects. The above patterns assume continued use of this legacy package.
How can I help you explore Laravel packages today?