Client Side API
The functions are available on the client side in JavaScript to allow extending the default behaviour of the feature beyond recording page views.
Altis.Analytics.onReady( callback <function> )
Use this function to ensure analytics has loaded before making calls to Altis.Analytics.registerAttribute()
or Altis.Analytics.record()
for example.
Endpoint Functions
Altis.Analytics.updateEndpoint( data <object> )
Updates the data associated with the current user. Use this to provide updated custom user attributes and metrics, a user ID, and demographic data.
The endpoint data is merged with all new event records associated with that endpoint.
The accepted data shape is as follows:
{
"Address": string,
"Attributes": { "key": string[], ... },
"Demographic": {
"AppVersion": string,
"Locale": string,
"Make": string,
"Model": string,
"ModelVersion": string,
"Platform": string,
"PlatformVersion": string,
"Timezone": string
},
"Location": {
"City": string,
"Country": string,
"Latitude": number,
"Longitude": number,
"PostalCode": string,
"Region": string
},
"Metrics": { "key": number, ... },
"OptOut": string,
"User": {
"UserAttributes": { "key": string[], ... },
"UserId": string
}
}
Altis.Analytics.getEndpoint()
Returns the current endpoint data object.
Note that even if attributes, metrics or user attributes are provided as a single string or number they will be returned as an array of that type by this function.
Tracking Functions
Altis.Analytics.record( eventType <string> [, data <object>] )
Records an event of eventType
. This can be any string. The optional data passed in should be an object with either or both an attributes
object and metrics
object:
{
attributes: {
name: 'value' // <string>
// ...
},
metrics: {
name: 1 // <number>
// ...
},
}
Those attributes and metrics can be later queried via Elasticsearch.
Extending Event Data
Altis.Analytics.registerAttribute( name <string>, value <string | callback> )
Registers a dynamic attribute value for all events recorded on the page. The value must be a single string, arrays are not supported for event attributes. If a function is passed as the value it will be evaluated whenever an event recorded. Callbacks support async/await
or returning a Promise
. It is recommended to cache the results or memoize the function if using asynchronous data.
Altis.Analytics.registerMetric( name <string>, value <number | callback> )
Similar to registerAttribute()
above but for metrics.
Audience Functions
Altis.Analytics.updateAudiences()
Synchronises the current audiences associated with the page session. You shouldn't ever need to call this manually but it is called any time updateEndpoint()
, registerAttribute()
or registerMetric()
are called. You can hook into the updateAudiences
event to respond to changes in this data.
Altis.Analytics.getAudiences()
Retrieves an array of the audience IDs for the current page session.
Event Hooks
Altis.Analytics.on( event <string>, callback <callback> ) : EventListener
Attaches and returns an event listener. The available events and their callback arguments are:
updateEndpoint
Called any time the current endpoint data is updated. The callback receives the endpoint object.Altis.Analytics.on( 'updateEndpoint', function ( endpoint ) { console.log( endpoint.Demographic ); // { Platform: 'Mac OS', .... } } );
record
: Called any time an event is recorded. The callback receives the pinpoint event object.Altis.Analytics.on( 'record', function ( event ) { console.log( event.Attributes, event.event_type ); // { referer: '', ... }, 'pageView' } );
updateAudiences
Called any time the audiences are updated. The callback receives an array of audience IDs.Altis.Analytics.on( 'updateAudiences', function ( audiences ) { console.log( audiences ); // [ 1, 2, 3, ... ] } );
Altis.Analytics.off( listener <EventListener> )
Removes an event listener returned by Altis.Analytics.on()
.