UTM tag generator
UTM tags are parameters added to a link so that Google Analytics 4, Yandex.Metrica and ad dashboards can show exactly where a visitor came from: which platform, campaign, ad and keyword. Without them all paid and affiliate traffic collapses into a single generic ‘referral’.
They are most useful for:
- search and paid-social advertising — Google Ads, Yandex.Direct, VK Ads, Meta Ads, TikTok Ads, Telegram Ads — to see which source and campaign actually deliver;
- affiliate marketing — to label funnels and pass click data into a tracker (Keitaro, Binom, Voluum) and the affiliate network;
- email and messenger newsletters — to compare the performance of different emails and sending services;
- influencer seeding and push/native networks — to tell effective placements and creatives apart;
- comparing individual ads, banners and posts against each other and cutting the unprofitable ones.
Landing page URL
Traffic source
Required parameters
- utm_source?
- utm_medium?
- utm_campaign?
Optional parameters
- utm_content?
- utm_term?
- utm_id
Advanced parameters
utm_source_platform is visible only in GA4 Explorations; utm_creative_format and utm_marketing_tactic are not reported by GA4 yet — add them for third-party BI tools.
Result
Link history
My templates
Extra tools
clck.ru - for RU IPs
is.gd / v.gd - for everyone else
Tracker campaign link
Builds a campaign link with sub parameters for your tracker: source macros go into the right slots.
Tracker postback
S2S postback template to paste into your CPA network. Replace placeholders with your network's macros.
Dynamic variables in tracking links
- Что это такое?
- Google Ads
- Яндекс.Директ
- VK Реклама
- Meta Ads (FB/IG)
- TikTok Ads
- Клик-ID площадок
- Push/pop-сети
- Нативные сети
- Трекеры
Динамические переменные (макросы): что это такое
Динамические переменные (их ещё называют макросами или динамическими параметрами) автоматически подставляют в рекламную ссылку данные о клике: с какого объявления, ключевого слова, устройства или региона пришёл пользователь. Вы один раз прописываете макрос в UTM-метке, а площадка на каждом клике заменяет его на реальное значение.
Например, в Google Ads вместо utm_content={creative} подставится ID объявления, по которому кликнули. Чаще всего макросы ставят в utm_content и utm_campaign, но можно и в любой другой метке.
Главная тонкость — у каждой площадки своя обёртка макроса, и перепутать её нельзя: подстановка строковая, ошибётесь в скобке — макрос уйдёт в статистику как обычный текст. Основные форматы обёрток: {...} — Google Ads, Яндекс.Директ, большинство пуш- и нативных сетей; {{...}} — VK Реклама, Meta Ads, Outbrain; __...__ — TikTok Ads; [...] — RichAds и ряд пуш-сетей; ${...} — клик-ID в PropellerAds.
Ниже — проверенные по официальным докам таблицы макросов для актуальных на 2026 год площадок и трекеров.
Google Ads: макросы ValueTrack
Google Ads использует систему ValueTrack — макросы в одинарных фигурных скобках {...}. Подставляйте их в значения UTM-меток; регистр внутри скобок соблюдать не обязательно, но сами скобки критичны. Учтите: макроса {campaignname} не существует — доступен только числовой {campaignid}.
В кабинете два поля для трекинга, и их важно не путать. Финальный URL суффикс (final URL suffix) — это хвост параметров, который приклеивается к адресу лендинга без редиректа; именно сюда стоит вписывать UTM-метки. Шаблон отслеживания (tracking template) — это URL трекера с редиректом, куда клик уходит перед лендингом; макрос {lpurl} работает только в нём.
Рекомендуемый финальный URL суффикс:
utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={creative}&utm_term={keyword}&adgroupid={adgroupid}&network={network}&device={device}&matchtype={matchtype}&placement={placement}&gclid={gclid}
| Parameter | Description |
|---|---|
| {campaignid} | ID кампании (числовой). Макроса {campaignname} не существует. |
| {adgroupid} | ID группы объявлений. |
| {creative} | ID объявления. |
| {keyword} | Ключевое слово, по которому показано объявление (поисковая сеть). |
| {targetid} | ID ключевого слова (kwd), DSA (dsa), аудитории (aud) или AI Max keywordless. Например, kwd-123:aud-456. |
| {matchtype} | Тип соответствия: b — широкое, p — фразовое, e — точное, a — AI Max keywordless (с 2025). |
| {network} | Сеть: g — поиск, s — поисковые партнёры, d — КМС, ytv — YouTube, vp — видеопартнёры, gtv — Google TV, x — Performance Max, e — App-вовлечение. |
| {device} | Тип устройства: m — мобильный, t — планшет, c — компьютер. |
| {devicemodel} | Модель устройства (только в КМС). |
| {adposition} | Позиция объявления. Например, 1t2 — страница 1, показ над результатами (top), позиция 2. |
| {placement} | Сайт КМС, где объявление получило клик. |
| {target} | Категория площадки (для управляемых мест размещения). |
| {extensionid} | ID расширения (asset-система). {feeditemid} — устаревший вариант. |
| {loc_physical_ms} | ID географического местоположения, откуда получен клик. |
| {loc_interest_ms} | ID местоположения из поискового интереса пользователя. |
| {gclid} | Google Click ID — уникальный идентификатор клика. |
| {lpurl} | Конечный URL. Работает только в шаблоне отслеживания; есть варианты {lpurl+2}, {lpurl+3}, {unescapedurl}. |
| {ignore} | Отсекает трекинговый хвост от контентной части URL. |
| {random} | Случайное число (используется для защиты от кэширования). |
| {ifmobile:X} / {ifnotmobile:X} | Подставляет X в зависимости от того, мобильное устройство или нет. |
| {ifsearch:X} / {ifcontent:X} | Подставляет X в зависимости от сети (поиск/КМС). В Performance Max не работают. |
| {product_id}, {merchant_id}, {product_partition_id}, {store_code} | Данные товара из Merchant Center (для товарных / Shopping-кампаний). |
Яндекс.Директ: параметры ссылок
Яндекс.Директ использует макросы в одинарных фигурных скобках {...}. Учтите ограничения: макроса {gender} в Директе нет, а параметры {param1} и {param2} задаются только через XLS-файл, Директ.Коммандер или API.
Рекомендуемый шаблон:
utm_source=yandex&utm_medium=cpc&utm_campaign={campaign_id}&utm_content={ad_id}&utm_term={keyword}&source={source_type}_{source}®ion={region_id}&device={device_type}
Клик-ID yclid Директ добавляет к ссылке автоматически по умолчанию — вписывать его руками не нужно. Помните про лимит длины ссылки — 4096 байт: кириллица в кодировке UTF-8 расходует его быстрее (один русский символ занимает 2 байта).
| Parameter | Description |
|---|---|
| {campaign_id} | ID рекламной кампании. |
| {campaign_name} | Имя кампании. |
| {campaign_name_lat} | Имя кампании в транслитерации (латиницей). |
| {campaign_type} | Тип кампании (type1 — текстово-графические объявления, type2 — реклама приложений, type3 — динамические, type4 — смарт-баннеры). |
| {gbid} | ID группы объявлений. |
| {ad_id} (= {banner_id}) | ID объявления. |
| {phrase_id} | ID ключевой фразы. |
| {keyword} | Ключевая фраза, по которой показано объявление (без минус-слов). |
| {matched_keyword} | Фраза, подобранная автотаргетингом. |
| {match_type} | Тип соответствия: rm — автотаргетинг, syn — синоним. |
| {retargeting_id} | ID условия ретаргетинга. |
| {adtarget_id} / {adtarget_name} | ID / имя условия нацеливания динамических объявлений. |
| {creative_id} | ID креатива из конструктора. |
| {coef_goal_context_id} | ID корректировки ставок. |
| {source} | Домен площадки РСЯ (например, cpa.rip) или none — при показе в поиске Яндекса. |
| {source_type} | Тип площадки: search — поиск, context — сети. |
| {position_type} | Тип блока: premium — спецразмещение, dynamic_places — динамические, other — прочие, none — показ в сетях. |
| {position} | Номер позиции объявления в блоке (0 — показ в сетях). |
| {region_id} / {region_name} | ID / название региона, в котором показано объявление. |
| {device_type} | Тип устройства: desktop, mobile, tablet. |
VK Реклама: динамические параметры
VK Реклама (ads.vk.com) заменила и старый кабинет ВКонтакте (vk.com/ads), и myTarget: с 17.11.2025 в них нельзя создавать новые кампании, а 28.01.2026 оба кабинета закрыты полностью и переведены в режим чтения. Реклама в Одноклассниках теперь тоже идёт только через VK Рекламу. Синтаксис макросов унаследован от myTarget — двойные фигурные скобки {{...}}.
Главная ловушка. Вопреки названию, {{campaign_id}} подставляет ID группы объявлений, а не кампании. ID самой кампании (верхний уровень) — это {{ad_plan_id}}. Макроса {{ad_id}} не существует: ID объявления передаёт {{banner_id}}.
Рекомендуемый шаблон:
utm_source=vk_ads&utm_medium=cpc&utm_campaign={{ad_plan_id}}&utm_content={{banner_id}}&utm_term={{search_phrase}}&adgroup={{campaign_id}}&geo={{geo}}&demo={{gender}}.{{age}}
| Parameter | Description |
|---|---|
| {{advertiser_id}} | ID рекламодателя. |
| {{ad_plan_id}} | ID кампании — верхний уровень (это и есть кампания). |
| {{ad_plan_name}} | Имя кампании. |
| {{campaign_id}} (= {{ad_group_id}}) | Ловушка: ID ГРУППЫ объявлений, а не кампании (наследие myTarget). |
| {{campaign_name}} (= {{ad_group_name}}) | Имя группы объявлений. |
| {{banner_id}} | ID объявления (креатива). Макроса {{ad_id}} не существует. |
Meta Ads (Facebook/Instagram): макросы
Meta Ads (Facebook и Instagram) использует макросы в двойных фигурных скобках {{...}}. Вписывать их нужно в поле «Параметры URL» (URL parameters) на уровне объявления — без ведущего знака ?, только сами параметры.
Гоча №1: макросы имён ({{campaign.name}}, {{adset.name}}, {{ad.name}}) «замораживаются» в момент первой публикации — если позже переименовать кампанию, в статистику продолжит уходить старое имя. Для стабильности используйте ID-макросы. Гоча №2: клик-ID fbclid Meta добавляет к ссылке сама — в шаблон его вписывать не нужно.
Рекомендуемое значение поля «Параметры URL» (без ?):
utm_source={{site_source_name}}&utm_medium=paid_social&utm_campaign={{campaign.id}}&utm_content={{adset.id}}_{{ad.id}}&utm_term={{placement}}
| Parameter | Description |
|---|---|
| {{campaign.id}} | ID кампании. |
| {{campaign.name}} | Имя кампании (замораживается при первой публикации). |
| {{adset.id}} | ID группы объявлений (адсета). |
| {{adset.name}} | Имя группы объявлений (замораживается при первой публикации). |
| {{ad.id}} | ID объявления. |
| {{ad.name}} | Имя объявления (замораживается при первой публикации). |
TikTok Ads: динамические макросы
TikTok Ads использует макросы в формате __МАКРОС__ — с двумя нижними подчёркиваниями с каждой стороны и строго в ВЕРХНЕМ регистре. Это критично: TikTok чувствителен к регистру, а многие генераторы принудительно переводят метки в нижний — тогда макрос ломается. Отключайте авто-lowercase для этих значений.
Ловушка уровней: __AID__ — это ID группы объявлений (ad group), а не самого объявления; ID креатива — __CID__; ID объявления в кампаниях Smart+ — __ADID_V2__. Клик-ID ttclid TikTok добавляет автоматически (живёт около 30 дней). Помните про лимит строки UTM в 125 символов — лишнее обрежется.
Рекомендуемый шаблон:
utm_source=tiktok&utm_medium=paid_social&utm_campaign=__CAMPAIGN_ID__&utm_content=__CID__&utm_term=__AID__&placement=__PLACEMENT__
| Parameter | Description |
|---|---|
| __CAMPAIGN_ID__ | ID кампании. |
| __CAMPAIGN_NAME__ | Имя кампании. |
| __AID__ | Ловушка: ID ГРУППЫ объявлений (ad group), а не объявления. |
| __AID_NAME__ | Имя группы объявлений. |
| __CID__ | ID креатива. |
| __CID_NAME__ | Имя креатива. |
Клик-ID рекламных площадок
Клик-ID — это уникальный идентификатор конкретного клика, который рекламная площадка добавляет к ссылке сама при переходе. Он нужен для точной сверки конверсий, в том числе для передачи данных обратно через постбек и для офлайн-конверсий. Вписывать эти параметры в UTM руками не нужно и вредно: площадка подставит собственное значение, а ваше только помешает.
| Parameter | Description |
|---|---|
| gclid | Google Ads — добавляется автоматически, руками не вписывать. |
| yclid | Яндекс.Директ — добавляется автоматически, руками не вписывать. |
| fbclid | Meta Ads (Facebook/Instagram) — добавляется автоматически, руками не вписывать. |
| ttclid | TikTok Ads — добавляется автоматически, руками не вписывать. |
| tblci | Taboola — добавляется автоматически, руками не вписывать. |
Push- и pop-сети: макросы
У пуш- и поп-сетей нет единого стандарта: у каждой сети своя обёртка макроса, и перепутать её нельзя. PropellerAds клеит клик-ID через ${SUBID} (единственный макрос с долларом и в верхнем регистре), а остальные параметры пишет в нижнем регистре в одинарных скобках; RichAds использует квадратные скобки и ВЕРХНИЙ регистр — [CAPS]; Evadav — фигурные скобки и ВЕРХНИЙ регистр — {CAPS}. Ниже — проверенные по официальным докам макросы трёх сетей.
| Parameter | Description |
|---|---|
| PropellerAds: ${SUBID} | Клик-ID (единственный макрос сети с долларом и в верхнем регистре). |
| PropellerAds: {campaign_id} | ID кампании. |
| PropellerAds: {zoneid} | ID зоны (площадки). |
| PropellerAds: {bannerid} | ID баннера. |
| PropellerAds: {country} | Страна клика. |
| PropellerAds: {os} | Операционная система. |
| PropellerAds: {cost} | Цена клика. |
| RichAds: [CLICK_ID] | Клик-ID. |
| RichAds: [CAMPAIGN_ID] | ID кампании. |
| RichAds: [CREATIVE_ID] | ID креатива. |
| RichAds: [SITE_ID] | ID площадки. |
| RichAds: [SUB_LIST_ID] / [ZONE_ID] | ID сорс-листа (push) / ID зоны (pop). |
| RichAds: [COUNTRY_CODE] | Код страны. |
| RichAds: [BID_PRICE] / [CPV_PRICE] | Ставка (push) / цена показа (pop). |
| Evadav: {CLICKID} | Клик-ID (без подчёркивания). |
| Evadav: {CAMPAIGN_ID} | ID кампании. |
| Evadav: {CREATIVE_ID} | ID креатива. |
| Evadav: {ZONE_ID} | ID зоны. |
| Evadav: {SOURCE_ID} | ID источника. |
| Evadav: {COUNTRY} | Страна. |
| Evadav: {COST} | Цена клика. |
Нативные и тизерные сети: макросы
Нативные и тизерные сети тоже используют разные обёртки. MGID, Taboola и Kadam пишут макросы в нижнем регистре в одинарных скобках {...}; Outbrain — в двойных фигурных {{...}} (либо в квадратных). Отдельная тонкость Taboola: клик-ID tblci сеть подставляет в ссылку сама (tblci={click_id}), а в серверном постбеке (S2S) тот же параметр называется click-id — через дефис, не через подчёркивание.
| Parameter | Description |
|---|---|
| MGID: {click_id} | Клик-ID. |
| MGID: {campaign_id} | ID кампании. |
| MGID: {teaser_id} | ID объявления (тизера). |
| MGID: {widget_id} | ID виджета (плейсмента). |
| MGID: {geo} | Регион. |
| MGID: {click_price} | Цена клика. |
| Taboola: {click_id} | Клик-ID. Taboola сама клеит tblci={click_id}; в S2S-постбеке параметр называется click-id (через дефис). |
| Taboola: {campaign_id} | ID кампании. |
| Taboola: {campaign_item_id} | ID объявления. |
| Taboola: {site} / {site_id} | Площадка / ID площадки. |
| Taboola: {platform} | Тип устройства (платформа). |
| Taboola: {cpc} | Цена клика. |
| Outbrain: {{ob_click_id}} | Клик-ID. |
| Outbrain: {{campaign_id}} | ID кампании. |
| Outbrain: {{ad_id}} / {{ad_title}} | ID / заголовок объявления. |
| Outbrain: {{publisher_id}} / {{section_id}} | ID паблишера / ID секции (площадки). |
| Outbrain: {{cpc}} | Цена клика. |
| Kadam: {click_id} | Клик-ID. |
| Kadam: {campaign_id} | ID кампании. |
| Kadam: {ad_id} | ID объявления. |
| Kadam: {site_id} | ID площадки. |
| Kadam: {country_code} | Код страны. |
| Kadam: {platform} | Операционная система (макроса {os} нет). |
| Kadam: {cpc} | Цена клика. |
Трекеры: соответствие меток и постбеков
Трекер стоит между рекламной площадкой и оффером: клик идёт по цепочке источник → трекер → оффер. В объявлении вы подставляете макросы площадки в саб-слоты трекера (например, track.domain.com/xYz?sub_id_1={{campaign.id}}&sub_id_2={{adset.id}}), трекер запоминает клик и редиректит на оффер, передавая туда собственный клик-ID (?clickid={subid}). Когда происходит конверсия, партнёрская сеть дёргает постбек трекера и сообщает статус и выплату. UTM-метки и режим трекера не конфликтуют: для белых вертикалей, e-commerce и отчётов GA4/Метрики нужны UTM, для арбитража по клик-ID — саб-слоты и постбек. Ниже — «розеттский камень» соответствий по четырём трекерам.
| Parameter | Description |
|---|---|
| Keitaro | Саб-слоты для меток: sub_id_1…sub_id_30. Токен клик-ID: {subid}. Постбек: /PBKEY/postback?subid=X&status=lead&payout=25 (обязательны subid и status). |
| Binom | Саб-слоты для меток: t1…t10 (плюс {externalid}). Токен клик-ID: {clickid}. Постбек: /click.php?cnv_id=X&payout=Y&cnv_status=Z (обязательны cnv_id и payout). |
| Voluum | Саб-слоты для меток: {var1}…{var10}. Токен клик-ID: {clickid}. Постбек: /postback?cid=X&payout=Y&et=Z (обязателен cid). |
| BeMob | До 10 своих (custom) переменных плюс External ID. Токен клик-ID: {clickId}. Постбек: /postback?cid=X&status=Y&payout=Z (обязателен cid). |
Common UTM tagging mistakes
Put UTM after the anchor — site.com/page#section?utm_source=... — and analytics will not see it: everything after # stays in the browser and never reaches the server. Fix: place tags in the query part, before the hash: site.com/page?utm_source=...#section.
If the URL already has parameters (e.g. ?id=5), UTM must be joined with &, not a second ?. A link with two ? signs breaks and the tags are not read. Fix: the first parameter is separated by ?, all the rest by &: ?id=5&utm_source=google.
GA4 and Metrica treat utm_source=Google and utm_source=google as different sources, so one platform's traffic splits into two rows in the report. Fix: agree on a single case (usually lowercase) and keep it across every campaign.
A space in a tag encodes as %20 or +, and + decodes back into a space when read — the value breaks and Metrica/GA4 reports fill up with duplicates. Fix: avoid spaces and separate words with an underscore _.
Non-Latin letters in a tag turn into a long %D0%BA%D1%80..., hurt link readability and eat into the length limit, and some services break such links. Fix: write values in Latin or transliteration — the generator has a transliteration toggle.
Every platform has its own macro wrapper: {campaignid} — Google Ads, {{campaign.id}} — Meta, __CAMPAIGN_ID__ — TikTok. Paste the wrong format or miss a bracket and substitution fails, sending the macro text itself into reports. Fix: take macros from the right platform's table and do not lowercase them where uppercase matters (TikTok).
Tags on links between your own pages reset the analytics session: GA4 starts a new visit and attributes it to the source in the tag, so the original channel is lost and conversions are double-counted. Fix: tag only external incoming links and keep internal navigation clean.
If an intermediate redirect (a shortener, a domain bridge, an old tracker) strips the query string, UTM never reaches the final page and the visit falls into untagged traffic. Fix: check that the redirect forwards parameters; in trackers enable passing tags to the offer, and use the click ID and postback for conversion matching.
UTM parameters — FAQ
What is a UTM tag?
A UTM tag is a parameter added to the end of a link after the ? sign to pass visit data into analytics. The five standard tags — utm_source, utm_medium, utm_campaign, utm_content and utm_term — are recognised by Google Analytics 4, Yandex.Metrica and most analytics systems. They show which platform, campaign and ad a visitor came from.
Which UTM parameters are required?
Three are required: utm_source (source), utm_medium (traffic type) and utm_campaign (campaign). Two more — utm_content and utm_term — are optional and refine the ad and keyword. Skip any of the required ones and analytics may treat the visit as untagged traffic.
Does case matter, and can I use non-Latin characters?
Yes, case matters: GA4 and Metrica treat Google and google as different values, so keep your tags in one case — usually lowercase. Non-Latin characters technically work, but they encode into a long %D0%BA... form, hurt link readability and eat into the length limit. Latin or transliteration is safer, and for multi-word values use _.
How is utm_id different from utm_campaign?
utm_campaign is the campaign name, while utm_id is its identifier for tying to cost imports (Manual campaign ID in GA4). GA4 recognises utm_id, but shows it in Explore rather than in the standard reports. If you do not import costs manually, you can leave utm_id empty.
Where do I find UTM tags in GA4 and Yandex.Metrica?
In GA4 the data from utm_source and utm_medium lands in the Traffic acquisition reports (the Session source / medium / campaign dimensions); utm_term and utm_content are available there and in Explore. In Yandex.Metrica the tags appear in the UTM Tags report (Reports → Sources → UTM Tags). Data is not instant — usually within a few hours.
Do UTM tags work with redirects and trackers?
Yes, but the tags must survive to the final page. Trackers (Keitaro, Binom, Voluum, BeMob) can forward parameters to the offer on redirect, but if an intermediate redirect strips the query string, the tags are lost. In affiliate marketing the click ID is usually passed via the tracker's sub-slots and postback, while UTM is kept for GA4/Metrica and white verticals.
Why does a link with # not pass the tags?
Everything after the hash # (the anchor / fragment) is not sent by the browser to the server or to analytics — it stays in the browser. Put UTM after # and GA4 and Metrica will not see it. Tags must always go in the query part, before the #: first ?utm_..., and only then #.
Is there a length limit for a tagged link?
Yes. Yandex.Direct caps the link at 4096 bytes (and Cyrillic in UTF-8 uses it up twice as fast). TikTok Ads limits the UTM string to 125 characters — anything longer is truncated. The general rule: keep tags short, use IDs instead of long names, and do not duplicate parameters.
How should I replace spaces: +, %20 or _?
The safest option is an underscore _ directly in the tag value: it needs no encoding and reads the same everywhere. The + sign is risky: it decodes back into a space and can split the value in reports. %20 is the correct space code but less readable; if you keep a space, encode it that way rather than as a plus.










