Inserts the Google Analytics async tracking code into a Lift application.
That is, if you supply a Google Analytics tracking ID, the head of all pages will have the Google tracking Javascript code automatically added.
-
Include the dependency:
// For Lift 3.2.x (Scala 2.12): "net.liftmodules" %% "google-analytics_3.2" % "1.2.0"
Note that from 1.2.0 onwards this module switched to using Google Tag Manager (via #8). The versions below use the older
ga.js
approach.// For Lift 3.1.x (Scala 2.12): "net.liftmodules" %% "google-analytics_3.1" % "1.1.0-SNAPSHOT" // For Lift 3.0.x (Scala 2.12, 2.11): "net.liftmodules" %% "google-analytics_3.0" % "1.1" // For Lift 3.0.x (Scala 2.10): "net.liftmodules" %% "google-analytics_3.0" % "1.0-SNAPSHOT" // For Lift 2.6.x (Scala 2.11): "net.liftmodules" %% "google-analytics_2.6" % "1.1-SNAPSHOT" // For Lift 2.6.x (Scala 2.9 and 2.10): "net.liftmodules" %% "google-analytics_2.6" % "1.0" // For Lift 2.5.x (Scala 2.9 and 2.10): "net.liftmodules" %% "google-analytics_2.5" % "1.0"
-
In your application's Boot.boot code:
bootstrap.liftmodules.GoogleAnalytics.init
-
Finally, set your tracking code as the
google.tag.manager.id
in your Props file. For example, add the following tosrc/main/resources/production.default.props
google.tag.manager.id=GTM-XXXXXX
...obviously replacing
XXXXXX
with the code Google issued you with. Be sure to start your Lift app with-Drun.mode=production
flag (or set the value of google.tag.manager.id in your dev props file).
To selectively control if analytics is enable, provide a ()=>Boolean
function to the init
method:
import bootstrap.liftmodules.GoogleAnalytics
GoogleAnalytics.init { () => S.cookieValue("cookie_consent") isDefined }
There's some sugar if you want it:
import bootstrap.liftmodules.GoogleAnalytics
import GoogleAnalytics.dsl._
GoogleAnalytics.init {
only when S.cookieValue("ckns_policy").isDefined
}
To assist towards compliance to the EU Privacy and Electronic Communications Regulations (cookie laws) this module includes an end-user notification trigger. It may not be right for you, and it is your responsibility to review you compliance with any regulation.
GoogleAnalytics.alertUser ( only when S.cookieValue("cookie_consent").isEmpty ) {
JsAlert("We set Cookies")
}
The alertUser
method expects a test of type ()=>Boolean
and then a ()=>JsCmd
.
When working on this module, if you want to see the effect in a Lift project without having to publish the module, you can change your Lift project to remove the dependency on the published module and instread add a local dependency. E.g.,
// project/LoalModuleDev.scala
import sbt._
object LocalModuleDev extends Build {
lazy val root = Project("", file(".")) dependsOn(google)
lazy val google = ProjectRef(uri("../liftmodules-googleanalytics"), "LiftModule")
}
When you build your Lift project, SBT will automatically compile changes in the local Google Analytics module.