Почему стандартные пиксели не работают в Telegram
Facebook Pixel и Google Tag — это JavaScript-скрипты, которые работают в браузере. Telegram бот — это серверное приложение. Пиксель не может отследить действия внутри бота.
Что не отслеживается:
- Старт бота (первое сообщение)
- Прохождение воронки (шаги)
- Оплата через Kaspi
- Открытие Mini App (частично)
Решение: Серверная аналитика — отправка событий напрямую в API Meta, Google и GA4 из бэкенда бота.
Преимущества серверной аналитики:
- Работает внутри Telegram (где нет браузера)
- Обходит блокировщики рекламы
- Точнее, чем клиентские пиксели
- Позволяет передавать кастомные параметры
Meta Conversions API: пошаговая настройка
Meta Conversions API (бывший Server-Side API) позволяет отправлять события в Facebook Pixel с сервера.
Что нужно:
- Pixel ID (из Meta Business Manager)
- Access Token (из Events Manager)
- Эндпоинт: graph.facebook.com/v18.0/{pixel_id}/events
Какие события отправлять:
- PageView — при старте бота
- Lead — при регистрации
- InitiateCheckout — при выборе тарифа
- Purchase — при успешной оплате
Матчинг пользователей: Передавайте хешированные email, phone, fb_login_id. Чем больше данных — тем точнее атрибуция.
Дедупликация: Используйте event_id для предотвращения двойного учёта. Формат: {user_id}_{event_type}_{timestamp}.
Google Ads API: офлайн-конверсии
Google Ads позволяет загружать офлайн-конверсии — события, которые произошли вне сайта.
Процесс:
1. Пользователь кликает по рекламе Google → получает GCLID
2. GCLID сохраняется при старте бота (через UTM)
3. При оплате отправляем GCLID + сумму в Google Ads API
4. Google связывает конверсию с кликом
Реализация:
- Google Ads API v16 (REST)
- OAuth2 авторизация через Service Account
- Загрузка конверсий батчами (раз в час)
Важно: Конверсию нужно загрузить в течение 90 дней после клика. Оптимально — в течение 24 часов.
Enhanced Conversions: Дополнительно передавайте хешированный email для повышения точности матчинга.
GA4 Measurement Protocol
Google Analytics 4 поддерживает Measurement Protocol — серверную отправку событий.
Эндпоинт: google-analytics.com/mp/collect?measurement_id=G-XXX&api_secret=YYY
Обязательные параметры:
- client_id — уникальный идентификатор клиента (сохраняйте из _ga cookie или генерируйте)
- events — массив событий
Какие события отправлять:
- bot_start — первый запуск бота
- funnel_step — прохождение шага воронки
- payment_initiated — начало оплаты
- payment_completed — успешная оплата
Кастомные параметры: utm_source, utm_medium, plan_type, payment_method — всё, что поможет в анализе.
Ограничение: GA4 Measurement Protocol не поддерживает начало сессий. Сессии создаются только через gtag.js.
Сохранение атрибуции через Telegram
Главная сложность — сохранить связь между рекламным кликом и действиями в боте.
Цепочка атрибуции:
1. Пользователь видит рекламу → кликает → попадает на лендинг
2. На лендинге: _ga cookie, _fbp cookie, GCLID из URL
3. Кнопка «Открыть бот» содержит ссылку с параметрами: t.me/bot?start=utm_..._ga_..._gclid_...
4. При /start бот парсит параметры и сохраняет в базу
5. При каждом событии — используем сохранённые данные
First-touch vs Last-touch: Всегда сохраняйте первый источник (first-touch). Это маркетинговая атрибуция, которая показывает, какой канал привёл пользователя.
Практика: Мы передаём до 15 параметров через start link: UTM-метки, client_id (GA4), fbp, fbc, GCLID, referrer.