Doppy · PostHog A/B Experiment · Feature Flag

ANDROID_POST_REGISTRATION_DEEPLINK

Период: 19 июня – 6 июля 2026 (18 дней) Снапшот: 07.07.2026 Сплит: 50 / 50 Статус: LIVE · DRAFT — флаг активен, тест идёт, эксперимент в PostHog не запущен официально Метод: PostHog events + transactions + Firebase (ClickHouse), атрибуция по арм-мапу
Пользователей control
6 560
balance экран
Пользователей test
6 503
wallet/streak экран
Покупки · CR
−0.66 пп
6.88% → 6.23% (z=1.2, н/з)
ARPPU (выручка / покупатель)
−12.5%
$7.85 → $6.87
WhyBuyGlasses slides / юзер
+116%
21.1 → 45.7
Publish_Tap / юзер
+12.4%
8 071 → 8 990 событий
Control
deeplink → "balance"
После регистрации — экран баланса кошелька
Юзеров6 560
Событий4 242 342
Событий / юзер646.7
Test
deeplink → "wallet/streak"
После регистрации — экран streak-трекера
Юзеров6 503
Событий4 328 505
Событий / юзер665.6
Вовлечённость
общие показатели активности
Метрика Control Test Δ
Событий / юзер 646.7 665.6 +2.9%
Сессий / юзерSession_Start 16.21 16.82 +3.8%
Feed открытий / юзерFeed_Open 24.98 26.11 +4.5%
Media_View / юзер 188.8 187.7 −0.6%
Earn_Tap / юзер 5.90 5.79 −2.0%
Создание контента
видеозапись и публикация
Метрика Control Test Δ событий Δ / юзер
VideoCapture_Appear 39 281 42 953 +3 672 +10.3%
Publish_Appear 8 211 9 125 +914 +12.1%
Publish_Tap 8 071 8 990 +919 +12.4%
Create_Tap 10 158 11 185 +1 027 +11.1%
Воронка WhyBuyGlasses
ключевой сигнал теста
+116%
Одинаковое число юзеров, в 2.2× больше слайдов
До экрана WhyBuyGlasses доходит практически одинаковое число уникальных пользователей в обеих группах (1 492 vs 1 414). Но тестовая группа просматривает 45.7 слайда в среднем против 21.1 в контроле. Эффект устойчиво держится всё время теста: streak-контекст делает оффер очков более релевантным — пользователи глубже изучают ценностное предложение, но в покупки это по-прежнему не конвертирует.
Событие Control (события) Control (юзеры) Test (события) Test (юзеры) Δ событий
WhyBuyGlasses_Appear 2 863 1 492 2 933 1 414 +2.4%
WhyBuyGlasses_SlideView 31 058 1 470 64 078 1 401 +106%
WhyBuyGlasses_Swipe 28 259 1 314 61 219 1 274 +117%
Slides / engaged user 21.1 45.7 +116%
WhyBuyGlasses_Close_Tap 1 410 956 1 491 949 +5.7%
Монетизация (Market & Offer)
воронка покупки бустов · % — доля от дошедших до маркета (Market_Appear uniq)
Событие Control (события) Control (юзеры) Test (события) Test (юзеры) Δ юзеров
Market_Appear 20 599 4 271 19 575 4 256 −0.4% юзеров
MyProfile_Boost_Appear 16 710 2 048 18 175 1 978 −3.4% юзеров
Market_Checkout_Appear 3 668 1 608 (37.7%) 3 853 1 657 (38.9%) +3.0% юзеров
Market_Checkout_Buy_Tapобщее число нажатий «купить» 1 558 868 (20.3%) 1 356 868 (20.4%) 0.0% юзеров
Offer_Glasses_Appear 3 390 1 553 3 204 1 530 −1.5% юзеров
Offer_Glasses_Buy_Tap 2 211 1 151 2 145 1 172 +1.8% юзеров
Streak активность
геймификация серий
Событие Control (события) Control (юзеры) Test (события) Test (юзеры) Δ / юзер
LongStreak_Banner_Tap 6 006 1 724 5 831 1 698 −2.1%
LongStreak_Watch_Tap 3 110 1 007 3 155 1 067 +2.3%
ShortStreak_Widget_Tap 4 117 1 922 4 335 1 913 +6.2%
Onboarding_StreakWarning_Appear 2 193 1 126 2 259 1 149 +3.9%
Onboarding_Congratulations_Appear 2 912 2 809 2 780 2 678 −3.7%
Retention D1 / D3 / D7 / D14
когорта 19 июня (1 064 vs 1 112 юзеров) — Firebase user_pseudo_id → backend uid, strict day-N + rolling (R20), любое событие = активность
+1.9 pp
Небольшой плюс теста на strict — но rolling его не подтверждает, значимости нет
Когорта 19 июня: 1 064 control и 1 112 test. По strict day-N тест выше на всех горизонтах — D1 +1.9 пп (z=0.88), D3 +0.5 пп, D7 +0.2 пп (z=0.10), D14 +1.0 пп (z=0.52) — но ни одна дельта не значима. По rolling («вернулся хотя бы раз к дню N») разница исчезает: D7 control даже чуть выше (81.9% vs 81.1%), D14 обе ≈88%. Значимого эффекта на удержание тест не даёт. Firebase-экспорт полон по 06.07 — для когорты 19 июня зрелы все окна, включая D14 (03.07).
День Control (1 064 юзеров) Control % Test (1 112 юзеров) Test % Δ (п.п.) Δ (относит.)
D0 (19 июн) 1 064 100% 1 112 100%
D1 (20 июн) 606 57.0% 654 58.8% +1.9 pp · н/з +3.3%
D3 (22 июн) 497 46.7% 525 47.2% +0.5 pp · н/з +1.1%
D7 (26 июн) 391 36.7% 411 37.0% +0.2 pp · н/з +0.6%
D14 (3 июл) 303 28.5% 328 29.5% +1.0 pp · н/з +3.6%
Rolling retention (вернулся хотя бы раз к дню N) · R20
та же когорта, один знаменатель; активен ≥1 раз в интервале [D1 … DN]
День Control % Test % Δ (п.п.)
roll D1 57.0% 58.8% +1.9 pp
roll D3 72.7% 72.9% +0.3 pp
roll D7 81.9% 81.1% −0.7 pp
roll D14 88.0% 88.1% +0.2 pp
Реальные покупки (transactions · R16-якорь)
DoppyEvents.transactions · Jun 19 – Jul 6 · transaction_type=marketplace_purchase_buyer, purchase_type=external, fiat_asset≠'' · дедуп LIMIT 1 BY transaction_id · is_fraud НЕ фильтруется (R5/B7 — в transactions его нет) · арм по арм-мапу → backend uid · CR/ARPU от дошедших до маркета (Market_Appear uniq): 4 271 / 4 256
−12.5%
Контроль ведёт по деньгам — выше и покупатели, и ARPPU
Снапшот 07.07, transactions-якорь (R16), без фрод-фильтра (R5). Control: 294 покупателя, $2 309 выручки. Test: 265 покупателей, $1 822. Покупателей у теста меньше (−9.9%). CR от дошедших до маркета 6.88% vs 6.23% (−0.66 п.п., z=1.23, p≈0.22 — незначимо, но контроль устойчиво ведёт). ARPPU $7.85 vs $6.87 (−12.5%), ARPU/дошедшего $0.541 vs $0.428. Армы geo-сбалансированы (NG/PK/ES/IT/US почти поровну) — разрыв ARPPU не страновой артефакт. 20 покупателей без арма ($118) вынесены в unattributed и в разрез не входят.
Метрика Control (4 271 дошли до маркета) Test (4 256 дошли до маркета) Δ
Уникальных покупателейпервичные + вернувшиеся 294 265 −9.9%
— первичных (первая покупка в жизни) 283 253 −10.6%
— вернувшихся (покупали раньше) 11 12 +1
CR покупки (покупатели / дошли до маркета) 6.88% 6.23% −0.66 pp · z=1.23 · p≈0.22
Выручка (fiat, USD-экв.) $2 309.20 $1 821.64 −21.1%
ARPPU (выручка / покупатель)основная денежная метрика $7.85 $6.87 −12.5%
ARPU (выручка / дошедшего до маркета) $0.541 $0.428 −20.8%
Покупок всего, штпервичные + повторные 304 272 −10.5%
— повторных покупок, шт 21 19 −9.5%
Разбивка по категории продукта
Категория Control — кол-во Control — выручка Test — кол-во Test — выручка
regularglasses / буст (is_glasses_purchase=1) 291 $2 279.63 257 $1 796.39
specialidentity_approve + video_promotion 13 $29.57 15 $25.25
GEO-разрез: страновой микс арма (проверка конфаунда ARPPU)
уник. юзеров арма по $geoip_country_code (PostHog) — топ-6
Страна Control (юзеров) Test (юзеров)
🇳🇬 Nigeria963962
🇵🇰 Pakistan805769
🇪🇸 Spain796851
🇮🇹 Italy633552
🇺🇸 USA532544
🇫🇷 France453432
Микс стран между армами сбалансирован (рандомизация сработала): топ-страны почти совпадают. Значит разрыв ARPPU (−12.5%) — не артефакт странового состава, а реальная разница в монетизации.
DAU по дням
уникальные пользователи с Session_Start в каждой группе (клиентский сигнал; серверные батчи не учитываются)
Control (balance) Test (wallet/streak)

Выводы

01
Retention: strict-плюс есть, rolling его не подтверждает. По strict day-N (Firebase user_pseudo_id → backend uid, когорта 19 июня) тест выше на всех горизонтах: D1 +1.9 пп (57.0% vs 58.8%, z=0.88), D3 +0.5 пп, D7 +0.2 пп (z=0.10), D14 +1.0 пп (z=0.52) — но ни одна дельта не значима. По rolling («вернулся хотя бы раз к дню N», R20) разница исчезает: D7 control даже чуть выше (81.9% vs 81.1%), D14 обе ≈88%. Значимого эффекта на удержание нет.
02
Реальные покупки: контроль впереди по деньгам. 294 покупателя vs 265 (−9.9%), CR от дошедших до маркета 6.88% vs 6.23% (Δ−0.66 п.п., z=1.23, p≈0.22 — незначимо, контроль ведёт). Выручка $2 309 vs $1 822 (−21%), ARPPU $7.85 vs $6.87 (−12.5%), ARPU/дошедшего $0.541 vs $0.428. Первичных покупателей 283 vs 253, повторных покупок 21 vs 19. Якорь — DoppyEvents.transactions (R16), дедуп LIMIT 1 BY transaction_id, is_fraud не фильтруется (R5/B7). Армы geo-сбалансированы — разрыв не страновой.
03
WhyBuyGlasses: одинаковый охват, ×2.2 глубина просмотра. До экрана доходит близкое число юзеров (1 492 vs 1 414). Но тест просматривает 45.7 слайда vs 21.1 в control (+116%) — эффект стабилен всё время теста. Streak-контекст делает оффер релевантным, но в покупки это по-прежнему не конвертирует.
04
Создание контента: тест стабильно сильнее. Publish_Tap +12.4%/юзер, VideoCapture_Appear +10.3%, Create_Tap +11.1%. Streak-механика мотивирует снимать видео. Если приоритет — UGC-supply и creator pipeline, тест лучше.
05
Итоговый trade-off: деньги против supply. Тест → больше контента (+12% публикаций/юзер), выше вовлечённость (сессии +3.8%, feed +4.5%), глубже изучает оффер, чуть выше strict-retention (незначимо). Контроль → деньги: ARPPU +14%, больше покупателей, выше CR (Δ+0.66 п.п. в пользу контроля, незначимо). Если решать по выручке — контроль; если по UGC-supply — тест.
06
Осторожно с интерпретацией. Флаг применён ко ВСЕМ пользователям (не только новые регистрации), когорта retention — существующие активные юзеры. Армы: 6 560 control / 6 503 test (assigned = активны в окне). События атрибутированы джойном по арм-мапу (арм — свойство юзера), БЕЗ требования флага на каждом событии: иначе Session_Start и ранние события сессии занижаются почти вдвое (63k vs 106k). DAU по Session_Start, чтобы серверные батчи не искажали кривую.
Источники данных (снапшот 07.07.2026, окно Jun 19 – Jul 6): PostHog events → DoppyEvents.posthog_events_message. Арм-мап = argMax($feature/ANDROID_POST_REGISTRATION_DEEPLINK по timestamp), identity = distinct_id 24-hex = backend uid, 13 063 юзера (6 560 / 6 503); события/воронки атрибутированы джойном по арм-мапу без флаг-фильтра. Retention → DoppyEvents.firebase_doppy_raw (user_id → backend uid = splitByString(':',user_id)[1], любое событие = активность, когорта Jun 19, strict day-N + rolling R20; экспорт полон по Jul 6 — зрелы D1/D3/D7 и D14). Покупки → DoppyEvents.transactions (R16-якорь: transaction_type=marketplace_purchase_buyer, purchase_type=external, fiat_asset≠'', дедуп LIMIT 1 BY transaction_id; is_fraud НЕ фильтруется per R5/B7 — в transactions его нет; знаменатель CR — Market_Appear reachers 4 271 / 4 256; 20 покупателей unattributed, $118). GEO из $geoip_country_code. Официальный эксперимент в PostHog — статус Draft (start_date = null), флаг активен, тест продолжается. CH-запросы через HTTP-интерфейс (curl) с прокинутым арм-мапом как external table.