Серверные конверсии Google Ads без developer token

У Telegram-воронок в Google Ads то же слепое пятно, что и везде: конверсия происходит в боте, вдали от любого gtag-сниппета, и Smart Bidding оптимизируется по кликам вместо депозитов. Leadgram замыкает цикл server-side через Data Manager API от Google - и настройка на удивление скучная: без developer token, без ревью OAuth-приложения, без токена, который надо куда-то вставлять. Одно действие-конверсия, один инвайт по email, два ID.

Как устроена модель

Конверсии загружает управляемый сервисный аккаунт Leadgram в Google Cloud. Контроль доступа целиком живёт в Google Ads: вы приглашаете email нашего сервисного аккаунта в свой кабинет - и этот инвайт и есть вся авторизация. Сам email показан на странице Google в дашборде.

Если Leadgram когда-нибудь сменит ключ этого сервисного аккаунта, на вашей стороне ничего не изменится. Приглашённый email остаётся тем же, поэтому уже выданный инвайт продолжает работать, а любой access token, выпущенный под старым ключом, просто доживёт свой короткий остаток жизни, а не оборвётся на полпути.

Подготовьте Google Ads

  1. Включите auto-tagging (Администратор → Настройки аккаунта → Автоматическая пометка). Без него Google не добавляет gclid к URL - атрибуция невозможна.
  2. Создайте действие-конверсию: Цели → Конверсии → Новое действие-конверсия → Импорт → Другие источники данных или CRM → Импорт из кликов. В настройках ценности выберите «Разная ценность для каждой конверсии» - Leadgram передаёт реальный payout с каждой конверсией.
  3. Скопируйте числовой ID действия-конверсии. Откройте действие и возьмите число из URL (ctId=...) или панели настроек. Это просто число, а не тег AW-....
  4. Пригласите сервисный аккаунт: Администратор → Доступ и безопасность → добавьте email со страницы /google с уровнем «Стандартный» (Read-only загружать не может). Инвайт нужно принять - до подтверждения загрузки получают 403.
  5. Если инвайт ушёл в MCC (управляющий аккаунт), а не в рабочий - запишите ещё и 10-значный ID самого MCC.

Добавьте аккаунт в Leadgram

  1. На странице Google нажмите «Добавить аккаунт».
  2. ID действия-конверсии - числовой ID из шага 3.
  3. Customer ID - ваш 10-значный ID Google Ads (правый верхний угол кабинета). Дефисы не мешают, Leadgram их нормализует.
  4. MCC (manager) customer ID - только если инвайт шёл в управляющий аккаунт, иначе оставьте пустым.

Поля для токена нет - так и задумано.

Форма аккаунта Google с ID действия-конверсии и Customer IDФорма аккаунта Google с ID действия-конверсии и Customer ID

Привяжите к кампании

В диалоге кампании на странице Кампании впишите тот же числовой ID действия-конверсии в поле Google. ID должны совпадать точно - именно по этому джойну Leadgram находит учётные данные для конверсии. Живой индикатор под полем подтверждает совпадение прямо при вводе.

Что отправляется

  • Трекинг-ссылка сама ловит gclid, gbraid и wbraid; с каждой конверсией уходит ровно один из них (при наличии побеждает gclid).
  • payout события превращается в conversionValue (USD).
  • Уходят конверсионные события (bot_start, channel_join, first_dm, lead, registration, deposit, ftd, purchase); сырые click/land намеренно никогда не загружаются.
  • Детерминированный transactionId дедуплицирует ретраи на стороне Google.

Проверка

На странице Доставка конверсий строка Google появляется через секунды после события. Отчёты самого Google запаздывают: конверсии по gclid обычно видны примерно через 3 часа, по gbraid/wbraid (iOS) - до 72 часов.

Если число доставок кажется заниженным, прежде чем считать это поломкой, загляните в блок «Пропущено (не отправлено)» на карточке платформы. Он раскладывает пропуски за сегодня и за 7 дней по причине - нет Google click ID (gclid), клик устарел или событие не сопоставлено, - так что реальный пробел легко отличить от клика, который изначально не мог нести gclid.

Частые грабли

  • Вставили AW-123456789 как ID конверсии - это тег, а не ID, нужно голое число.
  • Инвайт отправлен, но не принят, или выдан Read-only - все загрузки ловят 403, пока доступ не станет «Стандартный» и принятый.
  • Путаница с MCC: инвайт шёл в управляющий аккаунт, а поле MCC пустое, или наоборот - в обоих случаях 403.
  • Выключен auto-tagging: клики приходят без gclid, и Google их пропускает, а не роняет с ошибкой. Блок «Пропущено (не отправлено)» на Доставке конверсий покажет их как «Нет Google click ID (gclid)».
  • Meta и Google запущены на одной кампании: клик, несущий только fbclid, на стороне Google закономерно пропускается. Это не ошибка, а просто клик, который Google изначально не мог сматчить, - он попадёт в ту же разбивку пропусков.
  • «Доставлено, а в Google пусто» - обычно просто задержка обработки, проверьте снова через 3 (или 72) часа.
  • Конверсии по кликам старше примерно 89 дней пропускаются - день запаса под 90-дневным окном gclid у Google, который их всё равно не сматчит.