Полный URL содержит путь, query и фрагмент. Пары кампании находятся в query до фрагмента; параметры после # становятся текстом фрагмента.

Сохраняйте то, чем UTMLink не управляет

В адресе уже могут быть язык, фильтр товара, партнёрский код или флаг без знака равенства. UTMLink удаляет только шесть точных имён в нижнем регистре. Остальные исходные сегменты сохраняют порядок, percent-коды, повторы и наличие знака равенства. Такое узкое правило исключает пересериализацию всего query, которая могла бы заменить существующий %20 на + или иначе изменить сторонний текст.

Кодируйте только новые значения

Новые значения кодируются по браузерному form-query профилю: пробел становится +, буквальный плюс — %2B, Unicode — percent-байтами UTF-8 в верхнем регистре. Амперсанд и знак равенства внутри значения кодируются и не создают случайную пару. Исходный фрагмент вместе с # и написанием добавляется после нового query. Это правила синтаксиса, а не доказательство того, что сайт примет и сохранит значения.

Практическая проверка перед публикацией

Прочитайте итоговый адрес от домена до последнего символа фрагмента. Убедитесь, что хост и путь ведут на нужную публичную страницу, сторонние фильтры или идентификаторы остались на месте, а значения кампании соответствуют принятой в команде таблице имён. Перед вставкой в письмо, рекламу или документ скопируйте ссылку в обычный текстовый редактор: форматированный текст может скрыть изменённый символ. Открывайте ссылку только когда готовы перейти на сайт, а затем отдельно проверяйте адресную строку и настройку аналитики. Корректно собранный синтаксис не доказывает существование страницы, сохранение query при редиректах или ожидаемую атрибуцию визита.