Passing on UTM values

There will be occasions when you need to pass on UTM information either within a site or out to third parties.

We show you how to do this, both per page and per site, in this video. The code snippet is available below the video.

The magic code:

var url = new URL(window.location.href); // Get current URL
var search_params = new URLSearchParams(url.search); // Get URL params

// Check if UTM params exist
if (search_params.has('utm_source') || search_params.has('utm_campaign') || search_params.has('utm_medium') || search_params.has('utm_content')) {
    var links = document.getElementsByTagName('a');
    var utmMatch = window.location.href.match(/(utm_source=.?&utm_medium=.?&utm_campaign=.?&utm_content=.?)(?:&|$)/i);
    if (utmMatch) {
        var utm = utmMatch[1];
        for (var i = 0; i < links.length; i++) {
            // Check if link refers to an external website or has an anchor for the same page
            if (links[i].hostname !== window.location.hostname || links[i].getAttribute('href').startsWith('#')) {
                continue; // Skip appending UTM parameters to external links and internal anchors
            }
            var linkUrl = new URL(links[i].href);
            // Merge existing search params with UTM params
            var newSearchParams = new URLSearchParams(linkUrl.search);
            utm.split('&').forEach(param => {
                var [key, value] = param.split('=');
                newSearchParams.set(key, value);
            });
            linkUrl.search = newSearchParams.toString();
            links[i].href = linkUrl.toString();
        }
    }
}

Still need help? Contact Us Contact Us