Google Analytics

The Google Analytics provider sends data to Google using the Measurement Protocol.

Tracking pageviews

import analytical
from analytical.providers.googleanalytics import generate_client_id

ga = analytical.Provider('googleanalytics', 'UA-XXXXXX-Y')
ga.pageview({
    "ua": "user-agent",             # User agent
    "uip": "12.34.56.78",           # User IP address
    "dl": "https://example.com",    # URL of the pageview (required)
    "dt": "page title",             # Title of the page
})

For the complete list of parameters, see the reference.

Tracking events

import analytical

ga = analytical.Provider('googleanalytics', 'UA-XXXXXX-Y')
ga.event({
    "ua": "user-agent",
    "uip": "12.34.56.78",
    "ec": "event-category",         # Event category (required)
    "ea": "event-action",           # Event action (required)
    "el": "event-label",            # Event label (optional)
    "ev": 0,                        # Event value (optional, integer)
})

See the event parameter reference for more details.

Utility functions

analytical.providers.googleanalytics.generate_client_id(user_secret=None)

Generate a Google Analytics client ID (the cid parameter)

GA treats users with the same client ID as the same user for analytics purposes. This function helps generate a client ID that can be used to track new vs. returning visitors without cookies.

# Use the User Agent and IP Address
# The downside to this is if the IP or UA changes, it's considered a new user
# The upside is it doesn't require anything from a database, cookies or elsewhere
secret = '{}${}${}'.format('my-secret', ip_address, user_agent)
client_id = generate_client_id(secret)

# Use a user ID value from a database or elsewhere
secret = '{}${}'.format('my-secret', user.id)
client_id = generate_client_id(secret)
Parameters:user_secret (str) – a secret that shouldn’t change for a given user. If None, treat all pageviews and events as new/unique.
Returns str:a client ID suitable for using with Google Analytics