_processReferrer: function()

in src/apache-unomi-tracker.js [1264:1302]


        _processReferrer: function () {
            var referrerURL = wem.digitalData.page.pageInfo.referringURL || document.referrer;
            var sameDomainReferrer = false;
            if (referrerURL) {
                // parse referrer URL
                var referrer = new URL(referrerURL);
                // Set sameDomainReferrer property
                sameDomainReferrer = referrer.host === window.location.host;

                // only process referrer if it's not coming from the same site as the current page
                if (!sameDomainReferrer) {
                    // get search element if it exists and extract search query if available
                    var search = referrer.search;
                    var query = undefined;
                    if (search && search != '') {
                        // parse parameters
                        var queryParams = /** @type {string[] & Record<string, string>} */(/** @type {unknown} */([])), /** @type {string[]} */ param;
                        var queryParamPairs = search.slice(1).split('&');
                        for (var i = 0; i < queryParamPairs.length; i++) {
                            param = queryParamPairs[i].split('=');
                            queryParams.push(param[0]);
                            queryParams[param[0]] = param[1];
                        }

                        // try to extract query: q is Google-like (most search engines), p is Yahoo
                        query = queryParams.q || queryParams.p;
                        query = decodeURIComponent(query).replace(/\+/g, ' ');
                    }

                    // register referrer event
                    // Create deep copy of wem.digitalData.page and add data to pageInfo sub object
                    if (wem.digitalData && wem.digitalData.page && wem.digitalData.page.pageInfo) {
                        wem.digitalData.page.pageInfo.referrerHost = referrer.host;
                        wem.digitalData.page.pageInfo.referrerQuery = query;
                    }
                }
            }
            wem.digitalData.page.pageInfo.sameDomainReferrer = sameDomainReferrer;
        },