happyr / google-analytics-bundle
The Google Analytics Bundle lets you send data (like event tracking) to Google.
Installs: 244 052
Dependents: 0
Suggesters: 1
Security: 0
Stars: 49
Watchers: 5
Forks: 15
Open Issues: 7
Type:symfony-bundle
Requires
- php: ^7.1
- cache/void-adapter: ^1.0
- psr/cache: ^1.0
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- symfony/config: ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1
- symfony/dependency-injection: ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1
- symfony/event-dispatcher: ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1
- symfony/http-foundation: ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1
- symfony/http-kernel: ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1
Requires (Dev)
- nyholm/symfony-bundle-test: ^1.4
- phpunit/phpunit: ^7.5.4
- symfony/browser-kit: ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1
- symfony/framework-bundle: ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1
Suggests
- happyr/google-site-authenticator-bundle: To be able to fetch data from google analytics.
- php-http/httplug-bundle: To register HTTP clients as services
README
GoogleAnalyticsBundle is a Symfony2 bundle that helps you to push data to Google Analytics. It could be data like pageview, events etc. It is a bundle implementation of the Measurement Protocol
This is not a library to pull data from Google analytics. That feature is deprecated from the classic-analytics
branch.
The master branch and version 3 and above will be supporting Google analytics universal.
Special feature
This bundle has a special feature. Say that you want to post data to Analytics. You want to post an event every time someone downloads a file. You may do that from the server like any other library. When looking at the reports you will find that you are missing the information about the actual user for the download event. You can not use a segment to find out which referal the user came from.
This bundle helps you with just that. Before we submit any data we look at the _ga
cookie to find the user's clientId. So now you may use segments and advanced queries to analytics and you will get the expected result.
Usage
Read the documentation of the protocol.
//in some container aware class $tracker = $this->get(Tracker::class); $data=array( 'dh'=>'mydemo.com', 'dp'=>'/home', 'dt'=>'homepage', ); $tracker->send($data, 'pageview');
Installation
Install with composer.
composer require happyr/google-analytics-bundle
Step 2: Register the bundle
Register the bundle in the AppKernel.php
<?php // in AppKernel::registerBundles() $bundles = array( // ... new Happyr\GoogleAnalyticsBundle\HappyrGoogleAnalyticsBundle(), // ... );
Step 3: Configure the bundle
# app/config/config.yml happyr_google_analytics: // ... tracking_id: UA-XXXX-Y
Step 4: Provide a HTTP client and message factory service.
You need to provide two services to that know how to create and send message factories. The services must implement
Http\Message\RequestFactory
and Http\Client\HttpClient
. If you use HTTPlugBundle
this will be taken care of automatically. You will aslo get some nice logging features.
# app/config/config.yml happyr_google_analytics: // ... http_client: 'httplug.client' http_message_factory: 'httplug.message_factory
Fetching data
If you want to fetch data from Google Analytics you must install and configure GoogleSiteAuthenticatorBundle. Read its documentaion and then configure the analytics bundle with a client service
and a view id
. The view id
is found in the admin section on Google analytics. Go to Admin > Account > Property > View > View settings.
# app/config/config.yml happyr_google_analytics: // ... tracking_id: UA-XXXX-Y fetching: client_service: 'google.client.tobias_gmail' view_id: 0123456789 cache_service: 'cache.provider.my_memcached' # optinally a PSR6 cache service cache_lifetime: 3600 # default
You may then run the following code to get the page views for /example-page.
$fetcher = $this->get(AnalyticsDataFetcher::class); $pv = $fetcher->getPageViews('/example-page');