К списку метрик
PRODUCT

Weekly Active Users (WAU)

Weekly Active Users

Количество уникальных пользователей с хотя бы одним активным действием за неделю.

ФОРМУЛА

$$\text{WAU}_t = |{user_i : \exists,event(user_i) \in [t-7d, t]}|$$

ОПИСАНИЕ

Что измеряет: базовый показатель аудитории продукта на недельном горизонте. Меньше шумит чем DAU (не зависит от выходных), но реактивнее MAU.

Когда использовать:

  • Продукты с еженедельным циклом использования (банковские, B2B-инструменты)
  • Reports менеджменту — WAU читается за 1 секунду в дашборде
  • Базовая метрика для расчёта stickiness (WAU/MAU)

Бенчмарки:

  • Каспи, Halyk Bank — WAU/MAU обычно ~50-65%
  • Glovo, Yandex Eats — 40-55% (использование реже)
  • B2B SaaS типа Slack — 80%+ (ежедневное использование)

Частые ошибки:

  1. Использовать WAU для daily-продуктов (например соцсеть) — теряешь сигнал ежедневной активности
  2. Считать WAU без uniq — попадают повторы, метрика становится бессмысленной
  3. Привязка к календарной неделе (пн-вс) vs rolling 7-day — оба валидно но не смешивать в одном отчёте
SQL ПРИМЕР
-- Calendar week WAU
SELECT date_trunc('week', event_time) AS week,
       COUNT(DISTINCT user_id) AS wau
FROM events
WHERE event_time >= '2026-01-01'
GROUP BY 1
ORDER BY 1;

-- Rolling 7-day WAU
SELECT day,
       (SELECT COUNT(DISTINCT user_id) FROM events
        WHERE event_time BETWEEN day - INTERVAL '6 days' AND day) AS wau_7d
FROM generate_series('2026-05-01'::date, '2026-05-31'::date, '1 day') AS day;
PYTHON ПРИМЕР
import pandas as pd

df["week"] = df["event_time"].dt.to_period("W")
wau = df.groupby("week")["user_id"].nunique()

# Rolling 7-day WAU
df_daily = df.groupby(df["event_time"].dt.date)["user_id"].nunique()
wau_rolling = (df.assign(date=df["event_time"].dt.date)
                  .groupby("date")["user_id"].apply(set)
                  .rolling(7).apply(lambda window: len(set.union(*window))))
СВЯЗАННЫЕ МЕТРИКИ