Google AnalyticsUser Guide

Google Analytics is a support library that aids Fantom-Factory Ltd in the development of other libraries, frameworks and applications. Though you are welcome to use it, you may find features are missing and the documentation incomplete.


Google Analytics is a simple service that sends page views and events to Google's Universal Analytics script.

It uses Duvet to render Javascript in HTML pages.

Quick Start

Set the Google Analytic account in your AppModule:

using afIoc
using afIocConig
using afGoogleAnalytics

const class AppModule {
  @Contribute { serviceType=ApplicationDefaults# }
  Void contributeApplicationDefaults(Configuration config) {

    config[GoogleAnalyticsConfigIds.accountNumber] = "XX-99999999-9"
    config[GoogleAnalyticsConfigIds.accountDomain] = ``  // optional, defaults to 'auto'

Or set the properies in config.props (See IoC Config)

afGoogleAnalytics.accountNumber = XX-99999999-9
afGoogleAnalytics.accountDomain =   // optional, defaults to 'auto'

The domain is optional and will be taken from the Bedsheet host / request host parameter if not supplied.

Then render the required Javascript via the GoogleAnalytics service:

using afGoogleAnalytics::GoogleAnalytics


@Inject GoogleAnalytics googleAnalytics




GoogleAnalytics automatically updates any Content-Security-Policy HTTP response headers with all neccessary directives. But if you wish to add them manually, it's been observed that the following are required:

script-src  https", "
img-src     https", "
connect-src https", "


Note that Javascript is only rendered in prod mode (see IoC Env for details). Enable debugging if want to see the generated google analytics javascript in the logs:

Log.get("afGoogleAnalytics").level = LogLevel.debug