Add to your composer.json following lines
"require": {
"arcticfalcon/laravel-analytics": "~1.0"
}
Run php artisan config:publish arcticfalcon/laravel-analytics
Then edit analytics.php
in app/config/packages/arcticfalcon/laravel-analytics
to your needs.
Add 'ArcticFalcon\LaravelAnalytics\AnalyticsServiceProvider',
to providers
in app/config/app.php
.
Add 'Analytics' => 'ArcticFalcon\LaravelAnalytics\AnalyticsFacade',
to aliases
in app/config/app.php
.
provider - Provider to use, possible Providers are: GoogleAnalytics, NoAnalytics
tracking_id - Tracking ID
tracking_domain - Tracking domain, unset or set to "auto" for automatic fallback
anonymize_ip - (true|false) anonymize users ip
auto_track - (true|false) auto tracking current pageview
In controller action (or anywhere else) use following statement to track an event or page view:
// tracking the current page view
Analytics::trackPage(); // only necessary if `auto_track` is false or Analytics::disableAutoTracking() was called before
// tracking an event
Analytics::trackEvent('category', 'action');
// tracking a custom line
Analytics::trackCustom("ga('send', ......"); // this line will be added within the tracking script
In your view or layout template (e.g. a blade template) use the following statement:
{{ Analytics::render() }}
For Google Analytics you should place the statement right behind the body
tag
<body>{{ Analytics::render() }}
The GoogleAnalytics
Provider automatically controls the local environment behaviour for testing purposes.
See https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#localhost for details.
There is a builtin provider called NoAnalytics
. This is for testing environments and tracks nothing. So you do
not have to rewrite your code, simple select this provider
in analytics
configuration for your special environment
configurations.
-
Log in to Google Analytics and create custom definition. There you create a custom metrics. For example: Email opens, Integer type, min: 0 and max: 1 This will be available as
metric1
. -
Within your mail template (or page template) you have to create a tracking image
<img src="{{ Analytics::trackMeasurementUrl('metric1', '1', new Event, new Campaign, md5($user)) }}" width="1" height="1" style="background-color: transparent; border: 0 none;" />
-
That's it
For the correct usage methods look at the ArcticFalcon\LaravelAnalytics\Contracts\AnalyticsProviderInterface.php
For rendering the correct javascript code.
/**
* returns the javascript code for embedding the analytics stuff
*
* @return string
*/
public function render();
For tracking a page view.
/**
* track an page view
*
* @param null|string $page
* @param null|string $title
* @param null|string $hittype
* @return void
*/
public function trackPage($page, $title, $hittype);
For tracking an event
/**
* track an event
*
* @param string $category
* @param string $action
* @param null|string $label
* @param null|int $value
* @return void
*/
public function trackEvent($category, $action, $label, $value);
For tracking a custom script line within the embedded analytics code.
/**
* track any custom code
*
* @param string $customCode
* @return void
*/
public function trackCustom($customCode);
Enabling the auto tracking, overriding the configuration setting auto_track
.
/**
* enable auto tracking
*
* @return void
*/
public function enableAutoTracking();
Disabling the auto tracking, overriding the configuration setting auto_track
.
/**
* disable auto tracking
*
* @return void
*/
public function disableAutoTracking();
Sometimes you have to track measurements, e.g. opening an email newsletter. There you have no javascript at all.
/**
* assembles an url for tracking measurement without javascript
*
* e.g. for tracking email open events within a newsletter
*
* @param string $metricName
* @param mixed $metricValue
* @param \ArcticFalcon\LaravelAnalytics\Data\Event $event
* @param \ArcticFalcon\LaravelAnalytics\Data\Campaign $campaign
* @param string|null $clientId
* @param array $params
* @return string
*/
public function trackMeasurementUrl($metricName, $metricValue, Event $event, Campaign $campaign, $clientId = null, array $params = array());