Ресёрч: дашборд рассылок — карточка кампании + воронка + deliverability (MLF-291, шаг 1)

Задача: MLF-291 — «Аналитика: дашборд рассылок — карточка кампании + воронка + deliverability». Это шаг 1 карточки (ресёрч); результат ложится в шаг 2 (макеты карточки кампании в Claude Design), затем — согласование с М. Терентьевым (без апрува в разработку НЕ берём).

Дата: 2026-07-21 Метод: deep-research harness (6 углов → 27 источников → 116 фактов → adversarial-верификация 25 ключевых: 23 подтверждено / 2 опровергнуто голосованием 2/3) + догрузка деталей из извлечений агентов по link-level кликам, RU-ESP и экспорту. Скоуп: канон отчёта по одной рассылке — набор метрик и формул карточки, воронка delivered→open→click→goal, link-level клики, deliverability по доменам-получателям, сравнение кампаний + экспорт, активность по времени. Выбор charts-библиотеки, оболочка дашборда и развилка «bounce в воронке» — вне этого ресёрча, они закрыты в MLF-289 (recharts v3, funnel до converted + bounce отдельной KPI).

Достоверность. Формулы метрик подтверждены по first-party docs вендоров (Mailchimp, Klaviyo, Braze, Customer.io, Twilio, Unisender, DashaMail) и прошли верификацию. Два claim-а опровергнуты (§9): точный знаменатель bounce/spam/unsub-rate (delivered vs recipients) и формулировка Mailchimp click rate «от получателей». Deliverability-heatmap и разбивка по провайдерам подтверждены только по Klaviyo (single-vendor) и на уровне account-level отчёта, не per-single-campaign — структуру переносим на одну рассылку по аналогии. Российскую специфику (yandex/mail.ru) закрывают DashaMail и Unisender (первичные vendor-страницы).


1. TL;DR — что берём в макет карточки кампании

  1. Знаменатель метрик — delivered, не sent; показываем проценты, не абсолюты. Устойчивый отраслевой канон (Mailchimp, Klaviyo, Customer.io — единогласно 3-0): open/click rate считаются от доставленных. sent → delivered — первая стадия воронки, разница = bounces. Абсолютные счётчики (sent/delivered/opens/clicks) показываем рядом с процентом, но KPI — процент.

  2. Две пары метрик, которые надо развести явно и подписать формулой:

    • unique vs total open/click: unique = один на получателя, total = включая повторы. Канон — unique как основная метрика, total как дополнительная.
    • Click Rate vs CTOR: Click Rate = clicked / delivered; CTOR (click-to-open) = clicked / opened. CTOR оценивает качество контента (убирает эффект темы письма).

    ⚠️ Терминология вендоров конфликтует. Klaviyo называет click-to-open словом «CTR», а Mailchimp/Braze/Customer.io/Unisender закрепляют «CTR» за clicked/delivered. → В макете рядом с каждой меткой печатать формулу, не полагаться на аббревиатуру (§12, каветы).

  3. Apple MPP ломает open rate — нужны «человеческие» метрики. MPP предзагружает трекинг-пиксель через прокси Apple → open фиксируется без реального прочтения (машинные открытия). У Omeda после MPP total open rate почти удвоился (22.6%→40.5%). Вендоры отвечают: Braze — Machine/Other opens + Estimated Real Opens; Customer.io — Human opened/clicked; Mailchimp — исключение bot-активности. → В макете: click-based метрики (CTR/CTOR) первичны, open показываем с пометкой о MPP (или «human/estimated open» рядом с raw). Это развилка на согласование (§11).

  4. Воронка стартует с delivered (не с sent): delivered → opened → clicked → goal, как процент прошедших каждую стадию. bounce — ветвь оттока (sent−delivered), а не узел воронки. Совпадает с решением MLF-289 (funnel до converted, bounce отдельной KPI).

  5. Link-level клики — это ДВЕ разные визуализации, не путать:

    • таблица «клики по ссылкам» (по URL) — сколько уникальных/всего кликов на каждую ссылку;
    • карта кликов (click map / heatmap) — наложение на письмо, по каким элементам (кнопка, картинка, заголовок) кликают чаще. Есть у DashaMail; у Klaviyo «activity map» — это гео-карта (мир, клики по регионам), не link-level. Под ТЗ MLF-291 нужна таблица по ссылкам (link-level); heatmap-по-элементам — опционально/будущее.
  6. Deliverability по доменам-получателям — канон Klaviyo: топ-N доменов/провайдеров по объёму, delivered/bounced на каждый, раздельные панели негативного (bounce/unsub/spam) и позитивного (open/click) вовлечения + heatmap «категория bounce × провайдер». Прямо ложится на gmail/yandex/mail.ru/outlook. DashaMail подтверждает канон разбивки по доменам для RU.


2. Метрики карточки кампании + формулы (подтверждено)

Сводка формул (знаменатель — delivered, если не указано иное):

Метрика Формула Знаменатель Источник
Delivery Rate delivered / sent sent Klaviyo, Customer.io
Bounce Rate bounces / sent (или delivered — см. §9) спорно Klaviyo (знам. не установлен)
Open Rate (unique) unique openers / delivered delivered Mailchimp, Klaviyo
Total Opens все открытия (вкл. повторы) — (абсолют) Klaviyo, Braze
Click Rate (unique) unique clickers / delivered delivered Mailchimp, Klaviyo, Unisender
CTOR (click-to-open) unique clicks / unique opens opened Twilio, Customer.io, Braze, DashaMail, Unisender
Unsubscribe Rate unsubs / (delivered или recipients — §9) спорно Klaviyo (знам. не установлен)
Spam Complaint Rate complaints / (delivered или recipients — §9) спорно Klaviyo (знам. не установлен)

Точные цитаты формул:

Источники: Mailchimp open/click rates · Mailchimp click-rate vs CTR · Klaviyo analytics glossary · Klaviyo metrics · Braze email reporting · Customer.io campaign metrics · Twilio CTOR · Unisender кликабельность.


3. Apple MPP и «человеческие» метрики (подтверждено, 3-0)

Источники: Litmus MPP · Postmark MPP · Omeda 6 months later · Mailchimp / Braze / Customer.io (выше).


4. Воронка delivered→open→click→goal (подтверждено)

Источники: Klaviyo funnel analysis · Customer.io campaign metrics.


5. Link-level клики: таблица по ссылкам vs карта кликов (подтверждено — DashaMail)

Две разные вещи, обе встречаются, но под ТЗ MLF-291 нужна таблица по ссылкам:

  1. Таблица «клики по ссылкам» (link-level, по URL) — по каждой ссылке в письме: уникальные / всего клики. DashaMail: «подробная статистика кликов по каждой ссылке». Это то, что просит карточка MLF-291 («таблица клики-по-ссылкам»).
  2. Карта кликов (click map / heatmap по элементам) — наложение на письмо: по каким элементам (кнопка, картинка, заголовок) кликают чаще. DashaMail: «карта кликов … в виде heatmap». Опционально для MVP.
  3. ⚠️ Коррекция: у Klaviyo «activity map» — это гео-карта мира (клики по регионам), НЕ link-level и не heatmap по элементам. Не путать: первичный поисковый сниппет вводил в заблуждение, fetch-проверка это опровергла.

Источники: DashaMail отчёты · DashaMail карта кликов · Klaviyo activity map (гео).


6. Deliverability-панель по доменам-получателям (подтверждено — Klaviyo, DashaMail)

Канон Klaviyo (Send Volume / Deliverability hub) — прямой образец под gmail/yandex/mail.ru/outlook:

Оговорка: отчёт Klaviyo по провайдерам — account-level, не per-single-campaign. Для карточки одной рассылки структуру переносим по аналогии (домены-получатели именно этой рассылки).

Источники: Klaviyo deliverability hub · DashaMail отчёты · Gmail Postmaster Tools · SendGrid deliverability guide.


7. Сравнение кампаний, экспорт CSV, фильтры, активность по времени (подтверждено)

Источники: Mailchimp comparative reports · Mailchimp download report · Klaviyo CSV export · Unisender аналитика · Unisender behaviour report.


8. Сводная таблица вендоров

Аспект Mailchimp Klaviyo Braze Customer.io Unisender / DashaMail (RU)
Знаменатель метрик delivered delivered/recipients delivered delivered/sent delivered
unique / total ✓ (явно) ✓ (7-дн окно)
CTR vs CTOR click rate + «clicks per unique opens» Click Rate + «CTR»=CTOR ⚠️ CTR + CTOR Click Rate + CTOR CTR/UCTR + CTOR
Воронка Received→…→Placed order delivered→converted (goal)
Link-level клики по ссылкам activity map = гео tracked links по ссылкам + heatmap элементов (DashaMail)
Deliverability по доменам топ-5 провайдеров + bounce heatmap Machine/Other opens Human opened/clicked по доменам (DashaMail)
MPP-ответ исключение bots Estimated Real Opens Human opened/clicked
Сравнение / экспорт Comparative (max 2 на граф) + CSV CSV 24 колонки динамика open/click over time

9. Опровергнуто ресёрчем (не тащить в макет как факт)

Голосование верификаторов (нужно 2/3 «refute»):

  1. «Mailchimp click rate = clicks / total recipients» (пример 25/1000 = 2.5%)опровергнуто (1-2). Mailchimp считает от delivered, не от всех получателей. Формулировка «от получателей» недостоверна.
  2. «Klaviyo делит bounce/spam/unsub rate на recipients (а не delivered)»опровергнуто (1-2). Точный знаменатель этих трёх метрик не установлен — проверить в docs при реализации (§10).

→ Вывод: печатать формулу рядом с меткой и не фиксировать знаменатель bounce/spam/unsub, пока не свёрен с docs эмпирически.


10. Открытые вопросы (эмпирика / бэкенд — перед реализацией)

  1. Знаменатель bounce / spam-complaint / unsubscribe rate — delivered или sent/recipients? (claim опровергнут, формула не установлена). Свериться с docs Klaviyo/Mailchimp и с нашими cdp.delivery_events при реализации.
  2. Наши категории bounce — сколько подтипов hard/soft мы реально различаем в delivery_events, и как они лягут на матрицу «категория × домен» (у Klaviyo 10 категорий; у нас, вероятно, меньше).
  3. Estimated/Human open — считаем ли мы «человеческие» открытия (фильтр MPP/prefetch) на бэкенде, или показываем raw open + дисклеймер? Влияет на трекинг MLF-290 (open/click-трекинг — блокер MLF-291).
  4. Окно конверсии для goal — есть ли у нас goal-событие и окно атрибуции (у Customer.io до 90 дней), или воронка MVP = delivered→open→click без goal.
  5. Домены-получатели — извлекаем ли мы домен из адреса на этапе delivery-события для группировки (gmail/yandex/mail.ru/outlook/прочие).

11. Вопросы на согласование с М. Терентьевым (перед макетами)

  1. Open rate и MPP: показывать raw open с пометкой о MPP, или пару «raw / human (estimated)» open? Делаем ли click-based (CTR/CTOR) первичным KPI над open?
  2. Стадии воронки в MVP: delivered→open→click (без goal, пока нет revenue-события) или сразу с goal-стадией и окном конверсии?
  3. Link-level: в MVP достаточно таблицы по ссылкам (уник/всего клики на URL), или сразу нужна карта кликов (heatmap по элементам письма, как DashaMail)?
  4. Deliverability-панель: плоские KPI bounce/complaint по доменам, или сразу heatmap «категория bounce × домен» (канон Klaviyo)?
  5. Набор метрик карточки: берём таксономию из CSV Klaviyo (24 поля) как базовый набор, или уже определённый в MLF-291 список (sent/delivered/delivery rate/unique open/CTR/CTOR/bounce hard-soft/ unsub/spam)?
  6. Сравнение кампаний: нужно ли в MVP (таблица + bar на 1-2 метрики, по образцу Mailchimp), или выносим во вторую итерацию?

12. Ограничения ресёрча

13. Источники

Формулы метрик (первичные): Mailchimp open/click rates · Mailchimp click-rate vs CTR · Klaviyo glossary · Klaviyo metrics · Braze email reporting · Customer.io campaign metrics · Twilio CTOR Воронка / клик-карта: Klaviyo funnel analysis · Klaviyo activity map (гео) Deliverability по доменам: Klaviyo deliverability hub · Gmail Postmaster Tools · SendGrid deliverability guide RU-ESP: DashaMail отчёты · DashaMail карта кликов · Unisender аналитика · Unisender кликабельность · Unisender behaviour report · Unisender aggregated reports Apple MPP: Litmus · Postmark · Omeda 6 months later · beehiiv Сравнение / экспорт: Mailchimp comparative reports · Mailchimp download report · Klaviyo CSV export · Klaviyo reporting


14. Что дальше (шаг 2 карточки)

На основе этого ресёрча собрать интерактивный макет карточки кампании на фундаменте MLF-289 (recharts v3, brand-токены, funnel-компонент): KPI-плитки (delivered/open/click/CTOR + bounce/unsub/complaint) со sparkline и пометкой MPP → воронка delivered→open→click→goal → таблица клики-по-ссылкам → deliverability-панель по доменам (+ опц. bounce-heatmap) → активность по времени → сравнение кампаний + экспорт CSV. Отправить М. Терентьеву на согласование (без апрува макетов в разработку не берём); открытые развилки — §11.