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(); } } }