@telefonica/google-analytics
v2.1.0
Published
> Google Analytics 4 library for Telefonica web projects
Readme
@telefonica/google-analytics
Google Analytics 4 library for Telefonica web projects
Usage
import {initAnalytics, setUserProperty, logEvent, setScreenName} from '@telefonica/google-analytics';
initAnalytics('G-XXXXXXXXXX');
setUserProperty('my_user_property', 'my_user_property_value');
setScreenName('my_screen_name');
logEvent({name: 'my_event_name', foo: 'bar'});Things to know
initAnalyticsmust be called before any other function. This function will inject the gtag script in the document.initAnalyticsfunction is idempotent. Subsequent calls toinitAnalyticswill not have any effect.initAnalyticsaccepts an optional parameter, config, which allows you to set additional configuration options. For example:initAnalytics('G-XXXXXXXXXX', {config: {user_id: 'user_1234', custom_param: 'value'}});The config object will be passed to the gtag function when initializing Google Analytics. For more information on the available options, see the Google Analytics documentation.
logEventandsetScreenNamecalls won't send any data to Google Analytics untilinitAnalyticsis called. If you calllogEventorsetScreenNamebeforeinitAnalytics, the calls will be queued and sent to Google Analytics onceinitAnalyticsis done.Money amounts must be normalized with
sanitizeAnalyticsMoneyAmountfunction. This function will remove decimals exceeding two decimal places, multiply by 100 and convert the value to a string. If you don't do so and send a number, unexpected results may happen because the normalization described below will be executed before sending the event. This restriction does not apply to ecommerce events (https://support.google.com/analytics/answer/9267735?hl=en).Events are normalized before being sent to Google Analytics:
- Event params name are truncated to 40 characters.
- Event params value are truncated to 100 characters.
- Not allowed characters are removed from event params value.
- Multiple white spaces are removed and spaces are replaced by underscores in event params value.
- The same normalization is applied to screen names.
- For non ecommerce events, numbers are converted to strings and then string normalization is applied. That means if there are dots (as in decimal numbers) they will be removed.
If
setScreenNameis called multiple times with the same screen name, only the first call will be sent to Google Analytics.setScreenNameandlogEventreturn a promise that resolves when the event has been sent to Google Analytics.All the events are automatically filled with a
screenNameparam containing the last screen name set withsetScreenName.
Use custom Api
Events are sent to Google servers by default (using gtagApi), but you can use a custom api to change this
behavior. For example, Novum app uses the webview bridge to send the events to the native app, and then the
native app sends the events to Firebase.
Another use case of custom api is to log events in the browser console in development mode:
import {initAnalytics, consoleApi, gtagApi} from '@telefonica/google-analytics';
initAnalytics('G-XXXXXXXXXX', {
api: process.env.NODE_ENV === 'production' ? gtagApi : consoleApi,
});CSP
If you are using a CSP, you must add the following directives for Google Analytics to work:
script-src https://*.googletagmanager.com; connect-src https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com; img-src https://*.google-analytics.com https://*.googletagmanager.com;Check Google docs for CSP in Google Analytics 4
