in src/apache-unomi-tracker.js [81:152]
startTracker: function (digitalDataOverrides = undefined) {
// Check before start
let cookieDisabled = !navigator.cookieEnabled;
let noSessionID = !wem.sessionID || wem.sessionID === '';
let crawlerDetected = navigator.userAgent;
if (crawlerDetected) {
const browserDetector = new Crawler();
crawlerDetected = browserDetector.isCrawler(navigator.userAgent);
}
if (cookieDisabled || noSessionID || crawlerDetected) {
document.addEventListener('DOMContentLoaded', function () {
wem._executeFallback('navigator cookie disabled: ' + cookieDisabled + ', no sessionID: ' + noSessionID + ', web crawler detected: ' + crawlerDetected);
});
return;
}
// Register base context callback
wem._registerCallback(function () {
if (wem.cxs.profileId) {
wem.setCookie(wem.trackerProfileIdCookieName, wem.cxs.profileId);
}
if (!wem.cxs.profileId) {
wem.removeCookie(wem.trackerProfileIdCookieName);
}
if (!wem.disableTrackedConditionsListeners) {
wem._registerListenersForTrackedConditions();
}
}, 'Default tracker', 0);
// Load the context once document is ready
document.addEventListener('DOMContentLoaded', function () {
wem.DOMLoaded = true;
// enrich digital data considering extensions
wem._handleDigitalDataOverrides(digitalDataOverrides);
// complete already registered events
wem._checkUncompleteRegisteredEvents();
// Dispatch javascript events for the experience (perso/opti displayed from SSR, based on unomi events)
wem._dispatchJSExperienceDisplayedEvents();
// Some event may not need to be send to unomi, check for them and filter them out.
wem._filterUnomiEvents();
// Add referrer info into digitalData.page object.
wem._processReferrer();
// Build view event
const viewEvent = wem.buildEvent('view', wem.buildTargetPage(), wem.buildSource(wem.digitalData.site.siteInfo.siteID, 'site'));
viewEvent.flattenedProperties = {};
// Add URLParameters
if (location.search) {
viewEvent.flattenedProperties['URLParameters'] = wem.convertUrlParametersToObj(location.search);
}
// Add interests
if (wem.digitalData.interests) {
viewEvent.flattenedProperties['interests'] = wem.digitalData.interests;
}
// Register the page view event, it's unshift because it should be the first event, this is just for logical purpose. (page view comes before perso displayed event for example)
wem._registerEvent(viewEvent, true);
if (wem.activateWem) {
wem.loadContext();
} else {
wem._executeFallback('wem is not activated on current page');
}
});
},