Настройка проброса UTM-меток через GTM
Проблема
В Steam аналитика строится на основе UTM-меток, проблема возникает когда используется посадочная страница. UTM-метки каждой рекламной кампании надо перенести в кнопку на сайте иначе они останутся только в URL самой посадочной страницы. Ниже как это сделать с помощью одного тега и триггера в Google Tag Manager.
Настройки тега
Закидываем код в кастомный html-тег
<script>
(function() {
var domainsToDecorate = [
'store.steampowered.com', //add or remove domains (without https or trailing slash)
],
queryParams = [
'utm_medium', //add or remove query parameters you want to transfer
'utm_source',
'utm_campaign',
'utm_content',
'utm_term'
]
// do not edit anything below this line
var links = document.querySelectorAll('a');
// check if links contain domain from the domainsToDecorate array and then decorates
for (var linkIndex = 0; linkIndex < links.length; linkIndex++) {
for (var domainIndex = 0; domainIndex < domainsToDecorate.length; domainIndex++) {
if (links[linkIndex].href.indexOf(domainsToDecorate[domainIndex]) > -1 && links[linkIndex].href.indexOf("#") === -1) {
links[linkIndex].href = decorateUrl(links[linkIndex].href);
}
}
}
// decorates the URL with query params
function decorateUrl(urlToDecorate) {
urlToDecorate = (urlToDecorate.indexOf('?') === -1) ? urlToDecorate + '?' : urlToDecorate + '&';
var collectedQueryParams = [];
for (var queryIndex = 0; queryIndex < queryParams.length; queryIndex++) {
if (getQueryParam(queryParams[queryIndex])) {
collectedQueryParams.push(queryParams[queryIndex] + '=' + getQueryParam(queryParams[queryIndex]))
}
}
return urlToDecorate + collectedQueryParams.join('&');
}
// borrowed from https://stackoverflow.com/questions/831030/
// a function that retrieves the value of a query parameter
function getQueryParam(name) {
if (name = (new RegExp('[?&]' + encodeURIComponent(name) + '=([^&]*)')).exec(window.location.search))
return decodeURIComponent(name[1]);
}
})();
</script>
Настройки триггера
- Trigger Type: Page View - Dom Ready
- Fire on «Some DOM ready Events»:
{{Page URL}}—matches RegEx (ignore case)—utm_source=|utm_medium=|utm_campaign=|utm_term=|utm_content=