Выводы
01
Retention: небольшой плюс теста, значимости нет. По strict day-N (Firebase user_id → backend uid, когорта 19 июня, 1 115 vs 1 140) тест выше на всех горизонтах: D1 +3.1 пп (54.7% vs 57.8%, z=1.48), D3 +0.3 пп, D7 +0.9 пп (z=0.44), D14 +1.7 пп (z=0.89) — но ни одна дельта не значима. По rolling («вернулся хотя бы раз к дню N», R20) дельты малы: rD3 +1.1 пп, rD7 +0.2 пп, rD14 +1.1 пп. Значимого эффекта на удержание нет.
02
Реальные покупки: контроль впереди по деньгам, стабильно и незначимо. 420 покупателей vs 377 (−10.2%), CR от дошедших до маркета 6.90% vs 6.20% (Δ−0.70 п.п., z=1.56, p≈0.12 — незначимо). Выручка $3 558 vs $2 950 (−17.1%), ARPPU $8.47 vs $7.82 (−7.6%), ARPU/дошедшего $0.585 vs $0.485. Первичных покупателей 407 vs 364, повторных покупок 17 vs 14. Якорь — DoppyEvents.transactions (R16), дедуп LIMIT 1 BY transaction_id, is_fraud не фильтруется (R5/B7). Армы geo-сбалансированы — разрыв не страновой. День 16.07 исключён из окна — сбой раскатки флага (control 3 149 vs test 1 490 назначенных за день).
03
WhyBuyGlasses: одинаковый охват, ×1.9 глубина просмотра. До экрана доходит близкое число юзеров (2 142 vs 2 077). Но тест просматривает 41.2 слайда vs 22.2 в control (+85%) — эффект стабилен всё время теста. Streak-контекст делает оффер релевантным, но в покупки это по-прежнему не конвертирует.
04
Создание контента: тест стабильно сильнее, лид расширился. Publish_Tap +12.6%/юзер, VideoCapture_Appear +10.1%, Create_Tap +9.7%. Streak-механика мотивирует снимать видео. Если приоритет — UGC-supply и creator pipeline, тест лучше.
05
Итоговый trade-off: деньги против supply. Тест → больше контента (+12% публикаций/юзер), глубже изучает оффер (WBG ×1.9), чуть выше strict-retention (незначимо); вовлечённость на уровне или чуть выше контроля (события +3.1%, сессии +2.7%, feed +3.1%, media +0.2%). Контроль → деньги: ARPPU на 8.3% выше, больше покупателей, выше CR (Δ+0.70 п.п. в пользу контроля, незначимо). Если решать по выручке — контроль; если по UGC-supply — тест.
06
Осторожно с интерпретацией. Флаг применён ко ВСЕМ пользователям (не только новые регистрации), когорта retention — существующие активные юзеры. Армы: 9 007 control / 8 934 test (assigned = активны в окне). События атрибутированы джойном по арм-мапу (арм — свойство юзера), БЕЗ требования флага на каждом событии: иначе Session_Start и ранние события сессии занижаются почти вдвое. DAU по Session_Start, чтобы серверные батчи не искажали кривую. С 10.07 идёт приток трафика (DAU выросло с ~1 000 до ~1 400 на арм) — свежие дни весят больше в оконных метриках. 16.07 исключён из окна: за день назначено 3 149 control vs 1 490 test (при обычном балансе 13–15.07) — сбой раскатки флага; включение раздуло бы control-арм низкотенюрными юзерами и исказило CR/ARPPU. Эскалировать дата/эксперимент-команде.
Источники данных (снапшот 17.07.2026, окно Jun 19 – Jul 15, арм-мап с 18.06; 16.07 исключён — сбой раскатки флага): PostHog events → DoppyEvents.posthog_events_message. Арм-мап = argMax($feature/ANDROID_POST_REGISTRATION_DEEPLINK по event_date), identity = distinct_id 24-hex = backend uid, 17 941 юзеров (9 007 / 8 934); события/воронки атрибутированы джойном по арм-мапу без флаг-фильтра. Retention → DoppyEvents.firebase_doppy_raw (user_id → backend uid = splitByString(':',user_id)[1], любое событие = активность, когорта Jun 19, strict day-N + rolling R20; экспорт полон по Jul 16 — зрелы 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 6 083 / 6 077; 18 покупателей unattributed, $108). GEO из $geoip_country_code — модальная страна по Session_Start (серверные события ресолвятся в DE). Эксперимент зарегистрирован в PostHog 06.07 («STREAK / Wallet after reg»), флаг активен, тест продолжается. CH-запросы через HTTP-интерфейс (curl) с прокинутым арм-мапом как external table.