Push-метрики: що рахується і як читати
Як працюють push-сповіщення в Adset.Pro
Push-сповіщення — це безкоштовний ретаргетинг на твою базу підписників.
Механіка:
Користувач встановив PWA і дозволив пуші → він у базі підписників (FCM-токен + click_id + країна + прапорці поведінки)
Ти створюєш push-сповіщення з заголовком, текстом, картинкою і посиланням
Adset.Pro відправляє його через Firebase Cloud Messaging (FCM) — індивідуально на FCM-токен
Користувач бачить сповіщення на екрані телефону → клікає → потрапляє на лендинг/офер
Service Worker на клієнті фіксує показ (
VIEW) і клік (CLICK)
Бізнес-цінність: Це безкоштовний канал повторного дотику. Один раз зібрав базу підписників — далі відправляй пуші за розкладом або тригерам (реєстрація, депозит).
Типи push-подій
Кожна взаємодія з пушем фіксується окремою подією в таблиці events_push:
Серверні події (фіксуються трекером одразу)
Подія | Що означає |
|---|---|
| Пуш успішно відправлений через FCM (сервер отримав підтвердження від Firebase) |
| Помилка відправки: токен застарів, підписка невалідна, FCM повернув помилку |
| Пуш не відправлений — підписник не пройшов таргетинг (поведінкові фільтри: registered/deposited/redeposited) |
Клієнтські події (фіксуються Service Worker на пристрої)
Подія | Що означає |
|---|---|
| Пуш відобразився на екрані користувача (подія |
| Користувач клікнув по сповіщенню (подія |
Ключова різниця:
SEND≠VIEW. Пуш може бути відправлений (SEND), але не відображений: користувач у Do Not Disturb, пристрій вимкнено, браузер закрито, або сповіщення заблоковані на рівні ОС.
Події підписки (в основній таблиці events)
Подія | Що означає |
|---|---|
| Показано запит на пуш-сповіщення |
| Користувач погодився на пуші |
| Користувач відмовився |
| Користувач відписався пізніше |
| Клік по пуш-сповіщенню (дублює PUSH_CLICK в основній статистиці) |
Ключові метрики push-кампаній
Всі метрики доступні в статистиці (таблиця events_push):
Метрика | Формула | Що показує |
|---|---|---|
|
| Кількість успішно відправлених пушів |
|
| Кількість помилок відправки |
|
| Пропущені (таргетинг не співпав) |
|
| Пуші, що відобразилися на екрані |
|
| Кліки по сповіщенням |
|
| Клікабельність — скільки % тих, хто побачив, клікнули |
|
| % успішної доставки від спроб |
|
| % помилок при відправці |
|
| % доставлених пушів, які реально відобразилися |
Пост-клік атрибуція (таблиця events_push_attributed)
Метрика | Формула | Що показує |
|---|---|---|
|
| Реєстрації після кліка по пушу |
|
| FTD (депозити) після кліка по пушу |
|
| Редепозити після кліка по пушу |
Інтерпретація метрик
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 | Опис |
|---|---|
| Розбивка по конкретному пушу |
| Розбивка по слоту часу (для регулярних пушів за розкладом) |
Як вибрати 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 години |
Як працює:
Користувач клікає по пушу → фіксується
event_click_idпуш-клікаПротягом N годин користувач реєструється або робить депозит
Конверсія атрибутується цьому пуш-кліку через JOIN
events_push_attributed
Важливі нюанси:
Атрибуція до пушу не замінює атрибуцію до рекламного кліку — один депозит може бути атрибутований обом (рекламному кліку в основній статистиці + пушу в Post-Click Attribution)
Рекомендоване вікно атрибуції для gambling: 48-72 години. Коротше — втрачаєш відкладені конверсії. Довше — занадто багато «шуму»
Post-Click Attribution показує вклад пушів в загальну конверсійну картину, а не замінює основну статистику
Типи push-сповіщень
Регулярні пуші (REGULAR / ONE_TIME)
Відправляються за розкладом через PushPlannerService:
Календар пушів (PushGroup) визначає дні і час відправки
Підтримується погодинний розклад за timezone користувача (
tz_GMTp3тощо)FCM умова:
'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)
Параметр | Значення | Опис |
|---|---|---|
|
| Фільтр за фактом реєстрації |
|
| Фільтр за фактом першого депозиту |
|
| Фільтр за фактом редепозита |
Поведінка за замовчуванням: Для більшості пресетів
redeposit=not_redeposited(не слати пуші тим, хто вже редепозитив). Пресет «Reg+ Dep+ Redep+» — єдиний, деredeposit = redeposited.
Фільтри за підпискою
Параметр | Опис |
|---|---|
Країна ( | Відправити тільки користувачам з певних GEO |
Timezone ( | Відправка в локальний час користувача |
Кампанія ( | Підписники конкретних кампаній (через PushGroup) |
Статус підписки | Тільки |
Практичні кейси
Кейс 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 години!"
Макроси в тексті пуша
В заголовку і тілі сповіщення можна використовувати макроси для персоналізації:
Макрос | Що підставляє |
|---|---|
| Значення офера з налаштувань PWA (наприклад, розмір бонусу) |
| Випадковий вибір зі списку варіантів |
Приклади:
Заголовок:
Бонус {offer.value} тільки сьогодні!
Тіло:
{random: Встигни забрати бонус!, Твій бонус чекає!, Спеціальна пропозиція для тебе!}
Порада: Рандомізація через
{random}знижує «банерну сліпоту» — коли користувач бачить один і той же текст кожен день і перестає клікати. Міняй текст кожного разу, щоб підтримувати CTR.
Причини низької доставки
Delivery Rate низький (< 60%)
Причина | Що робити |
|---|---|
Застарілі FCM-токени | База «старіє» з часом — це нормально. FCM автоматично повертає FAIL для невалідних токенів |
Користувач видалив PWA | Підписка стає невалідною. Рішення: регулярно залучати нових підписників |
Користувач заблокував сповіщення | Токен видаляється з бази при |
FCM недоступний (рідко) | Повторна відправка не передбачена. Зазвичай відновлюється само |
FAIL vs SKIP — в чому різниця
Подія | Причина | Що означає |
|---|---|---|
| Помилка FCM | Токен невалідний, підписка застаріла. Технічна проблема |
| Таргетинг не співпав | Підписник не підходить під умови (вже задепозив, не зареєстрований тощо). Логічне рішення |
Якщо push_fail_rate > 40% — база сильно застаріла. Рішення:
Запускати нові кампанії для збору свіжих підписників
Фокусуватися на 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%) — що робити?
A/B тест заголовків — створи два пуші з різним текстом, порівняй CTR
Перевір час відправки — пуш о 3 годині ночі по часовому поясу користувача = низький CTR
Персоналізуй через макроси —
{offer.value}і{random}підвищують релевантністьДодай/зміни картинку — пуші з зображеннями зазвичай мають вищий CTR
Перевір сегментацію — пуш «для всіх» завжди менш релевантний, ніж цільовий
Q: Як відстежити, який саме пуш призвів до депозиту?
Відкрий Push Аналітику → Post-Click Attribution
Вибери метрики:
push_postclick_accepts,push_postclick_redepsGroup by:
event_push_id(абоevent_push_id_name)Побачиш, скільки FTD і редепозитів атрибутовано кожному пушу
В основній статистиці: додай метрики push_clicks і group by event_push_id — побачиш, скільки кліків отримав кожен пуш. Співвідношення кліків і конверсій = ефективність.
Q: Чи можна відправляти пуші користувачам, які встановили PWA, але не підписалися на сповіщення?
Ні. Пуші відправляються тільки підписникам (FCM-токен в базі). Встановлення PWA ≠ підписка на пуші:
PWA_INSTALL— PWA встановленоNOTIFICATION_SUBSCRIBE— користувач погодився на пуші (це окрема подія)NOTIFICATION_DECLINE— користувач відмовився
Зазвичай 40-70% встановивших PWA підписуються на пуші. Для підвищення підписок: оптимізуй дизайн запиту, показуй у правильний момент (не одразу при відкритті).
Q: Як працює відправка пушів по FCM умові vs по токенах?
Adset.Pro підтримує два режими:
Condition (масова): FCM умова виду
'team_X' in topics AND 'country_UA' in topics— відправляється одним запитом на всі підходящі пристрої. Швидко, масштабованоToken (індивідуальна): Відправка на конкретний FCM-токен — використовується для подійних пушів (EVENT), де потрібна персоналізація
