Ресёрч: дашборд рассылок — карточка кампании + воронка + 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 — что берём в макет карточки кампании
Знаменатель метрик — delivered, не sent; показываем проценты, не абсолюты. Устойчивый
отраслевой канон (Mailchimp, Klaviyo, Customer.io — единогласно 3-0): open/click rate считаются
от доставленных. sent → delivered — первая стадия воронки, разница = bounces. Абсолютные
счётчики (sent/delivered/opens/clicks) показываем рядом с процентом, но KPI — процент.
Две пары метрик, которые надо развести явно и подписать формулой:
- 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, каветы).
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).
Воронка стартует с delivered (не с sent): delivered → opened → clicked → goal, как процент
прошедших каждую стадию. bounce — ветвь оттока (sent−delivered), а не узел воронки. Совпадает с
решением MLF-289 (funnel до converted, bounce отдельной KPI).
Link-level клики — это ДВЕ разные визуализации, не путать:
- таблица «клики по ссылкам» (по URL) — сколько уникальных/всего кликов на каждую ссылку;
- карта кликов (click map / heatmap) — наложение на письмо, по каким элементам (кнопка,
картинка, заголовок) кликают чаще. Есть у DashaMail; у Klaviyo «activity map» — это гео-карта
(мир, клики по регионам), не link-level. Под ТЗ MLF-291 нужна таблица по ссылкам (link-level);
heatmap-по-элементам — опционально/будущее.
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 (знам. не установлен) |
Точные цитаты формул:
- Delivery Rate = delivered / sent. Klaviyo: Sent = «confirmed sends (both successful deliveries
and bounces)». Customer.io: delivered = «messages that verifiably reached a person», sent = «left
Customer.io, but we may not have information from the delivery provider to verify».
- Open Rate. Mailchimp: «how many successfully delivered emails were opened». Klaviyo: «number of
individuals opening your email divided by the number of total recipients» (recipients = delivered).
- CTOR = (unique clicks / unique opens) × 100. Twilio: «(Unique Clicks ÷ Unique Opens) × 100 …
100 clicks and 150 opens → CTOR 66%». Customer.io: «dividing Clicked metrics by Opened metrics».
DashaMail: «отношение количества уникальных кликов к уникальным открытиям». Unisender: «CTOR =
Клики / Открытия × 100%».
- unique vs total. Klaviyo: Unique = «one open per recipient, over all time»; Total = «all opens
… can be more than one per recipient». Braze: unique = «delivered messages opened by a single user
at least once» (окно трекинга 7 дней).
- Unisender (RU-канон): CTR = клики / доставленные × 100%; UCTR = уникальные клики / доставленные;
CTOR = клики / открытия × 100%.
Источники: 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)
- Механика: Apple кэширует письмо на своём прокси и скачивает все изображения, включая
open-пиксель, до реального прочтения → ложное открытие (Postmark, Litmus, beehiiv — согласованно).
- Масштаб искажения: Omeda на ~80 000 рассылок / ~2 млрд писем — total open rate 22.6%→40.5%,
unique open rate 15.2%→29.0% после MPP.
- Ответ вендоров:
- Braze — делит на Machine Opens (MPP) и Other Opens, считает Estimated Real Opens
проприетарной моделью с опорой на клики.
- Customer.io — Human opened (надёжно с 20.03.2025) и Human clicked (с 20.04.2025):
исключают MPP, сканеры безопасности, Gmail image prefetch.
- Mailchimp — рекомендует исключать bot-активность, но open rate сохраняет (комбинирует с
кликами).
- Вывод для макета: click-based (CTR/CTOR) — первичные индикаторы качества; open показывать с
дисклеймером о MPP или парой raw/human. Полностью от open rate отрасль не отказывается.
Источники: Litmus MPP ·
Postmark MPP ·
Omeda 6 months later ·
Mailchimp / Braze / Customer.io (выше).
4. Воронка delivered→open→click→goal (подтверждено)
- Как показывают: процент пользователей, прошедших каждую стадию и перешедших к следующей.
Klaviyo funnel (пример): Received → Opened → Clicked → Added to cart → Placed order; «what
percentage of total users successfully complete each step and move on».
- Conversion / goal: финальная стадия при достижении цели в окне конверсии. Customer.io: «marked
as converted when a person achieves your campaign's goal within the conversion criteria window»
(окно до 90 дней).
- bounce — ветвь оттока, не стадия: воронка стартует с
delivered (= sent − bounces). Согласуется
с решением MLF-289: классический funnel до converted + bounce/complaint
отдельными KPI.
- Оговорка: стадии Klaviyo (Added to cart / Placed order) — конфигурируемый e-commerce-пример
(голос 2-1), не жёсткая модель. Наш
goal — абстрактная целевая стадия (пока нет revenue-события
можно ограничиться delivered→open→click, §11).
Источники: Klaviyo funnel analysis ·
Customer.io campaign metrics.
5. Link-level клики: таблица по ссылкам vs карта кликов (подтверждено — DashaMail)
Две разные вещи, обе встречаются, но под ТЗ MLF-291 нужна таблица по ссылкам:
- Таблица «клики по ссылкам» (link-level, по URL) — по каждой ссылке в письме: уникальные /
всего клики. DashaMail: «подробная статистика кликов по каждой ссылке». Это то, что просит карточка
MLF-291 («таблица клики-по-ссылкам»).
- Карта кликов (click map / heatmap по элементам) — наложение на письмо: по каким элементам
(кнопка, картинка, заголовок) кликают чаще. DashaMail: «карта кликов … в виде heatmap». Опционально
для MVP.
- ⚠️ Коррекция: у 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:
- Разбивка по провайдерам: «breakdown of delivered and bounced emails across the 5 email domains
or inbox providers with the highest send volume» — топ-N доменов, delivered/bounced на каждый.
- Раздельные панели: негативное вовлечение (bounce rate, unsubscribe rate, spam complaint rate) и
позитивное (open rate, click rate) по топ-провайдерам.
- Bounce heatmap: «heatmap: all 10 bounce categories × the 5 inbox providers … each box shows the
count of bounces». → в макете: матрица «категория bounce (hard/soft-подтипы) × домен» вместо
плоского hard/soft.
- DashaMail (RU): статистика рассылки «по доменам» (+ устройства, гео, время) — подтверждает канон
разбивки по доменам-получателям для российского рынка.
- Контекст (sender-level, не для карточки): Gmail Postmaster Tools даёт 8 дашбордов (Spam Rate,
IP/Domain Reputation, Feedback Loop, SPF/DKIM/DMARC, TLS, Delivery Errors) — это репутация отправителя,
отдельный слой, не метрики одной рассылки. Упомянуть как «куда смотреть при плохой deliverability».
Оговорка: отчёт Klaviyo по провайдерам — account-level, не per-single-campaign. Для карточки
одной рассылки структуру переносим по аналогии (домены-получатели именно этой рассылки).
Источники: Klaviyo deliverability hub ·
DashaMail отчёты ·
Gmail Postmaster Tools ·
SendGrid deliverability guide.
7. Сравнение кампаний, экспорт CSV, фильтры, активность по времени (подтверждено)
- Сравнение кампаний (Mailchimp Comparative Reports): сводит несколько кампаний в один отчёт;
можно выбрать любое число метрик, но на графике максимум 2 одновременно; группировка/сортировка
по campaign / campaign type / audience / time frame. → в макете: таблица сравнения (много метрик) +
bar-chart на 1-2 выбранные метрики.
- Экспорт CSV (Klaviyo): экспорт аналитики кампаний — 24 колонки: Campaign Name, Tags, Subject,
List, Send Time, Unique Opens, Open Rate, Total Opens, Unique Clicks, Click Rate, Total Clicks,
Unsubscribes, Spam Complaints, Spam Complaint Rate, Successful Deliveries, Bounces, Bounce Rate и др.
→ готовый ориентир набора колонок для нашего CSV-экспорта.
- Экспорт CSV (Mailchimp): «CSV spreadsheet containing your campaign performance data»; без
субъект-уровневой детализации (кто именно открыл/кликнул) — агрегаты, не PII-построчно.
- Активность по времени (Unisender): «динамика открытий и переходов за день / неделю / 14 дней /
месяц» — интерактивный график open/click over time. Под ТЗ MLF-291 «активность по часам после
отправки» это line-chart opens/clicks по временной оси (часы/дни от send time).
Источники: 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»):
- «Mailchimp click rate = clicks / total recipients» (пример 25/1000 = 2.5%) — опровергнуто
(1-2). Mailchimp считает от delivered, не от всех получателей. Формулировка «от получателей»
недостоверна.
- «Klaviyo делит bounce/spam/unsub rate на recipients (а не delivered)» — опровергнуто (1-2).
Точный знаменатель этих трёх метрик не установлен — проверить в docs при реализации (§10).
→ Вывод: печатать формулу рядом с меткой и не фиксировать знаменатель bounce/spam/unsub, пока не
свёрен с docs эмпирически.
10. Открытые вопросы (эмпирика / бэкенд — перед реализацией)
- Знаменатель bounce / spam-complaint / unsubscribe rate — delivered или sent/recipients?
(claim опровергнут, формула не установлена). Свериться с docs Klaviyo/Mailchimp и с нашими
cdp.delivery_events при реализации.
- Наши категории bounce — сколько подтипов hard/soft мы реально различаем в
delivery_events,
и как они лягут на матрицу «категория × домен» (у Klaviyo 10 категорий; у нас, вероятно, меньше).
- Estimated/Human open — считаем ли мы «человеческие» открытия (фильтр MPP/prefetch) на бэкенде,
или показываем raw open + дисклеймер? Влияет на трекинг MLF-290
(open/click-трекинг — блокер MLF-291).
- Окно конверсии для goal — есть ли у нас goal-событие и окно атрибуции (у Customer.io до 90 дней),
или воронка MVP = delivered→open→click без goal.
- Домены-получатели — извлекаем ли мы домен из адреса на этапе delivery-события для группировки
(gmail/yandex/mail.ru/outlook/прочие).
11. Вопросы на согласование с М. Терентьевым (перед макетами)
- Open rate и MPP: показывать raw open с пометкой о MPP, или пару «raw / human (estimated)» open?
Делаем ли click-based (CTR/CTOR) первичным KPI над open?
- Стадии воронки в MVP: delivered→open→click (без goal, пока нет revenue-события) или сразу с
goal-стадией и окном конверсии?
- Link-level: в MVP достаточно таблицы по ссылкам (уник/всего клики на URL), или сразу нужна
карта кликов (heatmap по элементам письма, как DashaMail)?
- Deliverability-панель: плоские KPI bounce/complaint по доменам, или сразу heatmap
«категория bounce × домен» (канон Klaviyo)?
- Набор метрик карточки: берём таксономию из CSV Klaviyo (24 поля) как базовый набор, или уже
определённый в MLF-291 список (sent/delivered/delivery rate/unique open/CTR/CTOR/bounce hard-soft/
unsub/spam)?
- Сравнение кампаний: нужно ли в MVP (таблица + bar на 1-2 метрики, по образцу Mailchimp), или
выносим во вторую итерацию?
12. Ограничения ресёрча
- Знаменатель bounce/spam/unsub не верифицирован — соответствующий claim опровергнут (1-2);
мерить/сверять при реализации.
- Deliverability-разбивка и bounce-heatmap подтверждены только по Klaviyo (single-vendor) и на
account-level, не per-single-campaign — структуру адаптируем под одну рассылку.
- Терминология CTR/CTOR несогласована между вендорами (Klaviyo «CTR» = click-to-open) — в макете
печатать формулу рядом с меткой.
- RU-ESP (Unisender, DashaMail) — vendor-страницы, описывают заявленное поведение UI. Sendsay и
Mindbox в подтверждённых источниках не покрыты — при необходимости догрузить отдельно.
- Часть URL Customer.io отдавала 404 при прямом фетче (JS-рендеринг) — текст подтверждён через
поисковый индекс и зеркальные пути docs; это артефакт доступа, не фабрикация.
- Time-sensitive: MPP-механики и human-метрики Customer.io датированы 2025 годом и активны;
данные актуальны на 2026-07-21.
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.