utm метки тильда теряются каждый день у сотен сайтов, и обычно это замечают не сразу - только когда открывают отчёт в Яндекс.Метрике или Google Analytics и видят, что трафик из платной рекламы записался как «прямые заходы» или «переходы по ссылке». Я разбирал такие кейсы у клиентов на Тильде десятки раз: реклама льёт бюджет, заявки приходят, а в CRM или таблице лидов источник не определить. Ниже - конкретные причины, из-за которых Тильда теряет метки, и рабочие способы их сохранить от первого захода до записи в CRM.
Почему UTM-метки пропадают на сайте Тильды
Тильда не хранит GET-параметры в состоянии страницы сама по себе - она просто отдаёт HTML, а дальше всё зависит от того, куда двигается пользователь. Метки теряются в трёх типичных ситуациях.
Первая - многостраничный сайт. Пользователь пришёл по ссылке с ?utm_source=yandex на страницу «Услуги», а затем кликнул на «Контакты» или «Каталог». Ссылка на другую страницу сайта не содержит парам��тров, и переход на неё обнуляет метку - Метрика видит новый визит без источника или с источником по умолчанию.
Вторая - блоки Тильды с формами захвата, где данные о заявке уходят на почту или в CRM без привязки к тому, откуда пришёл конкретный визит. Форма просто не знает про UTM, если её не научить.
Третья - кэш браузера и AMP-версии для мобильного трафика: иногда пользователь видит закэшированную версию страницы без параметров в адресной строке, и счётчики фиксируют заход как повторный без источника.
Отдельно встречается ситуация с редиректами: если домен настроен через промежуточный сервис сокращения ссылок или через рекламный кабинет с собственным редиректом, а на Тильде стоит редирект с www на без-www или наоборот, часть систем на этом шаге режет query-параметры.
Как Тильда обрабатывает GET-параметры при переходах между страницами
По умолчанию Тильда не пробрасывает параметры автоматически между внутренними страницами сайта. Единственное исключение - если ссылки внутри самого сайта прописаны с явным сохранением параметров вручную, что нереально поддерживать на сайте из 10-20 страниц.
Практический вывод простой: рассчитывать на «само сохранится» нельзя. Нужен скрипт, который на старте визита читает параметры из URL, кладёт их в постоянное хранилище браузера (cookie или localStorage) и потом достаёт их при отправке формы - независимо от того, на какой странице сайта пользователь оставил заявку.
Скрипт для передачи UTM-параметров в скрытые поля форм
Самый надёжный вариант для форм Тильды - добавить в форму скрытые поля (в редакторе формы это делается через настройку полей с типом «Скрытое поле») и заполнять их скриптом при загрузке страницы.
function getUtmParams() {
var params = new URLSearchParams(window.location.search);
var keys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];
var result = {};
keys.forEach(function(key) {
var value = params.get(key);
if (value) {
result[key] = value;
localStorage.setItem(key, value);
} else {
var saved = localStorage.getItem(key);
if (saved) result[key] = saved;
}
});
return result;
}
document.addEventListener('DOMContentLoaded', function() {
var utm = getUtmParams();
Object.keys(utm).forEach(function(key) {
var field = document.querySelector('input[name="' + key + '"]');
if (field) field.value = utm[key];
});
});
Этот код кладу в T123 (Zero Block) или в настройки страницы через «Ещё» → «Вставка кода» → в футер сайта, чтобы он подхватывался на каждой странице, а не только на посадочной. Названия скрытых полей в форме должны совпадать один в один с ключами utm_source, utm_medium и так далее - Тильда чувствительна к точному совпадению имени поля.
Если не хочется собирать такой скрипт с нуля и разбираться с особенностями конкретного шаблона Zero Block, у меня в библиотеке готовых скриптов есть рабочие варианты именно под формы Тильды - быстрее адаптировать под конкретный сайт, чем писать заново.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Сохранение UTM-меток в cookie для сквозной аналитики
localStorage работает только в рамках одного браузера на одном устройстве и обнуляется, если пользователь чистит данные сайта. Для более длинного цикла принятия решения - например, B2B-заявки, где человек приходит с рекламы, а оставляет заявку через два-три дня, - я обычно дублирую метки в cookie с длительным сроком жизни.
| Способ хранения | Срок жизни | Когда использую |
|---|---|---|
| URL-параметры | Только текущая страница | Не годится для многостраничников |
| localStorage | Пока не почистят браузер | Одностраничный лендинг, короткий цикл |
| Cookie (30-90 дней) | Задаётся вручную | Сквозная аналитика, длинный цикл сделки |
| Скрытые поля формы | Момент отправки | Передача в CRM вместе с заявкой |
На рынке разработчики чаще всего ставят cookie на 30-90 дней под модель атрибуции last non-direct click - то есть засчитывают последний рекламный переход, если между ним и заявкой не было прямого захода на сайт. Я в своих скриптах обычно ставлю 90 дней по умолчанию и меняю срок под конкретный проект, если у клиента цикл сделки длиннее.
Как передать UTM-метки в CRM вместе с заявкой
Сохранить метки в cookie мало - их нужно довести до отдела продаж, иначе менеджер видит в амоCRM или Битрикс24 просто «Заявка с сайта» без источника, и оценить окупаемость рекламных кампаний нельзя.
Схема, которую я собираю чаще всего: скрипт на Тильде подставляет utm-параметры в скрытые поля формы → Тильда через вебхук отправляет данные лида (включая эти поля) в CRM → в самой CRM поля маппятся на кастомные поля сделки. У amoCRM и Битрикс24 это делается через встроенную интеграцию с Тильдой или через промежуточный вебхук.
Если нужна более гибкая логика - например, разложить лида по разным воронкам в зависимости от utm_campaign, отправить уведомление менеджеру в Telegram с указанием источника или подтянуть статус оплаты из эквайринга Т‑Банка в ту же карточку сделки - такую цепочку удобнее собирать в n8n: он принимает вебхук от Тильды, парсит поля и раскладывает данные по нужным сервисам без ручного копирования. Настройка такой автоматизации у меня стоит от 25 000 ₽, в зависимости от количества сервисов в цепочке.
Если задача шире, чем один скрипт - нужна связка форма → CRM → эквайринг → уведомления, я обычно оцениваю это как комплексную интеграцию, а не точечную доработку: полный список того, что делаю на Тильде, есть в разделе услуг.
Проверка и отладка передачи UTM-меток на Тильде
Перед тем как считать задачу закрытой, я всегда прогоняю проверку по одному и тому же чек-листу:
- Открыть страницу с тестовыми параметрами вида ?utm_source=test&utm_medium=test&utm_campaign=test и проверить в консоли браузера (вкладка Application → Local Storage / Cookies), что значения записались
- Перейти на вторую страницу сайта без параметров в адресной строке и убедиться, что значения в хранилище не исчезли
- Открыть форму, отправить тестовую заявку и проверить письмо или запись в CRM - значения utm_source и остальных полей должны быть заполнены, а не пустыми
- Проверить поведение в режиме инкогнито и на мобильном браузере отдельно - там иногда иначе работают cookies из-за настроек приватности
- Через 2-3 дня после запуска сверить данные в Метрике или GA4 с тем, что видно в CRM - расхождение больше 5-10% обычно означает, что где-то теряется кусок трафика
Отдельно проверяю рекламные кабинеты - у Яндекс.Директа и VK Рекламы есть автоматическая подстановка параметров через шаблоны {source}, {campaign_id} и подобные, и если шаблон подставился некорректно (например, при копировании кампании), в UTM-метке окажется буквально текст {campaign_id} вместо числа. Это частая причина «пропавшей» аналитики, которая на самом деле не связана с Тильдой вообще.
Когда стандартных блоков не хватает
Кастомный скрипт
от 3 000 ₽
Подробнее →Частые вопросы
Почему UTM-метки пропадают именно при переходе между страницами Тильды?
Потому что Тильда не пробрасывает GET-параметры автоматически на внутренние ссылки сайта - если пользователь кликает на другую страницу, адресная строка меняется полностью, и параметры из первого захода исчезают, если их заранее не сохранить в cookie или localStorage через скрипт.
Нужно ли что-то менять в блоках Тильды, чтобы метки сохранялись?
Саму вёрстку блоков менять не нужно, но в форме нужно добавить скрытые поля с именами, которые точно совпадают с ключами utm_source, utm_medium, utm_campaign, utm_content и utm_term, - именно в эти поля скрипт будет подставлять сохранённые значения перед отправкой.
Можно ли обойтись без скрипта и сохранять метки только настройками Метрики?
Метрика и GA4 действительно фиксируют источник первого захода на уровне своих счётчиков, но эти данные не попадают в саму заявку и в CRM - если нужно видеть источник конкретного лида в карточке сделки, без скрипта, который прокидывает utm в скрытые поля формы, не обойтись.
Как долго хранить UTM-метки в cookie, чтобы не терять атрибуцию?
Я обычно ставлю 90 дней по умолчанию - этого хватает для большинства циклов сделки. Для быстрых покупок с одностраничника достаточно и localStorage, а для B2B с длинным циклом принятия решения срок можно увеличить до полугода, но тогда стоит регулярно сверять данные с CRM, чтобы не накапливать устаревшие метки от давно прошедших кампаний.