Аудит Директа за четыре часа с ИИ-агентом: кейс с запросами к API и поправкой от CRM
Друзья прислали мне отчёт своего подрядчика по Директу и одну фразу: «вроде всё хорошо, но заказов не прибавляется». В отчёте было всё, что положено: конверсии, цена лида, «идеальный баланс объёма и цены» и план на сентябрь — лечить сайт, потому что 80% корзин бросают. Доставка еды в одном городе, около 1,6 млн ₽ рекламы в год. Я попросил доступ к кабинету и токен к API, открыл терминал с ИИ-агентом, и к обеду знал, что заказов вдвое меньше, чем конверсий, половина главной кампании уходит в автотаргетинг с ДРР 78%, а «80% брошенных корзин» — ошибка деления.
TL;DR Четыре часа стеной с Claude Code и API Директа и Метрики дали сводный документ и дек на 24 слайда. Витринные конверсии считали каждый заказ дважды. Средний CPO прятал бренд по 389 ₽ и небренд по 1 506 ₽. Настоящая конверсия корзины в заказ 58%, а главная потеря сайта — окно входа, которое открывается при заходе в корзину. Через пять дней выгрузка из CRM показала, что Метрика видела четверть заказов, повторность по телефону вдвое выше, чем по cookie, и небрендовый заказ из «не окупается» стал «окупается за 6–12 месяцев». Ниже весь ход с запросами к API и граблями, раздел о том, где этот аудит врёт, и отдельно для собственника: сколько это заняло и что здесь делал человек. Чтение — минут двадцать.
Простыми словами Аудит рекламы — проверка по данным кабинета, за что платили и что получили. ИИ-агент — программа, которая по моим вопросам пишет и запускает запросы к API, считает таблицы и складывает выводы в документы. Что считать заказом и чему верить, решал я.
Бизнес, город, подрядчик и платформа сайта не названы. Все суммы и количества умножены на коэффициенты, доли и проценты настоящие. Кейс публикуется с согласия владельцев данных.
Что было на входе
На руках было четыре вещи:
- доступ к кабинету Директа и счётчику Метрики с включённой электронной торговлей (события покупки с суммами);
- выгрузка «Мастера отчётов» за год, xlsx на 65 МБ;
- отчёт подрядчика за август: текст, три таблицы и план на сентябрь;
- ноль информации о марже, доле заказов через приложение и договоре с подрядчиком.
Инструменты: Claude Code, Python с pandas, OAuth-токен с правами Директа и Метрики. Токен и все выгрузки лежат в папке проекта на моём диске, во внешние чаты ничего не уходило.
Час первый: xlsx обрезан молча, идём в API
Агент открыл xlsx и сразу упёрся в две вещи. Первая мелкая: у файла битое описание размеров листа, и openpyxl читает его как пустой, пока не вызвать ws.reset_dimensions(). Вторая серьёзнее: в выгрузке ровно 400 000 строк, детализация обрывается в марте, а строка «Итого» внизу посчитана за весь год. Лимит веб-выгрузки режет период молча, и если сложить строки, в файле оказывается 44% годового расхода.
Лайфхак Любую веб-выгрузку из Директа сверяйте так: сумма колонки «Расход» по строкам против «Итого» внизу. Не сошлось — период обрезан.
Решение: не бороться с файлом и забрать год через Reports API. Четыре отчёта, все в TSV:
# Reports API Директа: год по дням × кампаниям × группам с целью реального заказа
params = {
"SelectionCriteria": {"DateFrom": DATE_FROM, "DateTo": DATE_TO},
"Goals": [PURCHASE_GOAL_ID], # id цели «Ecommerce: покупка»
"AttributionModels": ["AUTO"],
"FieldNames": ["Date", "CampaignName", "AdGroupName", "CriterionType",
"Clicks", "Cost", "Conversions", "Revenue"],
"ReportName": f"audit_{int(time.time())}", # имя уникально навсегда в рамках токена
"ReportType": "CUSTOM_REPORT",
"DateRangeType": "CUSTOM_DATE", "Format": "TSV", "IncludeVAT": "YES",
}
# заголовки: Authorization: Bearer <token>, processingMode: auto,
# returnMoneyInMicros: false, skipReportHeader/skipReportSummary: true
# ответ 200 — готово; 201/202 — повторить через retryIn секунд; 429 — подождать 30 сек
Плюс поисковые запросы помесячно (SEARCH_QUERY_PERFORMANCE_REPORT) с той же целью: за большой период отчёт по запросам лучше дробить.
Грабля, которая стоит целого аудита: поле Conversions без параметра Goals возвращает сумму по всем целям счётчика, включая микроцели. У нас так получалось 25 тыс «конверсий» на 32 тыс кликов. С Goals колонки становятся Conversions_<id>_AUTO и Revenue_<id>_AUTO, и выручка приходит только по цели с деньгами.
Главное решение аудита: что считать заказом
Пока отчёты выгружались, агент вытащил полный список целей счётчика. Их оказалось больше десятка, и «конверсии» в отчётах складывались сразу из нескольких, поэтому первым делом мы разложили год по целям:
| Цель | Достижений за год |
|---|---|
| Ecommerce: покупка | 1 968 |
| Подтвердил заказ (событие платформы) | 2 411 |
| Оформление заказа (посещение страницы) | 4 565 |
| Составная «оформил заказ» | 2 204 |
| Автоцель: отправка формы | 1 838 |
Витринные «4 466 конверсий» из годового отчёта кабинета — это сумма целей «покупка» и «подтвердил заказ», которые срабатывают на одном и том же заказе (в сумме 4 379, разница — атрибуция). Реальных заказов 1 968. Витринный CPA 354 ₽ превращается в CPO 816 ₽.
Правило, которое я вынес отсюда и теперь применяю первым: пока не выбрана одна цель реального заказа, любая «конверсия» в отчёте — не факт. При включённой электронной торговле это всегда «Ecommerce: покупка» — единственная цель с выручкой, а значит, единственная, из которой считается ДРР.
Экономика года по этой цели:
| Показатель | Значение |
|---|---|
| Расход с НДС | 1,6 млн ₽ |
| Заказов | 1 968 |
| Выручка из Директа | 5,5 млн ₽ |
| CPO | 816 ₽ |
| ДРР | 29% |
| Средний чек | 2 816 ₽ |
Для доставки еды ДРР 29% дорого: обычный целевой уровень канала 10–20%, первый заказ с рекламы при типичной марже общепита убыточен, канал живёт на повторных заказах. Насколько живёт, выяснилось только с CRM, об этом ниже.
Попутно нашёлся октябрь без заказов: 8 покупок за месяц при обычной сотне по цели «подтвердил заказ». Разметка электронной торговли лежала месяц, и никто этого не заметил. В план пошёл алерт «заказов за день = 0».
Разрез бренд/небренд: среднее скрывает две разные рекламы
Средний CPO 816 ₽ ничего не говорит о том, что делать, потому что внутри него сидят две разные рекламы. Чтобы их развести, поисковые запросы за год разделили регуляркой на «свой бренд», «конкуренты» и «остальное»:
import re, pandas as pd
q = pd.read_csv("data/reports/r4-queries-purchases.tsv", sep="\t")
BRAND = re.compile(r"бренд\s*слитно|бренд\s+раздельно|brand", re.I) # маска из топ-100 запросов
COMP = re.compile(r"конкурент1|конкурент2", re.I)
q["seg"] = "nonbrand"
q.loc[q.Query.str.contains(COMP), "seg"] = "competitor"
q.loc[q.Query.str.contains(BRAND), "seg"] = "brand"
g = q.groupby("seg")[["Cost", "Clicks", "Conversions", "Revenue"]].sum()
g["CPO"] = g.Cost / g.Conversions
g["DRR"] = g.Cost / g.Revenue
g["CR"] = g.Conversions / g.Clicks
Маска брендовых запросов собирается из данных: топ-100 запросов по расходу плюс все варианты написания названия — слитно, раздельно, латиницей, с опечатками. В веб-выгрузке есть готовое поле «Упоминания брендов в запросах», в API его нет.
| Сегмент | Расход | Заказы | CPO | ДРР | Конверсия из клика |
|---|---|---|---|---|---|
| Свой бренд | 327 тыс ₽ | 841 | 389 ₽ | 14% | 17% |
| Небренд | 530 тыс ₽ | 352 | 1 506 ₽ | 53% | 3% |
| Товарная кампания | 312 тыс ₽ | 565 | 553 ₽ | 20% | — |
Внутри небренда одна группа — «автотаргетинг без ключевых слов» — забрала 388 тыс ₽ за год и принесла 175 заказов: CPO 2 218 ₽, ДРР 78%. Это половина расходов главной кампании. Ещё 404 запроса потратили от 100 ₽ каждый и не дали ни одного заказа — вместе 144 тыс ₽, 9% бюджета. Регулярной чистки запросов не велось: за год в кабинете полсотни ключевых фраз и ноль корректировок ставок.
В деньгах Отключить широкие и альтернативные категории автотаргетинга и перенести бюджет в товарную кампанию — 120–200 тыс ₽ в год, которые перестают уходить при ДРР 78%. Сбить цену брендового клика (62 ₽ за клик по собственному имени на пустом аукционе, ручные ставки дали бы 18–31 ₽) — ещё 80–160 тыс ₽.
Google как контрольная группа
Бренд по 389 ₽ выглядит выгодно, пока не спросить, сколько из этих заказов пришло бы бесплатно. Прямого теста не было, но есть естественный контроль: в Google реклама не крутилась.
Запрос к Stat API Метрики, покупки и выручка по источникам за год:
GET https://api-metrika.yandex.net/stat/v1/data
?ids=<counter>&date1=<from>&date2=<to>&accuracy=full
&dimensions=ym:s:lastsignSourceEngine
&metrics=ym:s:visits,ym:s:ecommercePurchases,ym:s:ecommerceRevenue
&sort=-ym:s:ecommerceRevenue
Authorization: OAuth <token>
| Источник | Визиты | Покупки |
|---|---|---|
| Яндекс.Директ | 27 938 | 1 842 |
| Google, бесплатная выдача | 14 222 | 1 453 |
| Яндекс, бесплатная выдача | 7 959 | 495 |
В Google брендовый спрос без рекламы даёт 1 453 заказа в год. В Яндексе, где та же выдача выкуплена за 327 тыс ₽, органика дала 495. Помесячно бесплатный трафик из Яндекса упал почти вдвое за год, а доля брендового расхода в Директе за то же время выросла с 25% до 40–49%. Причинность здесь не доказана, но два графика на одном слайде задают владельцу правильный вопрос. В план пошёл тест инкрементальности: две недели пониженных брендовых ставок и замер суммы «Директ плюс органика Яндекса».
Отчёт подрядчика: что честно и что нет
Сырые цифры в отчёте за август сошлись с API до рублей: расход по кампаниям, число заказов, оценка кампаний в сетях. Это надо сказать первым, потому что цифры подрядчик не рисует. Спин живёт в том, какие из них показать. Два тезиса проверку не прошли.
Тезис «из корзины оплачивается 20%, 80% теряем — в сентябре лечим сайт, а не рекламу». Двадцать процентов получились делением заказов на срабатывания цели «добавил в корзину»: 335 на 1 666. Но цель срабатывает на каждый добавленный товар, а в заказе доставки еды в среднем пять позиций, это видно и по среднему чеку. Ошибку нашёл я, когда прочитал отчёт глазами: агент на неё не среагировал, для него «конверсия 20%» была просто числом. Дальше уже агент пересчитал воронку от визитов, как её считает сама Метрика:
metrics=ym:s:visits,
ym:s:goal<CART_ID>conversionRate, # доля визитов с добавлением в корзину
ym:s:goal<PURCHASE_ID>conversionRate # доля визитов с покупкой
# корзина → заказ = purchaseRate / cartRate
# достижения целей делить друг на друга нельзя: «корзина» срабатывает на каждый товар
Корзина → заказ по визитам: 58%. Для доставки это хороший показатель, катастрофы нет, и «+85 заказов от дожима корзин» в плане подрядчика не существуют. Обе цифры при этом были в самом отчёте: «44% от числа целей, но 14–15% от визитов», а для главного вывода выбрана та, что хуже.
Тезис «Основной Поиск: цена лида 476 ₽, идеальный баланс, масштабировать». Внутри кампании за август: бренд по 150 ₽ с ДРР 5% и небренд по 1 190 ₽ с ДРР 42%. Масштабируется только вторая часть, по 1 190 ₽. Разреза бренд/небренд в отчёте не было, ДРР и выручки тоже, хотя электронная торговля включена и данные лежат в одном клике.
Замечание Рамка вердикта — две колонки: что честно и что не выдерживает проверки. Тон нейтральный, потому что документ читает и подрядчик.
Воронка сайта и стена входа
Раз уж воронка размечена целями платформы до последнего шага, мы посчитали её целиком за 90 дней, по долям визитов:
| Шаг | Визитов | Конверсия шага |
|---|---|---|
| Добавил в корзину | 2 826 | 14,9% от всех визитов |
| Перешёл в корзину | 2 722 | 96% |
| Перешёл к деталям доставки | 1 914 | 70% |
| Выбрал оплату | 1 758 | 92% |
| Подтвердил заказ | 1 711 | 97% |
| Покупка | 1 556 | 91% |
Единственный шаг ниже 90% — вход в оформление. Там живёт авторизация: окно входа показывалось в 70% визитов, дошедших до корзины, и четверть увидевших его не проходила — около 470 оборванных визитов за квартал. На смартфонах окно выскакивало вдвое чаще, чем на компьютерах, поэтому мобильная конверсия хуже.
Чтобы не спорить с цифрами, агент прошёл флоу headless-браузером с мобильным вьюпортом: главная, добавление блюда, корзина. Скриншот подтвердил: при заходе в корзину, даже пустую, поверх экрана открывается окно «Вход» с полем телефона и выбором способа подтверждения — до адреса, суммы и времени доставки. Заказ не оформлялся, телефон не вводился.
Рекомендация №1 по сайту — гостевой заказ или вход после адреса: консервативно +50–65 заказов в месяц без рубля рекламы.
Когорты через Logs API: сколько клиент приносит потом
Ни один отчёт кабинета не ответит, окупается ли небрендовый заказ по 1 506 ₽. Нужны сырые визиты с идентификатором клиента. Это Logs API Метрики:
API = f"https://api-metrika.yandex.net/management/v1/counter/{COUNTER}"
fields = ("ym:s:visitID,ym:s:clientID,ym:s:dateTime,ym:s:isNewUser,"
"ym:s:lastsignTrafficSource,ym:s:purchaseRevenue,ym:s:purchaseID")
# 1. GET {API}/logrequests/evaluate?date1&date2&fields&source=visits → possible: true
# 2. POST {API}/logrequests?... → request_id
# 3. GET {API}/logrequest/{id} — поллить до status == "processed"
# 4. GET {API}/logrequest/{id}/part/{n}/download — скачать части
# 5. POST {API}/logrequest/{id}/clean — снять квоту
Две грабли: лимит периода ровно год, date2 не позднее вчера; purchaseRevenue приходит списком вида [1234,567], парсить руками. Дальше pandas: первая покупка клиента и её канал, повторы за 90 дней, выручка за 90 дней, медиана дней до второй покупки — только по закрытым окнам, чтобы свежие клиенты не занижали повторность.
| Канал первой покупки | Покупателей | Повторили | Выручка за 90 дней на покупателя | Медиана до 2-й покупки |
|---|---|---|---|---|
| Органика | 1 388 | 17% | 3 570 ₽ | 25 дней |
| Реклама | 1 350 | 15% | 3 381 ₽ | 11 дней |
И ещё одно число: минимум 24% рекламных покупок — не первая покупка клиента. Реклама частично выкупала заказы собственных клиентов. Лечение — исключать сегмент «покупал за 90 дней» из брендовой закупки и ретаргетинга.
Вывод по окупаемости на этом этапе: клиент с рекламы приносит 3 381 ₽ за квартал, при марже 25–35% это 850–1 180 ₽ валовой прибыли, и небрендовый заказ по 1 506 ₽ за квартал не окупается. Через пять дней этот вывод пришлось переписать.
Бонус: чужой кабинет в Метрике
Разрез рекламного трафика по UTM показал источник vk_ads / cpa / <числовой id кампании>: 12 тыс визитов за пять месяцев и 2 заказа. Трафик шёл на главную и акционные страницы, 77% визитов из городов вне зоны доставки. Владельцы знали про «рекламу ВКонтакте на подписки в сообщество», про кампании на сайт не знали. Одна строка запроса к Метрике превратилась в вопрос, кто и сколько потратил в другом кабинете.
Что легло в дек
Восемь рабочих документов агент свёл в один по фиксированной структуре: главные цифры, сегменты, отчётность подрядчика, сайт, клиенты, план из 16 пунктов, приоритеты первого месяца, вопросы владельцу, оговорка об источнике данных. Из сводного документа — печатный дек на 24 слайда: HTML с графиками в SVG, PDF через headless-браузер. Приоритеты первого месяца выглядели так:
| # | Действие | Кто | Эффект |
|---|---|---|---|
| 1 | Разделить бренд и небренд, сбить брендовые ставки, отключить широкие категории автотаргетинга | Подрядчик | 200–360 тыс ₽ в год перестают утекать |
| 2 | Гостевой заказ или вход после адреса | Платформа сайта | +50–65 заказов в месяц |
| 3 | Бюджет в товарную кампанию, запросы-звёзды в ключи, правило чистки запросов | Подрядчик | +65–130 заказов в год при ДРР до 25% |
| 4 | Исключить купивших за 90 дней из закупки, повторные — в пуши и рассылки | Подрядчик и владелец | срезать перекупку своих |
| 5 | Тест инкрементальности бренда, две недели | Подрядчик | решение по 327 тыс ₽ в год |
| 6 | Отчётность: ДРР по сегментам, конверсии от визитов, алерт «заказов за день = 0» | Подрядчик | управляемость |
Оговорка об источнике данных вошла в каждый документ: заказы и выручка взяты из электронной торговли Метрики, отмены не вычтены, телефонные заказы и приложение не видны, атрибуция модельная. Соотношения устойчивы, абсолюты — до сверки с кассой. Сверка пришла раньше, чем я ждал.
Второй акт: что показала CRM
Владельцы прислали три выгрузки из системы заказов: заказы с телефонами клиентов за два года, справочник гостей с бонусами и отчёт по заказам с источником и статусом. Первые полчаса съели грабли данных: кодировка cp1251 и разделитель «;», история начинается с даты переезда на новую платформу (у 3 400 клиентов «дата рождения» равна дню миграции), заказы агрегатора заведены на один служебный номер, есть номер «Рабочий» с 900 заказами по 600 ₽ (питание персонала). Без исключения заглушек любая клиентская аналитика врёт.
Дальше три поправки к аудиту.
Метрика видела 20–30% заказов За год аудита в CRM 18,6 тыс заказов на 48 млн ₽; Метрика видела 4,3 тыс на 11,4 млн ₽. Средний чек сходится (2 618 ₽ по CRM против 2 816 ₽ по Метрике), то есть суммы в разметке передавались честно, терялись сами заказы: приложение, телефон, агрегатор. Расход Директа — 3,3% выручки бизнеса, а ДРР 29% верен только как «реклама против заказов, которые она сама привела через сайт».
Повторность вдвое выше По телефону вместо cookie:
o = pd.read_csv(path, sep=";", encoding="cp1251", parse_dates=["Дата"])
o = o[~o["Телефон"].isin(SERVICE_PHONES)] # агрегатор, «Рабочий», фиктивные номера
first = o.groupby("Телефон")["Дата"].min().rename("first")
o = o.join(first, on="Телефон")
o["days"] = (o["Дата"] - o["first"]).dt.days
closed = o[o["first"] <= o["Дата"].max() - pd.Timedelta(days=90)] # только закрытые окна
repeated = closed[closed.days.between(1, 90)]["Телефон"].nunique()
print(repeated / closed["Телефон"].nunique()) # 0.30
| Горизонт после первого заказа | Повторили | Выручка на нового клиента |
|---|---|---|
| 90 дней | 30% | 3 926 ₽ |
| 365 дней | 49% | 6 853 ₽ |
Валовая прибыль с нового клиента за год при марже 25–35% — 1 700–2 400 ₽. Небрендовый заказ по 1 506 ₽ окупается за 6–12 месяцев, за квартал — только по августовской цене. Целевой CPO небренда с окупаемостью за полгода — 1 200–1 700 ₽, и маржу по-прежнему нужно спросить у владельца.
Рост Директа не дал новых клиентов. Расход с весны вырос в полтора раза, новых клиентов в CRM летом столько же, сколько год назад; заказов больше на 15%, целиком за счёт повторных. Это подтвердило по кассе то, что аудит видел по когортам: бренд и ретаргет выкупают своих.
Что осталось верным без правок: разрез бренд/небренд, автотаргетинг с ДРР 78%, стена входа, пятница и суббота как 42% недели, праздничные пики. Что пришлось перепроверять: «август — лучший месяц». В CRM заказов в августе не прибавилось, а доля сайта в заказах подскочила с 30% до 42%: либо заказы перетекли из приложения на сайт, либо поменялась разметка. Вопрос ушёл владельцу.
Из CRM вырос второй план: сегменты в Яндекс.Аудиториях по телефонам (исключение «купил за 90 дней» — 3,2 тыс номеров, похожие на лучших клиентов, реактивация 91–365 дней — 5,2 тыс), триггер второго заказа на 7-й и 21-й день, пятничный пуш, праздничный предзаказ. Одна волна SMS по спящим при отклике 3–5% — 160–260 заказов за 24 тыс ₽, в 5–10 раз дешевле рекламного заказа.
Сколько это заняло и что делал человек
Четыре часа стеной от первой выгрузки до дека, ещё около пяти часов через пять дней на CRM и второй дек на 17 слайдов. Внутри этого времени агент писал и запускал скрипты, ждал API, считал таблицы и складывал документы. Я делал четыре вещи: выбрал цель реального заказа, нашёл ошибку деления в отчёте подрядчика, задавал порядок вопросов («теперь Google как контроль», «теперь воронка от визитов») и переписывал вердикты в человеческий язык для владельцев.
В деньгах Аудит такого объёма у агентства или фрилансера, по моей прикидке рынка, — одна-две недели календаря и 30–80 тыс ₽, причём когорты через Logs API и живой проход сайта в стандартный аудит обычно не входят. Здесь — четыре часа и подписка на агента. Для собственника важнее срок: вопрос «сколько стоит заказ по данным кабинета» получил ответ в день, когда был задан, а не через две недели после согласования коммерческого предложения.
Что не вошло в четыре часа: день переписки за доступами и токеном, и работа после. Из этого аудита собран набор правил и скриптов, с которым следующий такой же аудит начинается с готовых выгрузчиков и чеклиста. Второй раз будет быстрее первого.
Где этот аудит врёт
- Все заказы и выручка до второго акта — из электронной торговли Метрики. Отмены не вычтены, промокоды учтены как получится. CRM подтвердила чек и показала охват, но маржа так и осталась вопросом владельцу; без неё целевой CPO — экспертная прикидка.
- Каннибализация бренда доказана косвенно, через Google. Настоящий ответ даст только тест с понижением ставок.
- Когорты по cookie — нижняя оценка повторности; когорты по телефону — с левой цензурой: клиенты до переезда на новую платформу выглядят новыми.
- Атрибуция Директа автоматическая. Три независимых счёта заказов из Директа разошлись на 7%. Это нормально, но точный ДРР канала гуляет в этих пределах.
- Агент ошибку подрядчика не заметил. Он посчитал бы «20% из корзины» как данность, если бы я не знал, что цель «добавил в корзину» срабатывает на каждый товар. Экспертиза в этой связке пока у человека.
- Хронометраж — по времени файлов, не по секундомеру, и в него не входит день на доступы.
- Цифры в тексте изменены коэффициентами. Сверять свой бизнес с этими абсолютами не надо, сверяйте доли.
Как повторить у себя
- Получить токен с правами Директа и Метрики и номер счётчика. Выгрузить список целей, выбрать одну цель реального заказа. При включённой электронной торговле — «Ecommerce: покупка».
- Reports API: год по кампаниям и группам с
GoalsиAttributionModels, поисковые запросы помесячно с той же целью. Полю «Конверсии» без цели не верить. - Разрезать запросы регуляркой на бренд, конкурентов и небренд; отдельно посмотреть группы автотаргетинга. По каждому сегменту — расход, заказы, CPO, ДРР.
- Метрика: источники × покупки × выручка; органика по поисковикам помесячно рядом с долей бренда в расходе.
- Воронка — только через
conversionRate, никогда через деление достижений. - Logs API за год: повторы за 90 дней, выручка на клиента, доля рекламных покупок у старых клиентов.
- Отчёт подрядчика: сверить расход до рублей, потом искать четыре приёма — двойной счёт целей, конверсия от срабатываний, среднее без разреза, CPL вместо ДРР.
- Выгрузка из CRM с телефонами: сверить охват Метрики и повторность до того, как выносить вердикт об окупаемости.
- В каждый документ — оговорку об источнике данных.
Чеклист проверок кабинета без API есть в статье про аудит контекстной рекламы своими силами, про цену брендовых запросов — в отдельном разборе.
Краткие выводы
- Первое действие аудита — выбрать цель реального заказа. У нас витринные конверсии были завышены вдвое, и весь отчёт подрядчика стоял на этой цифре.
- Средние скрывают всё: CPO 816 ₽ распался на бренд по 389 ₽ и небренд по 1 506 ₽, а внутри небренда сидел автотаргетинг с ДРР 78%.
- Конверсию воронки считают от визитов. Деление на срабатывания цели «корзина» дало 20% вместо 58% и увело план подрядчика в «лечить сайт».
- Метрика видела четверть бизнеса. Любой вердикт об окупаемости рекламы без выгрузки CRM с телефонами — вердикт на четверти данных.
- Четыре часа стеной с ИИ-агентом закрыли объём, который обычно продают как двухнедельный проект. Решения о том, что считать и чему верить, принимал человек.
Откуда брали данные Reports API Яндекс.Директа, Stat API и Logs API Яндекс.Метрики за 12 месяцев; отчёт подрядчика за один месяц; три выгрузки из системы заказов за два года; внешняя проверка сайта и проход headless-браузером. Цифры изменены постоянными коэффициентами, доли и проценты настоящие.
У вас в отчёте подрядчика есть строка «конверсии». Вы знаете, из каких целей она сложена и сколько в ней настоящих заказов?