Skip to content

d6y/liftmodules-googleanalytics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Google Analytics Lift Module

Build Status

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.

Using this module

  1. 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"
    
  2. In your application's Boot.boot code:

       bootstrap.liftmodules.GoogleAnalytics.init
    
  3. Finally, set your tracking code as the google.tag.manager.id in your Props file. For example, add the following to src/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).

Conditional behaviour

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
}

End user cookie notification

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.

Development

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.