This package offers integration to GA4 properties with some out of the box methods. Inspired by Spatie integration for GA3. Requires Laravel 9+.
You can install the package via composer:
composer require myoutdeskllc/laravel-analytics-v4
You can publish the config file with:
php artisan vendor:publish --tag="analytics-v4-config"
This is the contents of the published config file:
return [
'property_id' => env('ANALYTICS_PROPERTY_ID', 'XXXXXXXXX'),
'service_account_credentials_json' => storage_path('app/analytics/service-account-credentials.json'),
// This data is passed into the built-in cache mechanism for google's CredentialWrapper
'cache' => [
'enableCaching' => env('ANALYTICS_CACHE',false),
'authCache' => null,
'authCacheOptions' => [
'lifetime' => env('ANALYTICS_CACHE_LIFETIME', 60), // you may want to set this higher
'prefix' => env('ANALYTICS_CACHE_PREFIX', 'analytics_'),
]
]
];
Inside Laravel:
use Myoutdeskllc\LaravelAnalyticsV4\Period;
use Myoutdeskllc\LaravelAnalyticsV4\PrebuiltRunConfigurations;
$client = App::make('laravel-analytics-v4');
$lastMonth = Period::months(1);
$results = $client->runReport(PrebuiltRunConfigurations::getMostVisitedPages($lastMonth));
You may configure your own report configuration, or use a pre-built report:
// Use this on the laravel side to get it from the container
$analytics = App::make('laravel-analytics-v4');
// Prepare a filter
$filter = new StringFilter();
$filter->setDimension('country')->exactlyMatches('United States');
// Prepare a report
$reportConfig = (new RunReportConfiguration())
->setStartDate('2022-09-01')
->setEndDate('2022-09-30')
->addDimensions(['country', 'landingPage', 'date'])
->addMetric('sessions')
->addFilter($filter);
$analytics->convertResponseToArray()->runReport($reportConfig);
Yay, results:
[
"dimensions" => [
"country" => "United States",
"landingPage" => "/",
"date" => "20220903",
],
"metrics" => [
"sessions" => "113",
],
],
[
"dimensions" => [
"country" => "United States",
"landingPage" => "/services/",
"date" => "20220902",
],
"metrics" => [
"sessions" => "110",
],
],
Or Using Prebuilt Report Configurations:
$lastMonth = Period::months(1);
$analytics->runReport(PrebuiltRunConfigurations::getMostVisitedPages($lastMonth));
composer test
Please see CHANGELOG for more information on what has changed recently.
Submit a PR with passing tests.
The MIT License (MIT). Please see License File for more information.