LTV та когорти: як читати та використовувати
Навіщо потрібен LTV-аналіз
LTV (Lifetime Value) — сумарний дохід від користувача за весь період його активності. У контексті gambling/betting це первинний депозит + повторні депозити (редепозити).
Чому LTV критично важливий для арбітражника:
Уяви: два джерела трафіку.
Джерело А: 100 FTD, LTV per FTD = $45 → сумарний дохід $4 500
Джерело Б: 80 FTD, LTV per FTD = $120 → сумарний дохід $9 600
Якщо дивитися тільки по FTD — Джерело А «краще» (100 проти 80). Але по реальному доходу Джерело Б приносить в 2 рази більше. Без LTV ти масштабуєш не те джерело.
Коли LTV важливіший за ROI на короткій дистанції:
При запуску нового GEO — перші дні ROI може бути від’ємним, але якщо LTV зростає — трафік якісний
При порівнянні двох оферів однієї партнерки — один дає багато FTD з низьким LTV, інший менше FTD, але «довгих» користувачів
При оцінці окупності трафіку через 30-90 днів — D0 показує тільки перший день, а основний прибуток приходить пізніше
Особливість для iGaming: У gambling/betting основний дохід приходить не від першого депозиту, а від редепозитів (CPA_REDEP). Користувач може задепозити $20, а за наступний місяць — ще $200. LTV D0 покаже тільки $20, а LTV D31-90 може показати $220.
Як влаштовані когорти
Когорта — група користувачів, об’єднаних по даті першої дії.
В Adset.Pro доступні два типи когорт (через різні group keys):
FTD-когорти (по даті першого депозиту)
Group Key | Опис |
|---|---|
| Когорта по дню FTD |
| Когорта по тижню FTD |
| Когорта по місяцю FTD |
| Кількість днів від FTD до останнього редепозита |
Коли використовувати: Аналіз монетизації платних користувачів. Ти відповідаєш на питання: «Скільки заробляю з користувача, який задепозив у січні?»
Reg-когорти (по даті реєстрації)
Group Key | Опис |
|---|---|
| Когорта по дню реєстрації (CPA_HOLD) |
| Когорта по тижню реєстрації |
| Когорта по місяцю реєстрації |
| Кількість днів від реєстрації до останньої дії |
Коли використовувати: Аналіз конверсії з реєстрації в депозит і поведінки всіх зареєстрованих (не тільки задепозивших). Відповідаєш на питання: «Який % зареєстрованих доходить до депозиту і скільки вони приносять?»
Практичний приклад різниці
Кейс 1: «Хочу знати, скільки заробляю з користувача, який задепозив у січні» → FTD-когорта (
cohort_month) +ltv_per_ftdКейс 2: «Хочу знати, скільки % зареєстрованих доходять до депозиту» → Reg-когорта (
reg_cohort_month) +reg_to_ftd_rateКейс 3: «Хочу бачити дохід з реєстрації, включаючи FTD і всі редепозити» → Reg-когорта +
ltv_per_reg
Вікна LTV (часові періоди)
FTD-based LTV
Кожен користувач відстежується на 4 часових горизонтах після першого депозиту (CPA_ACCEPT):
Метрика | Період | Що вимірює |
|---|---|---|
| День 0 (день FTD) | Первісний депозит + редепозити в той же день (CPA_ACCEPT + CPA_REDEP) |
| Дні 1–7 після FTD | Ранні редепозити (перший тиждень, тільки CPA_REDEP) |
| Дні 8–30 після FTD | Середньостроковий retention (2-4 тиждень, тільки CPA_REDEP) |
| Дні 31–90 після FTD | Довгостроковий retention (2-3 місяць, тільки CPA_REDEP) |
Підсумкові метрики:
ltv_total=ltv_d0 + ltv_d1_7 + ltv_d8_30 + ltv_d31_90ltv_per_ftd=ltv_total / cpa_accept(середній LTV на одного FTD)
Reg-based LTV
Аналогічна структура, але відлік від дати реєстрації (CPA_HOLD):
Метрика | Період | Що вимірює |
|---|---|---|
| День 0 (день реєстрації) | CPA_ACCEPT + CPA_REDEP в день реєстрації |
| Дні 1–7 після реєстрації | CPA_REDEP за перший тиждень |
| Дні 8–30 після реєстрації | CPA_REDEP за 2-4 тиждень |
| Дні 31–90 після реєстрації | CPA_REDEP за 2-3 місяць |
Підсумкові:
ltv_reg_total= сума всіх періодівltv_per_reg=ltv_reg_total / registrations(середній LTV на одну реєстрацію)
Важливі зауваження по вікнам
D0 — це не весь LTV, а тільки початок. Зазвичай D0 складає 30-50% від підсумкового LTV D0-D90
D31-90 має сенс дивитися тільки якщо з дати FTD пройшло 3+ місяці. Інакше вікно ще «не закрилося» і дані неповні
Неповне вікно: Якщо когорта створена 2 тижні тому, то
ltv_d8_30буде неповним (пройшло тільки 14 днів з 30), аltv_d31_90— порожнімКонвертація валют: Усі LTV-метрики автоматично конвертуються в USD через
event_fx_to_usd, якщо валюта постбека відрізняється
Lifetime Days (дні життя)
Lifetime Days (lifetime_days) — кількість днів від FTD до останньої активної дії (редепозита).
Формула: dateDiff('day', ftd_time, event_time) — ціле число днів.
Як читати розподіл lifetime days:
Значення | Що означає |
|---|---|
| Користувач задепозив і більше не повертався (FTD без редепозитів) |
| Короткострокова активність (повернувся 1-2 рази у перший тиждень) |
| Середній retention (активний 2-4 тижні) |
| Лояльний користувач (активний місяцями) |
Практичне застосування:
Якщо 70%+ когорт мають
lifetime_days = 0— значить редепозитів майже немає, проблема в якості трафіку або в оферіРозбивка по
lifetime_days+cpa_redep— показує теплову карту: в які дні користувачі вносять повторні депозитиПорівнюй
lifetime_daysміж кампаніями/джерелами — який дає «довгих» користувачів
Аналог для reg-когорт: lifetime_days_from_reg — дні від реєстрації (CPA_HOLD) до останньої дії.
Додаткові метрики
Метрика | Формула | Застосування |
|---|---|---|
|
| Який % FTD зробили хоча б один редепозит |
|
| Який % реєстрацій дійшов до депозиту |
|
| Співвідношення редепозитів до депозитів |
|
| Загальна кількість депозитів |
|
| Загальний дохід від усіх депозитів |
Як фільтрувати в LTV-аналізі
Доступні фільтри в LTV-звітах обмежені атрибуційними полями:
Фільтр | Що робить |
|---|---|
| Фільтр по кампанії |
| Фільтр по джерелу трафіку |
| Фільтр по оферу |
| Фільтр по CPA-мережі |
| Фільтр по країні користувача |
Чому немає фільтра по device/browser? LTV-аналіз працює з когортами користувачів через
events_ltvтаблицю. У одного користувача може бути кілька сесій з різних пристроїв. Фільтрація по device призвела б до дублікації і некоректних даних.
Як використовувати комбінацію фільтрів:
«Порівняти LTV двох оферів однієї партнерки» → filter:
cmp_cpa = X, breakdown:cmp_offer«LTV трафіку з України за останні 3 місяці» → filter:
user_country = UA, group:cohort_month«Якість трафіку по джерелах» → filter: немає, breakdown:
cmp_source, метрика:ltv_per_ftd
Розбивки (breakdowns)
В LTV-аналізі можна додати розбивку для порівняння когорт:
Розбивка (Group Key) | Застосування |
|---|---|
| Порівняти якість трафіку між кампаніями |
| Яке джерело дає більш «важких» користувачів |
| Порівняти два офери однієї партнерки по LTV |
| Порівняти різні партнерки по монетизації |
| LTV по GEO (зазвичай Tier-1 > Tier-3) |
| Період когорт — для відстеження трендів |
| Теплова карта активності по дням |
Типові кейси
«Який офер у 1win дає найкращий LTV по UA трафіку?»
Фільтр:
user_country = UA,cmp_cpa = 1winРозбивка:
cmp_offerМетрика:
ltv_per_ftd
«Як змінювалася якість трафіку по місяцях?»
Розбивка:
cohort_monthМетрики:
ltv_d0,ltv_d1_7,ltv_d8_30,cpa_accept
«Яке джерело дає користувачів з редепозитами?»
Розбивка:
cmp_sourceМетрика:
ftd_to_redep_rate
Рекомендації по налаштуванню запиту
Період даних ≥ 90 днів — щоб захопити повні LTV-вікна (D0, D1-7, D8-30, D31-90)
LTV-метрики працюють тільки з
events_ltvтаблицею — вона автоматично вибирається при використанні cohort-груп або LTV-метрикКогортні групи активують LTV-розрахунки —
cohort_day/cohort_week/cohort_monthтригерять JOIN зftd_timesCTEReg-когортні групи —
reg_cohort_day/reg_cohort_week/reg_cohort_monthтригерять JOIN зreg_timesCTE
Типові метрики та інтерпретація
Метрика | Добре значення | Погане значення | Що робити |
|---|---|---|---|
| Близько до середнього депозиту партнерки | Сильно нижче → сміттєві ліди або дрібні депозити | Перевірити маппінг статусів, якість офера |
| > 30-40% (активні редепи у перший тиждень) | < 10% → користувачі задепозили і пішли | Перевірити UX офера, бонусну програму партнерки |
| > 20-30% | < 10% → майже ніхто не редепозитить | Проблема в якості трафіку або в офері |
| > 30-40% (для gambling) | < 15% → реєстрації є, але не депозять | Проблема в онбордингу партнерки або бонусах |
| 5-15 днів (активна перша 1-2 тижні) | 0-1 день (deposited-and-gone) | Типово для Tier-3 GEO або фрода |
Часті питання
Q: Чому LTV в Adset.Pro не збігається з даними в кабінеті партнерки?
Причини розбіжностей:
Затримка постбеків — партнерка може відправляти редепозити з затримкою (від годин до днів)
Timezone — дата когорт визначається по timezone, вказаному в запиті. Різні timezone = різні дати
Дедуплікація — Adset.Pro відкидає дублікатні конверсії (якщо не включені
acceptDuplicates)Конвертація валют — Adset.Pro конвертує через
event_fx_to_usd, партнерка може показувати в іншій валюті
Q: Когорта створена тиждень тому — чому D8-30 порожній?
Це нормально. Вікно D8-30 означає «дні 8-30 після FTD». Якщо когорті тільки 7 днів, дані для D8-30 ще не надійшли. Почекай ще 3-4 тижні — дані почнуть з’являтися.
Q: Як порівняти LTV двох кампаній, які запускалися в різні місяці?
Проблема сезонності: січнева когорта могла бути більш активною через новорічні промо, а лютнева — менш. Рішення:
Використовуй
cohort_month+ltv_per_ftd— порівнюй метрики всередині когорт, а не абсолютні числаДивись
ftd_to_redep_rate— він менш чутливий до сезонностіПорівнюй LTV за однаковий період після FTD (наприклад, тільки D0+D1-7 для обох когорт)
Q: Навіщо потрібні reg-когорти, якщо є FTD-когорти?
FTD-когорта включає тільки користувачів, які задепозили. Reg-когорта включає всіх зареєстрованих і дозволяє побачити:
Конверсію reg → FTD (
reg_to_ftd_rate)LTV на реєстрацію (
ltv_per_reg) — враховує, що не всі реєстранти депозятьБільш повну картину воронки: скільки людей прийшло vs скільки реально принесло грошей
