Adset.ProAdset.ProKnowledge base
Home/Обучающие материалы/Push-метрики: что считается и как читать

Push-метрики: что считается и как читать

Как работают push-уведомления в Adset.Pro

Push-уведомления — это бесплатный ретаргетинг на твою базу подписчиков.

Механика:

  1. Пользователь установил PWA и разрешил пуши → он в базе подписчиков (FCM-токен + click_id + страна + флаги поведения)

  2. Ты создаёшь push-уведомление с заголовком, текстом, картинкой и ссылкой

  3. Adset.Pro отправляет его через Firebase Cloud Messaging (FCM) — индивидуально на FCM-токен

  4. Пользователь видит уведомление на экране телефона → кликает → попадает на лендинг/оффер

  5. Service Worker на клиенте фиксирует показ (VIEW) и клик (CLICK)

Бизнес-ценность: Это бесплатный канал повторного касания. Один раз собрал базу подписчиков — дальше отправляй пуши по расписанию или триггерам (регистрация, депозит).


Типы push-событий

Каждое взаимодействие с пушем фиксируется отдельным событием в таблице events_push:

Серверные события (фиксируются трекером сразу)

Событие

Что означает

SEND

Пуш успешно отправлен через FCM (сервер получил подтверждение от Firebase)

FAIL

Ошибка отправки: токен устарел, подписка невалидна, FCM вернул ошибку

SKIP

Пуш не отправлен — подписчик не прошёл таргетинг (поведенческие фильтры: registered/deposited/redeposited)

Клиентские события (фиксируются Service Worker на устройстве)

Событие

Что означает

VIEW

Пуш отобразился на экране пользователя (событие onshow в Service Worker)

CLICK

Пользователь кликнул по уведомлению (событие onclick)

Ключевая разница: SEND ≠ VIEW. Пуш может быть отправлен (SEND), но не отображён: пользователь в Do Not Disturb, устройство выключено, браузер закрыт, или уведомления заблокированы на уровне ОС.

События подписки (в основной таблице events)

Событие

Что означает

NOTIFICATION_REQUEST

Показан запрос на пуш-уведомления

NOTIFICATION_SUBSCRIBE

Пользователь согласился на пуши

NOTIFICATION_DECLINE

Пользователь отказался

NOTIFICATION_UNSUBSCRIBE

Пользователь отписался позже

NOTIFICATION_CLICK

Клик по пуш-уведомлению (дублирует PUSH_CLICK в основной статистике)


Ключевые метрики push-кампаний

Все метрики доступны в статистике (таблица events_push):

Метрика

Формула

Что показывает

push_sends

countIf(event_type = 'SEND')

Количество успешно отправленных пушей

push_fails

countIf(event_type = 'FAIL')

Количество ошибок отправки

push_skips

countIf(event_type = 'SKIP')

Пропущенные (таргетинг не совпал)

push_views

countIf(event_type = 'VIEW')

Пуши, отобразившиеся на экране

push_clicks

countIf(event_type = 'CLICK')

Клики по уведомлениям

push_ctr

push_clicks / push_views

Кликабельность — сколько % увидевших кликнули

push_delivery_rate

push_sends / (push_sends + push_fails)

% успешной доставки от попыток

push_fail_rate

push_fails / (push_sends + push_fails)

% ошибок при отправке

push_view_rate

push_views / push_sends

% доставленных пушей, которые реально отобразились

Пост-клик атрибуция (таблица events_push_attributed)

Метрика

Формула

Что показывает

push_postclick_holds

countIf(conv.event_type = 'CPA_HOLD')

Регистрации после клика по пушу

push_postclick_accepts

countIf(conv.event_type = 'CPA_ACCEPT')

FTD (депозиты) после клика по пушу

push_postclick_redeps

countIf(conv.event_type = 'CPA_REDEP')

Редепозиты после клика по пушу

Интерпретация метрик

  • push_ctr: 2-5% — типичный для gambling/betting. Выше 5% — отличный креатив. Ниже 1% — проверь заголовок, картинку, релевантность

  • push_delivery_rate: 60-80% — норма для свежей базы. Ниже 50% — база «состарилась», много мёртвых токенов

  • push_fail_rate: Обратная сторона delivery_rate. Если > 40% — пора «чистить» базу или обновлять подписчиков

  • push_view_rate: Обычно 50-70% от SEND. Остальные — Do Not Disturb, выключенные устройства


Статистика пушей в интерфейсе

Основная аналитика (раздел Статистика)

В статистике можно группировать данные по пушам:

Group Key

Описание

event_push_id + event_push_id_name

Разбивка по конкретному пушу

event_slot_key

Разбивка по слоту времени (для регулярных пушей по расписанию)

Как выбрать push-данные:

  • Используй метрики из группы Push: push_sends, push_views, push_clicks, push_ctr и т.д.

  • Добавь group by event_push_id чтобы увидеть какой пуш сработал лучше

  • Метрики push работают с таблицей events_push — она подключается автоматически при запросе push-метрик

Post-Click Attribution (раздел Push Аналитика)

Post-Click Attribution отслеживает конверсии, которые произошли после клика по пушу, в течение заданного окна атрибуции.

Параметр

Значение

Окно атрибуции

Максимальное время между кликом по пушу и конверсией

По умолчанию

72 часа

Как работает:

  1. Пользователь кликает по пушу → фиксируется event_click_id пуш-клика

  2. В течение N часов пользователь регистрируется или делает депозит

  3. Конверсия атрибутируется этому пуш-клику через JOIN events_push_attributed

Важные нюансы:

  • Атрибуция к пушу не заменяет атрибуцию к рекламному клику — один депозит может быть атрибутирован обоим (рекламному клику в основной статистике + пушу в Post-Click Attribution)

  • Рекомендуемое окно атрибуции для gambling: 48-72 часа. Короче — теряешь отложенные конверсии. Длиннее — слишком много «шума»

  • Post-Click Attribution показывает вклад пушей в общую конверсионную картину, а не заменяет основную статистику


Типы push-уведомлений

Регулярные пуши (REGULAR / ONE_TIME)

Отправляются по расписанию через PushPlannerService:

  • Календарь пушей (PushGroup) определяет дни и время отправки

  • Поддерживается часовое расписание по timezone пользователя (tz_GMTp3 и т.д.)

  • FCM condition: 'team_X' in topics AND 'country_UA' in topics [AND 'tz_GMTp3' in topics]

Применение: Акции, бонусы, контент, регулярные напоминания.

Событийные пуши (EVENT)

Отправляются при наступлении события через PushEventScheduler:

  • Триггеры: REGISTRATION, DEPOSIT и другие

  • Поддерживается отложенная отправка с настраиваемой задержкой (через eventSchedule)

  • Ожидание подписки: если подписки ещё нет, scheduler ждёт до 2 часов с backoff (5s → 15s → 1m → 5m → 10m)

Применение:

  • Приветственный пуш после регистрации (через N минут/часов)

  • Пуш-напоминание при отсутствии депозита

  • Реактивация при редепозите


Таргетинг подписчиков

Перед отправкой настраивается таргетинг по поведенческим флагам и параметрам подписки:

Поведенческие фильтры (push.targets)

Параметр

Значения

Описание

registrations

all / registered / not_registered

Фильтр по факту регистрации

deposit

all / deposited / not_deposited

Фильтр по факту первого депозита

redeposit

all / redeposited / not_redeposited

Фильтр по факту редепозита

Поведение по умолчанию: Для большинства пресетов redeposit = not_redeposited (не слать пуши тем, кто уже редепозитил). Пресет «Reg+ Dep+ Redep+» — единственный, где redeposit = redeposited.

Фильтры по подписке

Параметр

Описание

Страна (country)

Отправить только пользователям из определённых GEO

Timezone (timeZone)

Отправка в локальное время пользователя

Кампания (campaign)

Подписчики конкретных кампаний (через PushGroup)

Статус подписки

Только ACTIVE подписки

Практические кейсы

Кейс 1: «Бонус для зарегистрированных, но не задепозивших из UA»

targets:
  registrations: registered
  deposit: not_deposited
  redeposit: all
Фильтр: campaign ∈ [UA-кампании]

Кейс 2: «Триггерный пуш после регистрации (через 1 час)»

Тип: EVENT
Триггер: REGISTRATION
Задержка: 1 час
Содержимое: "Твой бонус ждёт! Забери прямо сейчас"

Кейс 3: «Реактивация — не задепозившие за 3 дня»

Тип: EVENT
Триггер: REGISTRATION
Задержка: 72 часа
targets:
  deposit: not_deposited
Содержимое: "Не упусти свой бонус — он сгорает через 24 часа!"

Макросы в тексте пуша

В заголовке и теле уведомления можно использовать макросы для персонализации:

Макрос

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

{offer.value}

Значение оффера из настроек PWA (например, размер бонуса)

{random: вар1, вар2, вар3}

Случайный выбор из списка вариантов

Примеры:

Заголовок:

Бонус {offer.value} только сегодня!

Тело:

{random: Успей забрать бонус!, Твой бонус ждёт!, Специальное предложение для тебя!}

Совет: Рандомизация через {random} снижает «баннерную слепоту» — когда пользователь видит один и тот же текст каждый день и перестаёт кликать. Меняй текст каждый раз чтобы поддерживать CTR.


Причины низкой доставки

Delivery Rate низкий (< 60%)

Причина

Что делать

Устаревшие FCM-токены

База «стареет» со временем — это нормально. FCM автоматически возвращает FAIL для невалидных токенов

Пользователь удалил PWA

Подписка становится невалидной. Решение: регулярно привлекать новых подписчиков

Пользователь заблокировал уведомления

Токен удаляется из базы при NOTIFICATION_UNSUBSCRIBE

FCM недоступен (редко)

Повторная отправка не предусмотрена. Обычно восстанавливается само

FAIL vs SKIP — в чём разница

Событие

Причина

Что означает

FAIL

Ошибка FCM

Токен невалиден, подписка устарела. Техническая проблема

SKIP

Таргетинг не совпал

Подписчик не подходит под условия (уже задепозил, не зарегистрирован и т.д.). Логическое решение

Если push_fail_rate > 40% — база сильно устарела. Решение:

  1. Запускать новые кампании для сбора свежих подписчиков

  2. Фокусироваться на push-метриках свежих когорт (последние 30 дней)


Push-группы и кампании

Кампании привязываются к Push-группам (PushGroup). Это определяет:

  • Какие подписчики получают пуши из этой группы кампаний

  • Календарь отправки регулярных пушей

  • Общие настройки для всех пушей группы

FCM Topics: Подписчики автоматически подписываются на FCM-топики:

  • team_{teamId} — для фильтрации по команде

  • country_{ISO2} — для фильтрации по стране (UA, KZ, UZ и т.д.)

  • tz_GMTp{N} — для фильтрации по часовому поясу


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

Q: Отправил 10 000 пушей, а VIEW только 3 000 — куда делись остальные?

Сумма: SEND + FAIL + SKIP = общее количество обработанных подписчиков.

  • FAIL — устаревшие токены, FCM-ошибки (обычно 10-30% для базы старше месяца)

  • SKIP — таргетинг не совпал (пользователь уже задепозил и т.д.)

  • Из оставшихся SEND: не все стали VIEW — Do Not Disturb, выключенные устройства, заблокированные уведомления

Q: push_ctr низкий (< 2%) — что делать?

  1. A/B тест заголовков — создай два пуша с разным текстом, сравни CTR

  2. Проверь время отправки — пуш в 3 часа ночи по часовому поясу пользователя = низкий CTR

  3. Персонализируй через макросы — {offer.value} и {random} повышают релевантность

  4. Добавь/смени картинку — пуши с изображениями обычно имеют более высокий CTR

  5. Проверь сегментацию — пуш «для всех» всегда менее релевантен, чем целевой

Q: Как отследить какой именно пуш привёл к депозиту?

  1. Открой Push Аналитику → Post-Click Attribution

  2. Выбери метрики: push_postclick_accepts, push_postclick_redeps

  3. Group by: event_push_id (или event_push_id_name)

  4. Увидишь сколько FTD и редепозитов атрибутировано каждому пушу

В основной статистике: добавь метрики push_clicks и group by event_push_id — увидишь сколько кликов получил каждый пуш. Соотношение кликов и конверсий = эффективность.

Q: Можно ли отправлять пуши пользователям, которые установили PWA но не подписались на уведомления?

Нет. Пуши отправляются только подписчикам (FCM-токен в базе). Установка PWA ≠ подписка на пуши:

  • PWA_INSTALL — PWA установлено

  • NOTIFICATION_SUBSCRIBE — пользователь согласился на пуши (это отдельное событие)

  • NOTIFICATION_DECLINE — пользователь отказался

Обычно 40-70% установивших PWA подписываются на пуши. Для повышения подписок: оптимизируй дизайн запроса, показывай в правильный момент (не сразу при открытии).

Q: Как работает отправка пушей по FCM condition vs по токенам?

Adset.Pro поддерживает два режима:

  • Condition (массовая): FCM condition вида 'team_X' in topics AND 'country_UA' in topics — отправляется одним запросом на все подходящие устройства. Быстро, масштабируемо

  • Token (индивидуальная): Отправка на конкретный FCM-токен — используется для событийных пушей (EVENT) где нужна персонализация