GCLID в Telegram-боте нужен не для красоты в UTM-отчете. Это идентификатор рекламного клика Google Ads, по которому рекламная система потом может понять: человек не просто кликнул объявление, а дошел до Telegram и стал подписчиком, лидом или покупателем. Проблема в том, что сам Telegram не хранит для вас этот click-id. Если реклама ведет сразу на t.me, в бот или в invite-ссылку, метка часто теряется до того, как подписка становится фактом.

Короткий вывод: gclid нужно поймать до входа в Telegram, сохранить в клике, связать этот клик с будущей подпиской и отправить подтвержденную конверсию обратно в Google Ads. Для этого рекламный путь лучше строить через лендинг клиента и трекинговый слой Strelo Stat: Google Ads ведет на обычную страницу, страница загружает Stat pixel, pixel сохраняет query и переводит человека через трекинг-ссылку, Telegram подтверждает вступление, а Stat отдает в Google Ads только событие с надежным click-id.

Кому читать

Три сценария, где GCLID нельзя терять

Канал покупает трафик

Нужно видеть не только клики, но и подтвержденные вступления в Telegram.

Маркетолог ведет Google Ads

Нужен сигнал для стратегии, отчетов, CPA и сравнения кампаний.

Интегратор собирает маршрут

Нужно понять, где ловить click-id и как не потерять его на переходе в Telegram.

Быстрый ответ

Если вопрос звучит как "gclid в telegram боте", чаще всего речь не о коде внутри бота, а о связке рекламы, лендинга, редиректа и Telegram-события. Бот видит подписку или сообщение, но не обязан видеть исходный URL из Google Ads. Поэтому технически правильная точка захвата находится раньше: на лендинге, микролендинге или трекинговом маршруте перед переходом в Telegram.

Strelo Stat решает этот участок как отдельный контур атрибуции. Он принимает переход, сохраняет gclid, gbraid, wbraid, UTM, исходный query и разрешенные рекламные cookies, затем выдает Telegram invite или ведет в нужный Telegram-маршрут. Когда Telegram присылает событие подписки, подписка связывается с сохраненным кликом через внутренний click_id. После задержки и проверки качества событие можно отправить в Google Ads как click conversion.

Рабочий ответ: ловите gclid на лендинге или трекинговом маршруте до Telegram, сохраняйте его в клике, связывайте подписку через invite или webhook и отправляйте в Google Ads только подтвержденное событие.

Три роли, которым это нужно

Владелец Telegram-канала обычно видит только верх воронки: клики, расход, рост подписчиков. Этого мало. Нужно понимать, какая кампания приносит живых подписчиков, а какая собирает дешевые переходы без вступления. Для него gclid отвечает на простой вопрос: какие объявления реально дают рост базы.

Маркетологу нужна другая детализация: campaign, ad group, creative, keyword, device, network, placement. Эти данные удобно держать в UTM и Google macro-параметрах, а click-id использовать как ключ для возврата конверсии. Тогда Google Ads получает не событие "кто-то перешел", а сигнал "этот клик привел к подписке".

Техлид или интегратор смотрит на маршрут как на цепочку сохранения идентификатора. Где именно URL меняется? Что делает лендинг? Как Telegram invite связывается с кликом? Есть ли fallback, если пользователь вступил без ссылки? Можно ли доказать, что событие не придумано задним числом? Без таких вопросов интеграция быстро становится черным ящиком.

Фокус

Что хочет получить каждая роль

Владелецне по клику
CPA по подписке

Понимает, какая кампания дает живых подписчиков, а не просто дешевый трафик.

Маркетологпо качественному событию
обучение Ads

Возвращает в Google Ads сигнал, который ближе к бизнес-цели Telegram-канала.

Интеграторбез ручной склейки
чистый маршрут

Проверяет, что click-id, Telegram invite и подписка связаны одним ключом.

Почему Telegram сам не спасает GCLID

Google Ads добавляет gclid к URL объявления при auto-tagging. В веб-воронке он попадает на финальную страницу, сохраняется в аналитике или CRM и потом используется для offline conversion upload. В Telegram путь другой. Пользователь может уйти из браузера в приложение, открыть invite, подтвердить заявку, написать боту или вступить в канал. На этом участке браузерный URL уже не является главным источником данных.

Если в объявлении стоит прямой адрес https://t.me/..., у вас почти нет места, где надежно сохранить click-id. Telegram не обязан передавать рекламный query в событие подписки. Если стоит лендинг, но кнопка Telegram ведет напрямую и без переписывания ссылки, gclid останется на лендинге, а подписка в Telegram придет без связи с кликом. Если стоит трекер, но он не переносит query дальше, проблема просто переезжает на следующий шаг.

Диагностика

Где теряется GCLID в Telegram-маршруте

Потеря почти всегда происходит до события подписки, а не в Google Ads.

КритерийУчастокЧто ломаетсяКак исправить
Прямой t.me в объявленииПользователь сразу уходит в TelegramНекуда надежно записать click-idВести на лендинг или трекинговый маршрут
Лендинг с прямой кнопкойGCLID остается в адресе лендингаКнопка Telegram не переносит queryПереписывать Telegram CTA через Stat pixel
Редирект без raw queryКлик проходит через трекерПараметры не сохраняются в записи кликаХранить gclid, gbraid, wbraid, UTM и raw_query
Подписка другим путемПользователь вступает без inviteНет надежной связи с кликомПоказывать как no-link или organic, не подменять
Если click-id не сохранен до Telegram, восстановить его честно почти невозможно.

Правильный маршрут без подмены финального URL

Для Google Ads безопаснее использовать клиентский лендинг как Final URL. Это честная страница, которую видит пользователь и которую проверяет модерация. На этой странице ставится единый Stat pixel. Он читает query текущей страницы, находит Telegram-ссылки и заменяет их на трекинговый путь /c/<token>, сохраняя UTM и click-id.

Дальше посетитель идет через Strelo Stat. На этом шаге сервер пишет строку клика, создает внутренний click_id, назначает invite-ссылку и отправляет человека в Telegram. Когда Telegram сообщает о вступлении, Stat связывает событие с исходным кликом. Если интеграция Google Ads включена и у клика есть gclid, gbraid или wbraid, подтвержденная подписка может уйти в Google Ads.

Маршрут

Как проходит клик из Google Ads до подписки

  1. Клик по объявлению

    Google Ads добавляет click-id через auto-tagging и UTM через suffix.

  2. Лендинг клиента

    Пользователь попадает на нормальную страницу, а Stat pixel читает query.

  3. Переписанная Telegram-кнопка

    CTA ведет через Stat, сохраняя рекламные параметры.

  4. Запись клика

    Сервер сохраняет Google click-id, UTM, params и raw query.

  5. Telegram invite

    Пользователь вступает в канал или начинает сценарий.

  6. Подписка подтверждена

    Webhook связывает Telegram-событие с исходным кликом.

  7. Конверсия уходит в Google Ads

    Отправляется только событие, у которого есть надежный click-id.

Реальный экран Strelo Stat: клики и подписки нужно читать вместе, иначе реклама оптимизируется по верхнему действию.
Реальный экран Strelo Stat: клики и подписки нужно читать вместе, иначе реклама оптимизируется по верхнему действию.

Где именно хранится рекламная метка

В нормальном варианте gclid хранится не в Telegram-боте, а в записи клика. Это принципиальная разница. Бот или webhook отвечает за факт подписки, но рекламный идентификатор лучше фиксировать в момент перехода, пока пользователь еще находится в веб-контексте и URL доступен.

В Strelo Stat маршрут /c/<token> сохраняет Google click-id в отдельных колонках, UTM в структурированном поле, остальные параметры в params, а исходную строку query в raw_query. Так можно не гадать, пришел ли параметр, не потерялся ли macro-параметр и почему конкретная подписка не ушла в Google Ads.

Данные

Что нужно сохранить на первом переходе

Google click-id

gclid, gbraid и wbraid нужны для сопоставления в Google Ads.

UTM и macros

utm_source, campaign, creative, keyword и device нужны для собственных отчетов.

Raw query

Полная исходная строка помогает разбирать спорные клики и ошибки разметки.

Разрешенные cookies

Используются только allowlisted рекламные cookies, если они доступны и разрешены.

Внутренний click_id

Этот ключ связывает клик, invite-ссылку и будущую подписку.

Consent

Передача рекламных идентификаторов должна соответствовать privacy-настройке проекта.

Что делает Stat pixel на лендинге

Единый Stat pixel нужен не только для браузерных рекламных пикселей. В Google Ads маршруте он выполняет практическую работу: берет query лендинга, читает разрешенные рекламные cookies, переписывает Telegram CTA, поддерживает динамические страницы и может включать авто-переход после заданной задержки.

Это особенно полезно для Tilda, Taplink, самописных лендингов и страниц, где кнопки Telegram появляются после загрузки виджета. Если кнопка появилась поздно, обычный одноразовый скрипт может ее не увидеть. Stat pixel следит за изменениями DOM и повторно проверяет Telegram-ссылки, чтобы рекламный query не остался на странице.

Pixel

Что дает Stat pixel на лендинге

Полезно для Google Ads
  • Переносит gclid, gbraid, wbraid и UTM из URL лендинга в трекинговый маршрут.
  • Переписывает t.me, telegram.me, tg-ссылки и уже готовые Stat-ссылки.
  • Работает с динамическими кнопками через повторную проверку страницы.
  • Может включать авто-переход, если сценарий лендинга требует быстрого входа в Telegram.
Что он не делает
  • Не восстанавливает click-id, если пользователь пришел без рекламного URL.
  • Не отменяет требования consent и privacy.
  • Не гарантирует атрибуцию, если человек вступил в канал другим путем.
  • Не заменяет серверное подтверждение подписки.
Pixel отвечает за перенос контекста до Telegram, а серверная часть отвечает за подписку и upload.

Почему нужен не только GCLID

GCLID остается главным идентификатором для обычных веб-кликов Google Ads, но на практике стоит сохранять и gbraid, и wbraid. Google использует эти идентификаторы в части сценариев, связанных с ограничениями приватности и iOS-трафиком. Если вы сохраняете только gclid, часть кликов может оказаться без ключа для импорта.

При этом UTM не заменяют click-id. UTM помогают понять источник, кампанию и креатив в собственных отчетах, но не являются точным ключом для Google Ads click conversion. И наоборот, click-id плохо читается человеком, зато нужен рекламной системе для сопоставления. Рабочая схема хранит оба слоя: UTM для анализа, Google click-id для возврата конверсии.

Идентификаторы

GCLID, GBRAID, WBRAID и UTM выполняют разные задачи

Не стоит выбирать один слой вместо другого. Нужны и читаемые метки, и click-id для Google Ads.

КритерийТипЗачем нуженЧто будет без него
gclidИдентификатор клика Google AdsUpload click conversion для обычных веб-кликовGoogle не сможет связать подписку с кликом
gbraid и wbraidClick-id для части privacy-сценариевЗапасной ключ для Google Ads, если gclid не пришелЧасть трафика может оказаться без ключа
UTMЧитаемые метки кампанииРазбивки в Stat, BI и экспортных отчетахКоманда не поймет, какой источник сработал
raw_queryПолная исходная строка URLРазбор ошибок, macros и спорных кликовДиагностика превращается в догадки
UTM нужны людям, click-id нужен Google Ads, raw_query нужен для диагностики.

Что отправляется обратно в Google Ads

Google Ads API для click conversions ожидает связку: идентификатор клика, conversion action, время события, ценность и валюту при необходимости, order id и consent-поля, если они применимы. Для Telegram-подписки conversion action обычно соответствует действию вроде tg_subscribe или "Подписка Telegram". Важно, чтобы действие было создано именно для импорта конверсий по кликам, а не как обычная веб-цель.

Время события лучше брать из фактического момента подписки, а не из момента выгрузки. Если человек вступил в Telegram в 14:12, а worker отправил событие через час после проверки удержания, событие все равно должно описывать подписку в 14:12. Так отчет ближе к реальности, а риск выхода за окно сопоставления ниже.

Реальный экран Strelo Stat: подключение Google Ads показывает, какая конверсия будет получать подтвержденные Telegram-подписки.
Реальный экран Strelo Stat: подключение Google Ads показывает, какая конверсия будет получать подтвержденные Telegram-подписки.
Google Ads

Что должно быть в событии upload click conversion

Click-idgclid, gbraid или wbraid
1 из 3

Без этого ключа конверсию нельзя честно привязать к клику.

Conversion actionдействие Google Ads
UPLOAD_CLICKS

Действие должно соответствовать импорту конверсий по кликам.

Времямомент подписки
с timezone

Передавайте время события, а не время экспорта.

Consentне по умолчанию
по проекту

Consent-поля должны отражать реальное основание обработки данных.

Почему нельзя обещать 100 процентов атрибуции

Честная статья про gclid в Telegram-боте должна сказать неприятную вещь: абсолютной атрибуции нет. Пользователь может открыть Telegram другим путем, переслать ссылку другу, вступить напрямую по username, отключить JavaScript, попасть под блокировщик, отказаться от consent или выйти до проверки. В таких случаях система не должна выдумывать click-id.

Сильная интеграция отличается не обещанием "видим всех", а ясной диагностикой. Если есть click-id и подписка связалась, событие можно отправлять. Если click-id нет, это неатрибутированная подписка. Если клик есть, а подписка пришла без invite, нужен отдельный статус. Если Google отклонил upload, нужно видеть причину, например старый click-id, неверная conversion action или временный лаг обработки клика.

Не отправляйте в Google Ads подписку без надежного click-id. Лучше честно показать no-link или organic, чем обучать рекламу на неподтвержденной связке.
Отладка

Как читать статусы в связке Google Ads и Telegram

Статус должен отвечать на вопрос, где именно исчезла связь.

КритерийСимптомВероятная причинаПроверка
Клики есть, подписок нетЛюди не доходят до Telegram или invite ломаетсяПроблема в оффере, кнопке, редиректе или Telegram-доступеПроверить путь до invite и события webhook
Подписка есть, gclid нетЧеловек вступил без рекламного queryПрямая t.me кнопка, органика или потеря queryСравнить raw_query и путь CTA
Upload отклонен GoogleСобытие дошло до API, но не принятоСтарый click-id, неверная action или временный лагСмотреть partial failure и config
Много no-link подписокЛюди вступают не по назначенной invite-ссылкеПересылки, поиск, прямой username, другой каналВыделить no-link в отчетах отдельно
Хорошая интеграция не прячет потери, а показывает их по этапам.

Direct to t.me или лендинг с пикселем

Прямой переход в Telegram кажется короче, но для Google Ads он часто хуже. Во-первых, модерация может относиться к редиректам и invite-ссылкам осторожнее, чем к нормальной странице. Во-вторых, у вас нет нормального места для объяснения оффера. В-третьих, click-id труднее сохранить до подписки.

Лендинг с Stat pixel дает больше контроля. Финальный URL остается страницей клиента, пользователь видит оффер, pixel переносит query в Telegram-маршрут, а сервер фиксирует клик. Это не cloaking: пользователь и рекламный бот видят одну и ту же страницу и один и тот же сценарий. Просто Telegram-переход становится измеримым.

Маршрут

Прямая Telegram-ссылка против лендинга с Stat pixel

Короткий путь не всегда лучше для рекламы, особенно если нужна оптимизация по подписке.

КритерийКритерийПрямо в TelegramЛендинг и Stat pixel
Сохранение gclidЧто сравниваемСлабое место, почти нет веб-контекстаСохраняется до перехода в Telegram
Модерация рекламыПоведение Final URLInvite или редирект может быть спорнымFinal URL остается страницей клиента
ДиагностикаРазбор проблемМало промежуточных данныхЕсть клик, query, invite, matched subscription
СкоростьЧисло шаговКороче, но хуже измеряетсяЧуть длиннее, зато управляемо
Для закупки трафика лендинг с pixel обычно дает более чистую атрибуцию.

Минимальная настройка Google Ads

Практичный старт выглядит так: включить auto-tagging, оставить tracking template пустым, указать клиентский лендинг как Final URL и добавить Final URL suffix с UTM и Google macro-параметрами. UTM дают вам читаемую разбивку по кампаниям, а auto-tagging добавляет click-id для Google.

На лендинге нужно поставить Stat pixel, выбрать базовую ссылку, проверить переписывание Telegram-кнопок и провести тестовый клик. Тест не должен заканчиваться на том, что открылась Telegram-ссылка. Нужно пройти весь путь: клик, запись в Stat, вступление, matched click, очередь отправки, ответ Google Ads или pull CSV статус.

Настройка

Минимальный план запуска

  1. Включите auto-tagging

    Google Ads должен добавлять click-id к рекламному URL.

  2. Поставьте лендинг как Final URL

    Не начинайте с прямого t.me, если нужна атрибуция подписки.

  3. Добавьте UTM suffix

    Передавайте campaign, creative, keyword, device и другие macro-параметры.

  4. Установите Stat pixel

    Выберите базовую ссылку и проверьте, что Telegram CTA переписывается.

  5. Пройдите тестовый Telegram путь

    Клик, invite, подписка и matched click должны появиться в отчетах.

  6. Проверьте отправку в Google Ads

    Смотрите ответ API или статус HTTPS CSV, а не только факт подписки.

Что проверять перед запуском бюджета

Первый тест: открыть лендинг с тестовым gclid в query и нажать Telegram CTA. В Stat должна появиться строка клика с тем же параметром. Второй тест: вступить в канал или пройти bot-сценарий так, как это делает пользователь. Подписка должна получить matched_click_id.

Третий тест: посмотреть, как событие попадает в интеграцию. Если используется Google Ads API, проверьте OAuth, customer id, conversion action и developer token. Если используется HTTPS CSV pull, проверьте URL выгрузки, имя conversion action и расписание в Google Ads. Четвертый тест: убедиться, что события без click-id не отправляются как платная конверсия.

Пример диагностики

Где смотреть потери в Telegram-воронке

Это не бенчмарк, а пример того, как удобно разложить тестовый поток по этапам.

Клики100событий

есть рекламный query

Переходы в Telegram82событий

кнопка или авто-переход

Подписки43событий

Telegram подтвердил событие

Связаны с кликом39событий

есть matched_click_id

Готовы к upload37событий

есть Google click-id

Если этапы не разделять, команда спорит о CPA, не понимая, где именно потерялся трафик.
Checklist

Перед запуском бюджета

GCLID сохраняется

Тестовый URL с click-id появляется в записи клика.

Telegram CTA переписан

Кнопка ведет через Stat, а не напрямую на t.me.

Подписка связана

Webhook записывает matched_click_id для вступления.

No-link отделен

Подписки без надежного клика не уходят в Ads как платные.

Action совпадает

Conversion action в Google Ads соответствует отправляемому событию.

Есть владелец ошибок

Понятно, кто смотрит upload statuses и исправляет разметку.

Чем эта статья отличается от темы YCLID

У Яндекс Директа похожая логика, но другой контракт. Там ключом часто выступает yclid, событие проходит через Метрику, а окно и формат загрузки отличаются. Поэтому нельзя взять настройку из статьи про Яндекс и просто заменить одно слово на Google.

Для Google Ads важны auto-tagging, gclid, gbraid, wbraid, conversion action типа upload clicks и формат click conversion. Для Яндекса важны yclid, цель Метрики и офлайн-загрузка Метрики. В Strelo Stat обе цепочки живут рядом, но их лучше настраивать и проверять отдельно.

Не смешивайте Google Ads и Яндекс Директ в одной настройке. Для Google нужен click conversion по gclid, gbraid или wbraid. Для Яндекса нужен отдельный маршрут с yclid и Метрикой.

Когда Strelo Stat особенно уместен

Strelo Stat стоит подключать, если вы покупаете трафик на Telegram-канал, бота, закрытый клуб, запуск, бесплатный материал или платный канал и хотите обучать рекламу по подтвержденным подпискам. Это не просто счетчик кликов. Он связывает рекламный клик с Telegram-событием, а потом помогает отдать в рекламную систему качественный сигнал.

Если у вас пять переходов в неделю и реклама пока не масштабируется, можно начать с UTM и ручного контроля. Если бюджет уже заметный, CPA прыгает, каналы сравниваются между собой, а команда спорит о качестве трафика, без click-id маршрута вы будете оптимизировать верх воронки вместо реального результата.

Выбор

Когда Strelo Stat подходит для Google Ads и Telegram

Стоит подключать
  • Google Ads ведет трафик в Telegram-канал, бота, клуб или закрытый запуск.
  • Нужно оптимизироваться по подпискам, а не по кликам.
  • Команда хочет видеть gclid, UTM, raw query и статус подписки в одном маршруте.
  • Нужна серверная отправка подтвержденных событий в рекламные системы.
Можно начать проще
  • Рекламного бюджета почти нет и достаточно ручной UTM-таблицы.
  • Подписки приходят в основном из органики, а платный трафик пока тестовый.
  • Нет лендинга или технической возможности поставить pixel.
  • Команда не готова разбирать consent и privacy-настройку.
Stat нужен там, где Telegram-подписка становится рекламной конверсией, а не просто фактом роста канала.

Частые ошибки

Ошибка первая: вести объявление сразу на Telegram и ждать, что gclid окажется в подписке. Ошибка вторая: ставить лендинг, но оставлять Telegram-кнопку прямой. Ошибка третья: сохранять только UTM и не сохранять Google click-id. Ошибка четвертая: отправлять в Google Ads все подписки подряд, включая органику и no-link события.

Ошибка пятая: менять время конверсии на момент экспорта. Ошибка шестая: забыть про consent и privacy-основания. Ошибка седьмая: считать любой клик подпиской. Ошибка восьмая: не проверять статус upload и думать, что отсутствие ошибки в интерфейсе равно успешной атрибуции.

Ошибки

Что чаще всего портит атрибуцию

Прямая Telegram-ссылка в объявлении

Маршрут короткий, но click-id почти негде сохранить.

UTM вместо click-id

UTM помогают отчетам, но не заменяют ключ сопоставления Google Ads.

Отправка органики в Ads

Такой upload портит обучение рекламной системы и отчетность.

Нет raw query

Без исходной строки трудно понять, что реально пришло из рекламы.

Итог

GCLID в Telegram-боте работает только тогда, когда он не пытается жить внутри Telegram. Его нужно поймать в веб-части маршрута, сохранить в клике, связать с подпиской через invite или webhook и вернуть в Google Ads как подтвержденное событие. Тогда реклама получает не просто клики, а сигнал о реальных Telegram-подписчиках.

Для этого лучше строить путь через лендинг клиента и Strelo Stat: Final URL остается нормальной страницей, Stat pixel переносит рекламные параметры в Telegram-маршрут, сервер фиксирует click-id, Telegram подтверждает вступление, а Google Ads получает конверсию только при надежной связке.

Strelo Stat

Сохраняйте GCLID до входа в Telegram

Strelo Stat связывает Google Ads клик, Telegram-подписку, UTM, invite и server-side отправку конверсии в один проверяемый маршрут.

Открыть Strelo Stat

Частые вопросы

Что такое GCLID в Telegram-боте?

На практике это не параметр внутри бота, а рекламный click-id Google Ads, который нужно сохранить до перехода в Telegram и потом связать с подпиской.

Почему gclid теряется при переходе в Telegram?

Потому что пользователь уходит из веб-страницы в приложение или invite, а Telegram-событие подписки не несет исходный URL объявления.

Какой маршрут самый надежный для Google Ads и Telegram?

Клиентский лендинг как Final URL, Stat pixel на лендинге, трекинговый путь /c/<token>, Telegram invite, webhook подписки и upload conversion в Google Ads.

Нужно ли сохранять gbraid и wbraid?

Да. Для части трафика Google Ads могут использоваться gbraid или wbraid, поэтому их лучше хранить рядом с gclid.

UTM достаточно для передачи конверсии в Google Ads?

Нет. UTM хороши для отчетов, но для upload click conversion нужен Google click-id, например gclid, gbraid или wbraid.

Можно ли отправлять подписки без gclid?

В Google Ads как click conversion отправлять не стоит. Такие подписки лучше учитывать как organic, no-link или другой неатрибутированный источник.

Чем Google Ads отличается от Яндекс Директа в такой задаче?

Google Ads использует gclid, gbraid или wbraid и upload click conversions. Яндекс обычно идет через yclid, Метрику и офлайн-конверсии Метрики.

Зачем здесь Strelo Stat?

Strelo Stat сохраняет рекламный клик до Telegram, связывает его с подпиской и помогает вернуть подтвержденное событие в рекламную систему.