[ Оставить заявку ]
Обсудить проект
[ Оставить заявку ]
Записаться на встречу

Генератор скрипта проброса UTM-меток при внутренних переходах на Тильде

🔗 Генератор скрипта для вашего домена

Вставьте ссылку на ваш сайт в любом формате — мы извлечём домен и подставим его в готовый код.
Поддерживаются форматы: site.ru, http://site.ru, https://site.ru/, https://www.site.ru/page

📜 Готовый код (вставьте его на ваш сайт)

Если UTM-метка не пробрасывается в каталоге:
<script>
t_onReady(function () {
    // Собираем UTM-параметры
    var urlParams = new URLSearchParams(window.location.search);
    var utmParams = {};
    var hasUtm = false;
    for (var [key, value] of urlParams.entries()) {
        if (key.indexOf("s_") === -1 && key.indexOf("tfc_") === -1) {
            utmParams[key] = value;
            hasUtm = true;
        }
    }
    if (!hasUtm) return;

    // Функция добавления параметров к любому URL
    function addParamsToUrl(url) {
        if (!url || typeof url !== 'string') return url;
        if (url.startsWith('#') || url.startsWith('javascript:') ||
            url.startsWith('mailto:') || url.startsWith('tel:')) return url;
        if (url.indexOf('http') === 0 && url.indexOf(window.location.hostname) === -1) return url;
        try {
            var urlObj = new URL(url, window.location.href);
            for (var key in utmParams) {
                if (!urlObj.searchParams.has(key)) urlObj.searchParams.set(key, utmParams[key]);
            }
            return urlObj.href;
        } catch(e) {
            return url;
        }
    }

    // Функция обработки всех атрибутов, которые могут содержать URL
    function processElement(el) {
        // Список подозрительных атрибутов
        var attrs = ['href', 'data-href', 'data-url', 'data-link', 'data-link-url', 
                     'data-product-url', 'data-item-url', 'data-target-url', 'action'];
        attrs.forEach(function(attr) {
            var val = el.getAttribute(attr);
            if (val && (val.indexOf('/') > -1 || val.indexOf('http') === 0)) {
                var newVal = addParamsToUrl(val);
                if (newVal !== val) el.setAttribute(attr, newVal);
            }
        });
    }

    // Обработка всех текущих элементов
    function processAllElements(root) {
        root = root || document.body;
        // Все элементы
        var all = root.querySelectorAll('*');
        for (var i = 0; i < all.length; i++) processElement(all[i]);
        // Особое внимание ссылкам
        var links = root.querySelectorAll('a');
        for (var i = 0; i < links.length; i++) processElement(links[i]);
    }

    processAllElements();

    // Следим за динамически подгружаемым каталогом
    document.addEventListener('tStoreRendered', function (e) {
        if (e.target) processAllElements(e.target);
    });

    // Перехватываем все клики на уровне document в фазе захвата
    document.addEventListener('click', function(e) {
        var target = e.target;
        // Ищем ближайший кликабельный элемент (a или любой с data-* url)
        var clickable = target.closest('a, [data-url], [data-href], [data-link], [data-product-url]');
        if (!clickable) return;

        // Получаем итоговый URL из разных источников
        var finalUrl = null;
        if (clickable.href) finalUrl = clickable.href; // для <a>
        else if (clickable.dataset.url) finalUrl = clickable.dataset.url;
        else if (clickable.dataset.href) finalUrl = clickable.dataset.href;
        else if (clickable.dataset.link) finalUrl = clickable.dataset.link;
        else if (clickable.dataset.productUrl) finalUrl = clickable.dataset.productUrl;
        
        if (!finalUrl) return;
        
        // Пропускаем внешние ссылки и якоря
        if (finalUrl.startsWith('#') || finalUrl.startsWith('javascript:') ||
            finalUrl.startsWith('mailto:') || finalUrl.startsWith('tel:')) return;
        if (finalUrl.indexOf('http') === 0 && finalUrl.indexOf(window.location.hostname) === -1) return;

        e.preventDefault();
        e.stopImmediatePropagation(); // блокируем другие обработчики Tilda
        
        var urlWithParams = addParamsToUrl(finalUrl);
        window.location.href = urlWithParams;
    }, true); // true = capture phase
});
</script>
Сохрани вкладку в избранном, чтоб не потерять
Помог код?
Что еще есть полезного:
    СВЯЖИТЕСЬ С НАМИ В ЛЮБОМ МЕССЕНДЖЕРЕ
    Основное
    Мы на связи с понедельника по пятницу с 10:00 до 18:00 по МСК
    ИНФОРМАЦИЯ
    ИНН: 644910511905
    Политика конфиденциальности
    2025, KETE DESIGN AGENCY – создание сайтов на Tilda