https://github.com/axllent/silverstripe-analytics-js
Extension to add Google Universal Analytics (gtag.js) tracking code to Silverstripe
https://github.com/axllent/silverstripe-analytics-js
google-analytics google-universal-analytics gtag php silverstripe universal-analytics
Last synced: about 1 year ago
JSON representation
Extension to add Google Universal Analytics (gtag.js) tracking code to Silverstripe
- Host: GitHub
- URL: https://github.com/axllent/silverstripe-analytics-js
- Owner: axllent
- License: mit
- Created: 2014-01-22T03:06:42.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2024-11-01T03:19:11.000Z (over 1 year ago)
- Last Synced: 2025-04-14T01:19:31.474Z (about 1 year ago)
- Topics: google-analytics, google-universal-analytics, gtag, php, silverstripe, universal-analytics
- Language: PHP
- Homepage:
- Size: 94.7 KB
- Stars: 16
- Watchers: 3
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Google Universal Analytics for Silverstripe
### **Please note** that the functionality provided by this module is now fairly redundant since the release of Google Analytics 4 (GA4), and is no longer in active development.
If you're looking for an alternative then take a look at [springtimesoft/silverstripe-tracking-scripts](https://github.com/springtimesoft/silverstripe-tracking-scripts).
An extension to add Google **Universal Analytics** `gtag()` tracking code (not to be confused with Google Tag Manager) to your Silverstripe templates.
It automatically includes optional unobtrusive **event tracking** for all outbound links & "asset downloads", as well as event tracking for 404 and error pages, email & telephone links.
## Features
- Google Universal Analytics (gtag.js) code injected automatically into `` of page to prevent JavaScript conflicts due to loading order (if you are using custom `gtag()` functions in your other code.
- Automatic `pageview` tracking for all configured accounts, including tracking of 404 & 500 page errors (tracked as "Page Not Found" / "Page Error" events).
- Unobtrusive outbound, download, email & tel: link tracking - monitors all page clicks, rather than on page load (ie: works with links including those generated by Ajax etc on the page after page load).
- Uses Google Analytics `hitCallback` for tracking for outgoing links to register before load (ie: when no link `target` is set) to ensure tracker is successfully run before redirection.
- Tracking codes are automatically changed to `UA-DEV-[1-9]` if `SS_ENVIRONMENT_TYPE` is **not** live, or if page URL matches ?flush= to prevent bad data capture.
### Event tracking
Additional event tracking is automatically enabled by default for:
- File downloads (all non-image files in the assets folder) are tracked as "**Downloads**".
- Outgoing links are tracked as "**Outgoing Links**".
- Email (`mailto:`) links are tracked as "**Email Links**".
- Phone (`tel:`) links are tracked as "**Phone Links**".
Event category names (eg: "Outgoing Links", "Downloads" etc) can be configured in your yaml config.
**Note:** Event tracking only works with regular (left-or-middle) mouse button clicks (including combinations with Ctrl/Shift/Meta keys). Tracking is bypassed if the user right-clicks on a link and selects an action from the context menu (open in new tab, save as etc...). Unfortunately there is no way around this without disabling the content menu entirely.
## Requirements
- Silverstripe ^4 || ^5
For the deprecated `analytics.js` tracking method for Silverstripe 4, please refer to the [analytics.js branch](https://github.com/axllent/silverstripe-analytics-js/tree/3-analyticsjs).
For Silverstripe 3, please refer to the [Silverstripe3 branch](https://github.com/axllent/silverstripe-analytics-js/tree/silverstripe3).
## Installation via Composer
You can install it via composer with
```
composer require axllent/silverstripe-analytics-js
```
## Basic usage
Once installed the extension is automatically loaded if you provide at least one tracking account in your config yaml file (eg) `app/_config/analytics.yml`
```yaml
Axllent\AnalyticsJS\AnalyticsJS:
tracker:
- ['config', 'UA-1234567-1']
```
The syntax is very similar to the official documentation, so things like secondary trackers or other configurations can be easily added.
```yaml
Axllent\AnalyticsJS\AnalyticsJS:
tracker:
- ['config', 'UA-1234567-1'] # default account [required]
- ['config', 'UA-1234567-2'] # add secondary tracker
- ['set', 'forceSSL', true] # force tracking to use SSL
- ['require', 'ecommerce', 'ecommerce.js'] # load ecommerce extension
track_links: false # disable external link & asset tracking
ignore_link_class: "notrack" # if "track_links", then ignore external links with the "notrack" class
compress_js: false # do not compress inline JavaScript
primary_gtag_id: "UA-1234567-1" # set the default tracking id to be used when loading gtag (defaults to the first tracker)
```
Please refer to the [Configuration.md](docs/en/Configuration.md) for all configuration options.
To start live tracking, make sure your website is in `live` mode, or if running in `dev` or `staging` that you
have the `track_in_dev_mode: true` option.