# План трекінгу для нової фічі

> Перш ніж запустити нагадування про борги, сплануйте дані: питання, події та властивості, що на них відповідають, де кожну записують, визначення метрик і перевірки до запуску.

- Курс: [Продуктова аналітика: від даних до рішень](https://productovi.com/uk/courses/product-analytics.md)
- Модуль: Що саме ми вимірюємо?
- Урок 4/32, ~37 хв
- Джерело: https://productovi.com/uk/courses/product-analytics/tracking-plan

## Почати з питань

**Alex Tutor:** У продуктовій команді Halves готують нову функцію, і Maya хоче отримати від тебе план даних ще до запуску.

**Maya:** Нагадування про борги виходять за три тижні: Halves нагадує тим, хто винен гроші, а вони можуть відкрити нагадування й розрахуватися. Після запуску мені потрібні дві відповіді. Чи люди розраховуються швидше завдяки нагадуванням? І чи когось вони дратують?

**Sofia:** Тоді складімо список подій: нагадування надіслано, нагадування відкрито, розрахунок. Щось іще?

**Alex Tutor:** Зробімо крок назад. **План трекінгу (tracking plan)** будують від питань донизу: спершу питання, потім події та властивості, що на них відповідають, потім де кожну з них записують, потім визначення метрик і наостанок перевірка перед запуском. Подія, яка не потрібна жодному питанню, — просто шум.

![Хмаринка репліки вгорі розгалужується донизу на маленькі чеки та бирки, які закінчуються планшетом із галочками.](https://productovi.com/courses/product-analytics/inline/tracking-plan-illustration-2.webp)

*Спершу питання, потім події, що на них відповідають, а тоді перевірки.*

**Alex Tutor:** Два питання Maya розпадаються на чотири. Скільки нагадувань доходять до людей і скільки з них відкривають? Скільки боргів після нагадування закривають і як швидко? Чи це швидше, ніж без нагадування? І скільки людей вимикають нагадування?

**Maya:** Останнє мене турбує найбільше. Якщо нагадування зіпсує атмосферу у квартирі, я хочу знати про це в перший тиждень, а не на третій місяць.

> **Вправа:** Розстав кроки створення плану трекінгу для нагадувань про борги в правильному порядку.

## Події для кожного питання

**Alex Tutor:** Тепер події. Нагадування надсилає сервер, тож `reminder_sent` — **серверна подія (server-side event)**: її записують, навіть коли пуш так і не дійшов. Як і з регулярними рахунками, це не активність користувача. `reminder_opened` записує застосунок, коли людина натискає на нагадування.

**Alex Tutor:** Для «як швидко» потрібен зв'язок. Кожне нагадування отримує `reminder_id`, і його додають до `reminder_opened` і до `settle_up_recorded`, коли розрахунок почався з нагадування. Без цього зв'язку розрахунки після нагадування нічим не відрізняються від решти.

**Theo:** А роздратування? Кнопки «мене це дратує» ніхто не натискає.

**Alex Tutor:** Ні, але люди діють. Записуй `reminders_muted`, коли хтось вимикає нагадування, з властивістю `scope`: ця група чи всі групи. Вимкнення і люди, які перестали відкривати нагадування, — так роздратування виглядає в даних.

![Рука вимикає дзвіночок на телефоні, а сусіди по квартирі на задньому плані роздратовано дивляться у свої телефони.](https://productovi.com/courses/product-analytics/inline/tracking-plan-illustration-3.webp)

*Про роздратування ніхто не повідомляє, але вимкнення нагадувань — це дія, яку можна записати.*

> **Вправа:** Зістав кожне питання про нагадування з подією, яка на нього відповідає.

**Alex Tutor:** Коротка перевірка щодо серверної події, перш ніж іти далі. Theo вже питав, чи можуть нагадування підняти його графік активних користувачів.

> **Вправа:** **Правда чи ні:** користувач із подією `reminder_sent` цього тижня може рахуватися як щотижневий активний користувач, бо нагадування до нього дійшло.

## На події чи на користувачі?

**Sofia:** А куди записати «нагадування вимкнено»? На подію чи на користувача?

**Alex Tutor:** І туди, і туди. Вимкнення — подія: воно сталося в певну мить. А те, чи ввімкнені нагадування зараз, описує людину, тож це ще й **властивість користувача (user property)** `reminders_enabled`. Сума боргу і те, перше це нагадування чи друге, описують одне нагадування: це **властивості події (event property)** на `reminder_sent`.

**Alex Tutor:** Одне правило: додавай до кожної події все, за чим потім захочеш фільтрувати чи групувати. До подій минулого місяця властивість уже не додаси.

**Maya:** Тоді я в перший же день спитаю: чи другі нагадування вимикають частіше за перші?

> **Вправа:** Maya питає: «Чи другі нагадування про той самий борг вимикають частіше за перші?» У чернетці плану є `reminder_sent` (`reminder_id`, `recipient_user_id`, `group_id`) і `reminders_muted` (`scope`). Що треба додати, щоб їй відповісти? Обери всі правильні варіанти.

**Alex Tutor:** У Theo є власне уточнення: чи вимикають нагадування частіше, коли борг більший? Є два способи зберегти суму.

> **Вправа:** Де має зберігатися сума боргу, щоб Theo міг порівняти частку вимкнень для малих і великих боргів?

## Визначення до даних

**Alex Tutor:** Далі кожну метрику записуємо як визначення, як минулого уроку. Частка вимкнень: серед **унікальних користувачів (unique users)**, які отримали нагадування цього тижня, частка тих, хто вимкнув їх протягом 7 днів. Люди, а не події: хто перемкнув п'ять разів, однаково одна людина.

**Sofia:** А «швидше, ніж без нагадування»? Можна порівняти борги з нагадуванням і без.

**Alex Tutor:** Обережно: нагадування йдуть до боргів, які вже прострочені, тож групи різні від самого початку. Чесне порівняння потребує **holdout-групи (holdout group)**: випадкової частки боргів, які мали б отримати нагадування, але не отримують. Заплануй її вже зараз, із подією `reminder_held_back`.

![Один reminder_id на подіях надсилання, відкриття й розрахунку вимірює час до розрахунку; holdout-група дає чесне порівняння, а вимкнення показують роздратування.](https://productovi.com/courses/product-analytics/diagrams/m1-l4-reminder-events-uk.png)

**Alex Tutor:** Тепер перевір визначення частки вимкнень на вигаданому першому тижні, ще до реальних даних.

> **Вправа:** Тестовий тиждень: 240 унікальних користувачів отримали хоча б одне нагадування. Протягом 7 днів 15 із них вимкнули нагадування, разом записавши 27 подій `reminders_muted` (дехто перемикав кілька разів). Ще двоє людей, які того тижня нагадувань не отримували, вимкнули їх у налаштуваннях. Halves визначає частку вимкнень так: серед унікальних користувачів, які отримали нагадування цього тижня, частка тих, хто вимкнув нагадування протягом 7 днів. Яка частка вимкнень, у %?

## Перевірити до запуску

**Alex Tutor:** Останній крок: перевірка (QA). На тестовому акаунті виклич кожну подію й подивися на сирі рядки. Чи вона спрацьовує один раз, а не двічі при повторній спробі? Чи заповнені властивості, чи немає порожнього `reminder_id`?

**Alex Tutor:** Ще дві. Тестові акаунти мають бути позначені як **внутрішній трафік (internal traffic)**, інакше натискання під час QA стануть «відкриттями». А час записується в UTC, тож зберігай `timezone` користувача, щоб бачити, о котрій нагадування прийшло за місцевим часом.

**Theo:** Це важливо. Якщо нагадування приходитимуть о третій ночі в Бангкоку, вимкнень побільшає, і ми звинуватимо текст.

**Sofia:** Тобто QA перевіряє дані, а не лише те, чи працює фіча.

![Людина з лупою перевіряє стрічку чеків, що виходить із тестового телефона, і позначає один дублікат.](https://productovi.com/courses/product-analytics/inline/tracking-plan-illustration-4.webp)

*Перед запуском QA перевіряє самі рядки, а не лише фічу.*

> **Вправа:** У чернетці плану від розробника для нагадувань одна подія, `reminder_shown`, яку записує застосунок, коли нагадування з'являється на телефоні. Частку відкриттів рахують як `reminder_opened` / `reminder_shown`. У чому головна вада?

**Alex Tutor:** Ось реальна знахідка з учорашньої перевірки на тестовому акаунті. Що ти з нею зробиш?

> **Вправа:** Під час перевірки одне нагадування дало два рядки `reminder_sent` з тим самим `reminder_id` з різницею у дві секунди: сервер повторив спробу після тайм-ауту. Яка правильна реакція до запуску?

**Maya:** З перевіркою ясно. Тепер запиши мені визначення, яке для мене найважливіше: час до розрахунку.

> **Вправа:** Запиши визначення метрики **час до розрахунку після нагадування** у 2–4 реченнях. Вкажи, з якої події вона починається і якою закінчується, кого виключено, що буває з нагадуваннями, після яких так і не розрахувалися, і яке число звітують.

## Твоя черга: бюджети поїздок

**Maya:** Наступного кварталу додаємо бюджети поїздок. Мені потрібен такий самий план і для них, ще до того, як хтось напише код.

**Alex Tutor:** Тоді пройди ті самі п'ять кроків: питання, події й властивості з джерелом, одне записане визначення і перевірки перед запуском.

**Sofia:** Починаючи з питань Maya, а не з екранів.

**Alex Tutor:** Саме так. Екрани змінюються, а дані збирають саме заради питань.

> **Вправа:** Напиши короткий план трекінгу для бюджетів поїздок у Halves.

> **Головне**
>
> - **План трекінгу** йде від питань донизу: питання → події та властивості → де кожну записують → визначення метрик → перевірка до запуску.
> - Те, що робить сервер, записуй на сервері (`reminder_sent`), а те, що робить людина, — у застосунку (`reminder_opened`). Серверні події — не активність користувача.
> - Пов'язуй події ідентифікаторами (`reminder_id` на відкритті й розрахунку), інакше не зрозуміти, що спричинила фіча.
> - Властивості події описують одну мить, властивості користувача — людину. Додавай всі властивості для фільтрів одразу: старим подіям їх потім не додаси.
> - Роздратування видно з поведінки: вимкнення і люди, які перестали відкривати.
> - Чесне «швидше, ніж без» потребує holdout-групи, закладеної до запуску.
> - QA перевіряє дані: подія спрацьовує раз, властивості заповнені, внутрішні акаунти позначені, часовий пояс збережено.

**Alex Tutor:** Це й весь модуль: коли події надійні, визначення записані, а план складено до запуску, у кожного наступного числа є шанс бути правильним.

- Попередній урок: [Визначення метрики: одне правило, одне число](https://productovi.com/uk/courses/product-analytics/metric-definitions.md)
- Наступний урок: [North star метрика і дерево метрик](https://productovi.com/uk/courses/product-analytics/north-star.md)

---
Productovi Learning. Безкоштовно, читати можна без реєстрації.
