phonghaw2/laravel-google-analytics

A Laravel package to retrieve Google Analytics data.

dev-main 2023-11-11 16:03 UTC

This package is auto-updated.

Last update: 2024-05-11 17:07:06 UTC


README

MIT Licensed Total Downloads

Installation

For Laravel ^6.0|^7.0|^8.0

This package can be installed through Composer.

composer require phonghaw2/laravel-google-analytics

Optionally, you can publish the config file of this package with this command:

php artisan vendor:publish --provider="Phonghaw2\Analytics\AnalyticsServiceProvider"

The following config file will be published in config/analytics.php

return [

    /*
     * The property id of which you want to display data.
     */
    'property_id' => env('ANALYTICS_PROPERTY_ID'),

    /*
     * Path to the client secret json file. Take a look at the README of this package
     * to learn how to get this file. You can also pass the credentials as an array
     * instead of a file path.
     */
    'service_account_credentials_json' => storage_path('app/analytics/service-account-credentials.json'),

    /*
     * The amount of minutes the Google API responses will be cached.
     * If you set this to zero, the responses won't be cached at all.
     */
    'cache_lifetime_in_minutes' => 60 * 24,

    /*
     * Here you may configure the "store" that the underlying Google_Client will
     * use to store it's data.  You may also add extra parameters that will
     * be passed on setCacheConfig (see docs for google-api-php-client).
     *
     * Optional parameters: "lifetime", "prefix"
     */
    'cache' => [
        'store' => 'file',
    ],
];

Getting credentials

Save the json inside your Laravel project at the location specified in the service_account_credentials_json key of the config file of this package. Because the json file contains potentially sensitive information I don't recommend committing it to your git repository.

Granting permissions to your Analytics property

I'm assuming that you've already created a Analytics account on the Analytics site and are using the new GA4 properties.

First you will need to know your property ID. In Analytics, go to Settings > Property Settings.

Here you will be able to copy your property ID. Use this value for the ANALYTICS_PROPERTY_ID key in your .env file.

Usage

Using this package you can easily retrieve data from Google Analytics.

Here are a few examples of the provided methods:

use Phonghaw2\Analytics\AnalyticsFacade;
use Phonghaw2\Analytics\Period;

// You can set data with
Period::set($startDate, $endDate);
// https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
// startDate, $endDate : The format NdaysAgo, yesterday, or today is also accepted

// Fetch the pages view for today and the 20 days ago
AnalyticsFacade::fetchPageViews(Period::set('20daysAgo', 'today'));

// Retrieve pageview data for the current day and the last seven days
$analyticsData = Analytics::fetchPageViews(Period::days(7));

// Retrieve pageviews since the 6 months ago
$analyticsData = Analytics::fetchPageViews(Period::months(6));

// fetch data 
use \Google\Service\AnalyticsData\Dimension;
use \Google\Service\AnalyticsData\Metric;
$dimensions = new Dimension(array('name' => 'pageTitle'));
$metrics = new Metric(array('name' => 'screenPageViews'));
Analytics::fetch(Period::days(7), $dimensions, $metrics);

Provided methods

Or The total amount of time (in seconds) your website or app was in the foreground of users' devices.

public function fetchUserEngagementReport(Period $period): Collection

All methods will return an \Illuminate\Support\Collection object containing the results.

All other Google Analytics queries

To perform all other queries on the Google Analytics resource use performQuery. Google's Core Reporting API provides more information on which metrics and dimensions might be used.

public function performQuery(Period $period, string $metrics, array $others = [])

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

License

The MIT License (MIT). Please see License File for more information.