Есть такой тип задач в performance-маркетинге, от которых большинство команд вежливо отказываются. Это проекты на стыке сложной ниши, "серой зоны" модерации и полностью сломанной юнит-экономики у клиента. Когда привычные инструменты вроде Директа или таргета VK уже выжжены дотла, а стоимость привлечения клиента (CAC) давно превысила его пожизненную ценность (LTV).
Мы за такие задачи беремся.
Для нас это не просто рутинная работа, а инженерный вызов. Наша цель в таких проектах — не просто "полить трафиком", а препарировать рекламную систему как black box, найти в ней неочевидные механики, построить собственную инфраструктуру для трекинга и доказать (или опровергнуть) гипотезу о том, что даже в таких условиях можно построить масштабируемую, data-driven машину для лидогенерации.
Эта статья — наш подробный бортовой журнал. Честный рассказ о том, как мы взялись за один из таких, на первый взгляд, "безнадежных" проектов. Здесь не будет глянцевой истории успеха. Будет подробный разбор архитектуры нашей системы аналитики, примеры кода для трекинга на Python, описание провальных гипотез, которые стоили нам реальных денег, и, конечно, финальная методология, которая в итоге сработала.
Глава 1. Деконструкция платформы: Смотрим "под капот" Telegram Ads в 2025 году
1.1. Экономика аукциона: Почему ваш CPM равен 2€, а не 1€
1.2. "Черный ящик" таргетинга: Парадигма контекста вместо персональных данных
1.3. Анатомия объявления: 160 символов как техническое ограничение
1.4. Экосистема 2025: Новые плейсменты и форматы (Видео, Mini Apps, Поиск)
Глава 2. Проектирование системы: От ТЗ до архитектуры воронки
2.1. Нулевой спринт: Формулируем ТЗ для рекламной кампании (CAC, ROMI, LTV)
2.2. Выбор стека: Методология скоринга каналов и ботов
2.3. Ключевой компонент — система трекинга. Почему UTM здесь бесполезны
2.4. Технический разбор Telegram Deep Links и проектирование Payload
2.5. Пример обработчика на бэкенде (Python, aiogram)
Глава 3. Разработка и деплой: От креатива до запуска
3.1. Регистрация и бюджет: Порог в 2 млн € против реселлеров
3.2. Настройка кампании: Инженерный взгляд на интерфейс
3.3. Кодирование оффера: Упаковка смысла в 160 символов
3.4. Прохождение "фаервола" модерации: Семантические триггеры и процесс апелляции
Глава 4. CI/CD для маркетинга: Оптимизация и масштабирование
4.1. Построение фидбэк-лупа: От данных к решениям
4.2. Юнит-экономика в реальном времени: Расчет CAC и ROMI на уровне креатива
4.3. Горизонтальное и вертикальное масштабирование
4.4. Экономика защиты периметра: Детальный математический расчет
Заключение: Маркетинг как инженерия
Глава 1. Деконструкция платформы: Смотрим "под капот" Telegram Ads в 2025 году
Прежде чем строить систему, нужно понять правила игры и физику среды, в которой мы работаем. Telegram Ads в 2025 году — это уже не тот простой инструмент, каким он был на старте. Аудитория в России, по данным MTS AdTech, достигла ~93 млн. человек, что сравнимо с WhatsApp, а сама платформа вошла в топ-5 медиаплощадок Рунета. Это огромный рынок, но со своими, очень специфическими законами.

1.1. Экономика аукциона: Почему ваш CPM равен 2€, а не 1€
Основа платформы — аукцион, работающий по модели CPM (Cost Per Mille, цена за 1000 показов). Но заявленная минимальная ставка в ~1€ (или 0.5€ для политических тем) — это лишь базовое значение. Реальная цена формируется динамически и зависит от нескольких факторов:
Конкуренция за сегмент: Чем больше рекламодателей таргетируются на один и тот же канал, тему или гео, тем выше будет реальный CPM.
Плотность аудитории: Показать рекламу 1000 пользователям в канале-миллионнике дешевле, чем найти ту же 1000 в десятке мелких каналов по узкой тематике.
Использование медиа: Добавление изображения или видео к объявлению — это, по сути, запрос на более премиальный и заметный инвентарь. Платформа автоматически увеличивает ставку. На практике это означает +50-80% к CPM за картинку и +70-100% за видео.
Таким образом, если вы таргетируетесь на популярную IT-тематику с видеокреативом, ваш реальный CPM, скорее всего, будет в диапазоне 3-4€, а не 1€. Это нужно закладывать в медиаплан сразу.
1.2. "Черный ящик" таргетинга: Парадигма контекста вместо персональных данных
В отличие от классических соцсетей, Telegram Ads не использует персональные данные пользователей для таргетинга. Нет look-alike аудиторий, ретаргетинга по пикселю или таргетинга на основе поведения вне мессенджера. Это не баг, а фундаментальная фича, основанная на политике приватности.
Это полностью меняет подход. Мы переходим от таргетинга на пользователя к таргетингу на контекст. Мы не знаем, кто этот user_id, но мы знаем, что в данный момент он читает канал про Kubernetes. И это всё, что нам нужно. Наша задача — создать объявление, максимально релевантное этому контексту.
1.3. Анатомия объявления: 160 символов как техническое ограничение
Рекламное объявление в Telegram Ads с технической точки зрения — это объект с жестко заданными параметрами:
text:
string, max_length=160
media:
object, optional
link:
URL
Ограничение в 160 символов — это не прихоть, а техническое требование для нативной интеграции в интерфейс. Это наш payload, который мы должны доставить пользователю. И от того, насколько эффективно мы закодируем в него смысл, зависит результат.
1.4. Экосистема 2025: Новые плейсменты и форматы
Платформа активно развивается. В 2025 году важно учитывать новые тренды и возможности, которые напрямую влияют на стратегию:
Рекламные баннеры в видео: Показываются на нижней трети видеоплеера. Это новый, очень заметный формат.
Реклама в результатах поиска: Позволяет работать с уже сформированным, "горячим" спросом.
Реклама в Telegram Mini Apps: Огромный, пока еще мало освоенный рынок для нативной рекламы внутри игр и сервисов.
Рост поддержки видео: Платформа движется к созданию собственного видеохостинга, и видеообъявления становятся все более популярными и эффективными.
Глава 2. Проектирование системы: От ТЗ до архитектуры воронки
Теперь, когда мы понимаем "физику" платформы, можно приступать к проектированию нашей маркетинговой машины.
2.1. Нулевой спринт: Формулируем ТЗ для рекламной кампании
Забудьте про цель "нужны подписчики". Мы мыслим метриками продукта. Перед стартом любой кампании мы фиксируем ключевые KPI, согласованные с клиентом:
Target CAC (Customer Acquisition Cost): Целевая стоимость привлечения платящего клиента.
Target CPL (Cost Per Lead): Целевая стоимость лида (например, старта бота или регистрации).
Target ROMI (Return on Marketing Investment): Целевая окупаемость маркетинговых инвестиций за определенный период (например, 3 месяца).
LTV (Lifetime Value): Прогнозируемая пожизненная ценность клиента.
Только имея на руках эти цифры, мы можем принимать осмысленные решения об эффективности кампаний.
2.2. Выбор стека: Методология скоринга каналов и ботов
Просто выбрать каналы по тематике — это пальцем в небо. Мы подходим к этому как к задаче скоринга.
Парсинг: С помощью API TGStat и Telemetr мы выгружаем список всех каналов и ботов, релевантных нашей тематике.
-
Фильтрация и оценка: Мы написали простой Python-скрипт, который для каждого канала/бота собирает и анализирует метрики:
ERR (Engagement Rate by Reach)
Subscriber dynamics (динамика подписчиков за последние 3 месяца)
Mentions count (количество упоминаний)
Ad posts ratio (доля рекламных постов)
Скоринг: Каждому параметру присваивается вес, и мы получаем итоговый score для каждого плейсмента. В первую очередь мы тестируем каналы с самым высоким скором.
2.3. Ключевой компонент — система трекинга. Почему UTM здесь бесполезны
Это самый важный технический аспект. Стандартные UTM-метки, работающие через cookies и JavaScript, в Telegram бесполезны. Когда пользователь кликает на ссылку в Telegram и переходит на сайт, теряется почти вся информация об источнике внутри мессенджера. Если же он переходит в бота, UTM не работают в принципе. Нам нужен был нативный механизм трекинга.
2.4. Технический разбор Telegram Deep Links и проектирование Payload
Решением стали Telegram Deep Links. Это фундаментальный механизм платформы, позволяющий передавать параметры при запуске бота через start-параметр.
Ссылка в рекламе имеет вид: https://t.me/YourBotName?start=[payload]
Нашей задачей было спроектировать payload так, чтобы он был уникальным для каждой связки [источник] + [креатив] и содержал всю нужную нам информацию.
Мы остановились на структуре base64 от json-строки.
Пример:
Исходные данные:
{ "source_id": "channel_habr_main", "creative_id": "v2_blue_banner" }
Превращаем в JSON:
'{"source_id": "channel_habr_main", "creative_id": "v2_blue_banner"}'
Кодируем в base64:
eyJzb3VyY2VfaWQiOiAiY2hhbm5lbF9oYWJyX21haW4iLCAiY3JlYXRpdmVfaWQiOiAidjJfYmx1ZV9iYW5uZXIifQ==
Итоговая ссылка:
https://t.me/YourBotName?start=eyJzb3VyY2VfaWQiOiAiY2hhbm5lbF9oYWJyX21haW4iLCAiY3JlYXRpdmVfaWQiOiAidjJfYmx1ZV9iYW5uZXIifQ
Это позволяет передавать структурированные данные и легко их расширять в будущем.
2.5. Пример обработчика на бэкенде (Python, aiogram)
На стороне бэкенда бота нам нужен был обработчик, который "ловит" этот payload.
Пример кода на Python
downloadcontent_copyexpand_less
import base64
import json
from aiogram import Bot, Dispatcher, types
from aiogram.filters import CommandStart
# ... (инициализация бота и диспетчера)
@dp.message(CommandStart())
async def handle_start(message: types.Message):
user_id = message.from_
user.id
args = message.get_args() # Получаем наш payload
if args:
try:
# Декодируем payload из base64
decoded_payload = base64.b64decode(args).decode('utf-8')
# Парсим JSON
tracking_data = json.loads(decoded_payload)
source = tracking_data.get("source_id")
creative = tracking_data.get("creative_id")
# Записываем данные в нашу аналитическую БД
# await
db.save
_tracking_info(user_id, source, creative)
print(f"New user {user_id} started bot from source: {source}, creative: {creative}")
except (ValueError, TypeError, base64.binascii.Error) as e:
# Обработка случая, если payload некорректный
print(f"Could not decode payload for user {user_id}: {e}")
# await
db.save
_organic_user(user_id)
else:
# Пользователь пришел без payload (органика)
print(f"New organic user {user_id} started bot")
# await
db.save
_organic_user(user_id)
# Отправляем приветственное сообщение
await message.answer("Добро пожаловать!")
# ... (запуск бота)
Этот код — основа для построения сквозной аналитики. Он позволяет нам точно атрибутировать каждого нового пользователя к конкретной рекламной кампании.

Глава 3. Разработка и деплой: От креатива до запуска
Когда архитектура системы спроектирована, наступает этап "разработки" и "выкатки в продакшн". В нашем контексте — это подготовка креативов, настройка кабинета и запуск первых тестовых кампаний.
3.1. Регистрация и бюджет: Порог в 2 млн € против реселлеров
Первое, с чем сталкивается любой, кто решает работать с Telegram Ads напрямую — это финансовый порог входа. На 2025 год он составляет 2 миллиона евро, из которых 1 млн € — депозит, а 1 млн € — бюджет на рекламу.
С точки зрения платформы, это логичный фильтр, отсекающий несерьезных рекламодателей и "тестировщиков". Однако для 99% компаний это непреодолимый барьер. Именно здесь появляется экосистема партнеров-реселлеров (eLama, click.ru и другие).
С технической точки зрения, реселлеры выступают в роли API-шлюза или прокси-сервера. Они берут на себя всю финансовую и юридическую сложность взаимодействия с головным офисом Telegram в Дубае, предоставляя конечному пользователю:
Сниженный порог входа: Вместо 2 млн € бюджет может начинаться от 500€.
Абстракцию от валюты: Возможность пополнять бюджет в рублях, а не в EUR или TON.
Управление документацией: Реселлеры предоставляют все необходимые закрывающие документы для российской бухгалтерии, что критически важно для любого юридического лица.
Поддержку и аналитику: Часто предоставляют дополнительные интерфейсы и инструменты, упрощающие работу.
За эту "абстракцию" реселлеры берут комиссию, обычно в районе 5-15%. Для большинства проектов на старте это единственно возможный и экономически оправданный путь.
3.2. Настройка кампании: Инженерный взгляд на интерфейс
Интерфейс ads.telegram.org минималистичен, но каждый его пункт — это параметр, влияющий на итоговый результат. Мы подходим к заполнению не как к формальности, а как к конфигурации сервиса.
Название кампании: Мы используем строгую конвенцию для нейминга, например [ProjectName]_[Goal]_[TargetAudience]_[Date]_[Version]. Пример: Guardian_BotStarts_CompetitorsTier1_2025-05_v1. Это позволяет в будущем легко фильтровать и анализировать сотни кампаний в BI-системе.
Цель: Выбор цели (трафик на сайт, рост подписчиков, активация бота) влияет на первичную оптимизацию со стороны алгоритмов Telegram. Хотя платформа не раскрывает детали, мы заметили,
что при цели "активация бота" показы чаще отдаются более активной и вовлеченной аудитории.Бюджет и CPM: Мы всегда выставляем дневной лимит, чтобы избежать случайного "слива" всего бюджета за несколько часов из-за непредвиденного всплеска активности. Пример расчета показов, который всегда держим в уме: Бюджет 100€ / Реальный CPM 2€ * 1000 = 50 000 показов. Это наша базовая единица для оценки охвата.
Расписание и Frequency Capping (ограничение частоты показов): Это инструменты управления "рекламной усталостью" аудитории. Мы почти никогда не ставим больше 2 показов в день на пользователя. Для B2B-продуктов настраиваем показ строго в рабочее время (например, с 10:00 до 18:00 по МСК в будни), для B2C — наоборот, смещаем акцент на вечер и выходные.
3.3. Кодирование оффера: Упаковка смысла в 160 символов
Как мы уже говорили, 160 символов — это наш payload. Его "кодирование" — ключевая задача. Здесь нет места "воде", только работающие формулы.
Формула "До/После": Идеальна для продуктов, решающих конкретную боль. "[ДО] Ручная отчетность съедает часы? [ПОСЛЕ] Авто-отчеты за 5 мин с [Продукт]! Попробуйте!"
-
Формула AIDA в миниатюре: Высший пилотаж для короткого текста.
Внимание: Яркий факт, вопрос. "Ваши данные в сети под угрозой?"
Интерес: Намек на решение. "Есть способ защитить их в один клик."
Желание: Усиление выгоды. "Полная анонимность и свобода в интернете."
Действие: Четкий призыв. "Активируйте защиту сейчас!"
Мы избегаем агрессивных призывов "Купи!", "Подпишись!", так как они часто приводят к отказу модерации. Вместо этого мы используем лаконичное описание выгоды.
3.4. Прохождение "фаервола" модерации: Семантические триггеры и процесс апелляции
Модерация в Telegram Ads — это по большей части автоматизированный процесс, работающий на семантических триггерах. По нашему опыту, до 40% отказов у новичков случается из-за неправильно оформленного текста.
Наш процесс "pre-flight check" перед отправкой на модерацию:
Проверка по чек-листу стоп-слов: У нас есть постоянно обновляемый список слов и выражений, которые с высокой вероятностью вызовут отклонение.
Грамматика и пунктуация: Обилие восклицательных знаков, эмодзи, написание КАПСОМ — все это красные флаги для модератора.
Релевантность ссылки: Ссылка должна вести на релевантный, работающий и безопасный ресурс. Любые редиректы или "прокладки" запрещены.
Что делать, если объявление отклонили?
Не стоит сразу создавать новое. Существует процесс апелляции. Важно общаться с поддержкой на языке фактов: спокойно и аргументированно объяснить, почему ваше объявление не нарушает правил. Например: "Данное объявление рекламирует сервис по обеспечению кибербезопасности и не содержит призывов к незаконной деятельности. Ключевая ценность для пользователя — защита персональных данных". Часто после такого объяснения объявление одобряют.

Глава 4. CI/CD для маркетинга: Оптимизация и масштабирование
Запуск кампании — это не конец, а только начало. Дальше начинается самое интересное — построение цикла непрерывной интеграции данных и оптимизации, или, как мы это называем, CI/CD для маркетинга.
4.1. Построение фидбэк-лупа: От данных к решениям
Наш трекинг на Deep Links — это основа для построения фидбэк-лупа. Вот как выглядит наш data flow:
Сбор данных: Бэкенд бота в реальном времени пишет данные о стартах и последующих конверсиях (покупках) в нашу базу данных на PostgreSQL.
Визуализация: Данные из БД стримятся в BI-систему (мы используем Metabase). У нас настроен дашборд, который в реальном времени показывает ключевые метрики по каждой связке [источник] + [креатив].
Принятие решений: Мы анализируем дашборд ежедневно. Если какая-то связка показывает отрицательный ROMI в течение тестового периода (обычно 3-5 дней), мы ее безжалостно отключаем и перераспределяем бюджет.
4.2. Юнит-экономика в реальном времени: Расчет CAC и ROMI на уровне креатива
Благодаря нашей системе трекинга, мы можем считать юнит-экономику не "в среднем по больнице", а для каждой отдельной рекламной кампании. Это позволяет нам находить аномалии и инсайты.
Например, мы обнаружили, что один из наших креативов приносил лидов на 20% дороже, чем другие (CPL = 35 руб против 28 руб). На первый взгляд, его стоило отключить. Но, копнув глубже, мы увидели, что CR (Conversion Rate) из лида в покупку у этого креатива был вдвое выше. Итоговый CAC с него был самым низким. Без детальной аналитики мы бы отключили самую эффективную связку.
4.3. Горизонтальное и вертикальное масштабирование
Когда мы находим успешную связку, встает вопрос о масштабировании. Мы используем два подхода:
-
Вертикальное масштабирование: Простое увеличение дневного бюджета на выигрышную кампанию.
Плюсы: Быстро и предсказуемо.
Минусы: Риск "выжигания" аудитории, рост CPM из-за повышения конкуренции за тот же сегмент.
-
Горизонтальное масштабирование: Поиск новых точек роста.
Берем успешный креатив и тестируем его на новых, похожих по скорингу, каналах.
Берем успешный канал и тестируем в нем новые креативные гипотезы.
Оптимальная стратегия — это комбинация двух подходов.

4.4. Экономика защиты периметра: Детальный математический расчет
Давайте разберем эту тактику и ее экономику под микроскопом.
Шаг 1. Считаем затраты на "оборону":
Средний CPM в ботах: $8.
Наша активная база: 30 000 пользователей.
Частота показов для удержания: 2 показа на пользователя в месяц.
Затраты в месяц: (30 000 / 1000) 2 $8 = $480 (или ~48 000 рублей).
Шаг 2. Считаем предотвращенные потери:
Возьмем пессимистичный LTV клиента за год: 2000 рублей.
Допустим, реклама конкурентов в нашем боте способна увести всего 1% аудитории в месяц. Это 300 человек.
Потенциальные потери в месяц: 300 пользователей * 2000 руб/LTV = 600 000 рублей.
Шаг 3. Сводим дебет с кредитом:
Инвестируя ~48 000 рублей в месяц, мы предотвращаем потенциальные потери в ~600 000 рублей. ROI этой "оборонительной" кампании огромен. Это просчитанный и экономически обоснованный шаг.

Заключение: Маркетинг как инженерия
Этот кейс — иллюстрация нашего подхода: маркетинг, особенно в таких сложных системах, как Telegram Ads, должен быть не "креативным", а инженерным. Мы определяем проблему, проектируем систему для ее решения, строим, деплоим, собираем метрики и итерируем.
Telegram Ads — это не магия, а конструктор с четкими правилами. Понимание этих правил на техническом уровне, построение собственной системы аналитики и принятие решений на основе данных — вот ключ к эффективной работе с этой платформой.
Буду рад обсудить в комментариях ваши кейсы и мысли. С какими задачами вы сталкиваетесь в своей работе? Какие неочевидные механики находили в Telegram или других рекламных системах? Какой у вас стек для маркетинговой аналитики?