Server-Side Google Analytics Client
Oct 5, 2013: php-ga was ported from Google Code
where it has 8,000+ downloads and 160+ stares., (*1)
NOTE: php-ga is no longer maintained as Google finally released an official server-side
tracking API: Measurement Protocol!
I couldn't find any well-implemented client library for PHP yet, so feel free to help make
php-ga 2.0 a Measurement Protocol PHP client library., (*2)
You might also be interested in the companion project php-gacx
for Google Analytics Content Experiments., (*3)
About
php-ga basically is ga.js in PHP: An implementation of a generic server-side Google
Analytics client in PHP that implements nearly every parameter and tracking feature of the
original GA Javascript client. That means you can send data directly from your servers to
to Google Analytics – bypassing the user's browser., (*4)
I love Google Analytics and want to contribute to its community with this PHP client
implementation. It is intended to be used stand-alone or in addition to an existing
Javascript library implementation., (*5)
It's PHP, but porting it to other languages (see below for a Python port) should be easy.
Building this library involved weeks of documentation reading, googling and testing -
therefore its source code is thorougly well-documented., (*6)
The PHP client has nothing todo with the
Data Export
or Management APIs, although
you can of course use them in combination., (*7)
Requirements
Requires PHP 5.3+ as namespaces and closures are used. Has no other dependencies and can be
used independantly from any framework or whatsoever environment., (*8)
Supported Features
The current release is based on version 5.2.5 of the official Javascript client library,
see CHANGELOG
file for details., (*9)
- Pageview Tracking
- Event Tracking
- Custom Variable Tracking
- Ecommerce Tracking
- Campaign Tracking
- Social Interaction Tracking
- Site Speed Tracking
Gotchas
-
100% namespaced OOP
As a matter of course., (*10)
-
Completely abstracted from any enviroment
Doesn't rely on any globals like $_SERVER, PHP sessions or whatsoever - implement it the
way you want., (*11)
-
High-Performance Tracking
Can be configured to enqueue requests via register_shutdown_function() and to use
non-blocking requests., (*12)
-
Probably the most comprehensive technical documentation of GA
More than 50% of all source code lines are PHPDoc and inline comments!, (*13)
Caveats
-
Google Analytics' geo location functionalities won't work
Native geo location features like the worldmap view won't work anymore as they rely
solely on the IP address of the GA client - which will always be the one of your
server(s) when using this library.
Usage Example
A very basic page view tracking example:, (*14)
use UnitedPrototype\GoogleAnalytics;
// Initilize GA Tracker
$tracker = new GoogleAnalytics\Tracker('UA-12345678-9', 'example.com');
// Assemble Visitor information
// (could also get unserialized from database)
$visitor = new GoogleAnalytics\Visitor();
$visitor->setIpAddress($_SERVER['REMOTE_ADDR']);
$visitor->setUserAgent($_SERVER['HTTP_USER_AGENT']);
$visitor->setScreenResolution('1024x768');
// Assemble Session information
// (could also get unserialized from PHP session)
$session = new GoogleAnalytics\Session();
// Assemble Page information
$page = new GoogleAnalytics\Page('/page.html');
$page->setTitle('My Page');
// Track page view
$tracker->trackPageview($page, $session, $visitor);
Links
Thanks to Matt Clarke for two great articles/tutorials:, (*15)
Disclaimer
Google Analytics is a registered trademark of Google Inc., (*16)