@ALDL

Как пробросить UTM метки внутри сайта?

Есть задача сохранять UTM метки при входе на сайт на всем пользовательском пути внутри сайта.

Пример:
1. Например человек приходит на сайте с UTM - site.ru/?&utm_campaign=step4
2. При переходе на страницу site.ru/post.html UTM очищается, а должно остаться ?&utm_campaign=step4

На сайте подключен GTM, возможно есть какое-то готовое решения для этого?
  • Вопрос задан
  • 3068 просмотров
Пригласить эксперта
Ответы на вопрос 2
@aftar
Сохранить их в localstorage и удалить в случае отправки формы

//-МЕТА ТЕГИ
var href = window.location.href;
var search = window.location.search;
var utm_mas = []; /* Пустой массив для хранения UTM меток, разбитых по "&" */
var ref = document.referrer;

if (href.indexOf("?") != -1) {
href = href.slice(0,href.indexOf("?")); /* Адрес страницы без UTML хвоста */
search = search.slice(1); /* UTM хвост без вопроса */
utm_mas = search.split("&"); /* Массив UTM меток (ключ=значение) */
localStorage.utm_mas = JSON.stringify(utm_mas);
}

if (localStorage.getItem('utm_mas') !== null) {
var utm_key_value = {};
var utm_mas_key = localStorage.utm_mas ? JSON.parse(localStorage.utm_mas) : [];

/* Заполняем объект, создавая свойста и значения */
for (i = 0; i < utm_mas_key.length; i++) {
utm_key_value[utm_mas_key[i].split("=")[0]] = utm_mas_key[i].split("=")[1];
}
/* Декодируем ключевые слова в UTM метке */
if (utm_key_value.utm_term != "undefined"){utm_key_value.utm_term = decodeURIComponent(utm_key_value.utm_term);}
if (utm_key_value.utm_term == "undefined"){utm_key_value.utm_term = "";}
}
else {
utm_key_value = "";
}

Зададим переменные ддя ajax
var data = $(this).serializeArray();
data.push({name: 'href', value: href});
data.push({name: 'search', value: search});
data.push({name: 'term', value: utm_key_value.utm_term});
data.push({name: 'content', value: utm_key_value.utm_content});
data.push({name: 'campaign', value: utm_key_value.utm_campaign});
data.push({name: 'medium', value: utm_key_value.utm_medium});
data.push({name: 'source', value: utm_key_value.utm_source});

Удалить из localstorage можешь в случае успешной отправки формы
localStorage.removeItem('utm_mas');
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Да в сессию засуньте и все, дальше все движения элементарно отслеживаются. Хотите следить при последующих заходах - пишите в куки / локалстораж.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы