CPL $4.42. Дашборд зелёный. Отчёт красивый. А из 150 заявок в реальные заказы конвертировались 8. Если считать не лиды, а клиентов которые реально заплатили, стоимость привлечения оказывается совсем другой. Это история аудита Google Ads и GA4 у службы международной доставки из Казахстана, и о том, почему красивые метрики в аналитике бывают опаснее отсутствия метрик.
CPL $4.42, метрика которая врала
Клиент пришёл к нам с работающей рекламой в Google Ads. Кампании крутятся, GA4 фиксирует Lead-события. CPL по Казахстану $4.42, по международке $5.68. Дашборд зелёный, отчёт красивый, клиент платит.
Проблема вскрылась когда мы посмотрели не на лиды, а на сделки. Из 150 заявок по международной доставке в реальные заказы конвертировались 8. Пять процентов. Причина отвалов одна и та же: «дорого». Люди искали дешёвую доставку, попадали на премиум-сервис, оставляли заявку и уходили когда узнавали цену.
Если пересчитать CPL не по лидам, а по клиентам которые реально заплатили, цифра получается принципиально другая. GA4 при этом уверенно показывал $4.42, и это число ничего не говорило о том, во что бизнесу обходится клиент который действительно оформил доставку.
Это главная ловушка GA4 для рекламодателя: система считает Lead-событие, ей безразлично кто его совершил. Целевой клиент которому дорого его время и он готов заплатить выше рынка, или человек который сравнивает пять сервисов и считает каждые 500 тенге. Для GA4 это одинаковые конверсии. CPL без замыкания на CRM (заявка → сделка → деньги) это vanity metric. Красивое число которое ни о чём не говорит. Мы подробно разбирали эту механику на примере beauty-студии, где снижение CPL в воронке Instagram → WhatsApp дало совсем другую картину, когда замкнули аналитику на продажи.
Что нашли: три слоя слива
Когда мы залезли в аккаунт, проблемы оказались не в одном месте, а в трёх слоях сразу. Каждый по отдельности выглядел терпимо. Вместе они сливали бюджет систематически.
Первый слой: все ключевые слова стояли на BROAD match. Негативных ключей на весь аккаунт было два. Результат предсказуем: трафик забит чужими брендами. СДЭК, Рика, DHL, Казпочта, EMS. Люди искали конкурентов, Google показывал им рекламу клиента, они кликали, оставляли заявку (GA4 фиксирует Lead, CPL красивый), а потом уходили. Потому что искали не его.
Второй слой: кампания «Алматы» дублировала кампанию «Kazakhstan». Одна и та же география, те же ключи, тот же бюджет. Классическая самоконкуренция: два объявления одного рекламодателя бились друг с другом на аукционе, повышая ставки самим себе. При этом кампания World стояла на паузе, хотя давала заявки.
Третий слой: стратегия MAXIMIZE_CONVERSIONS без ограничения tCPA. Дневной расход вдвое с лишним выше планового. Алгоритм Google делал ровно то, что ему сказали: максимизировал количество конверсий за любую цену. Самый дешёвый трафик это как раз люди ищущие конкурентов (высокий intent, низкая конкуренция за неточные клики). Алгоритм их и покупал. Не потому что он плохой, а потому что ему не поставили ограничений.
Почему GA4 не подсветил проблему сам
GA4 видит события, не бизнес-результат. Когда человек заполняет форму на сайте, GA4 фиксирует событие Lead. Ему неважно, этот человек искал сервис по названию бренда или «сдэк Алматы цена». Оба события одинаково ценные для системы.
Enhanced Measurement в связке с broad match создаёт иллюзию роста. Чем шире ключи, тем больше трафика. Чем больше трафика, тем больше конверсий. Чем больше конверсий, тем ниже CPL. Отчёт становится красивее с каждой неделей. Но это рост мусора, а не рост бизнеса.
Без связки GA4 → CRM нельзя отличить мусорный лид от целевого. GA4 не знает, что заявка из поиска «казпочта тарифы» никогда не конвертируется в сделку. Для него это такой же Lead как заявка от человека который целенаправленно искал международную доставку премиум-класса.
У нас в M.Sight был похожий по духу баг. Функция сравнения с бенчмарками хардкодила Meta-нормы для всех платформ. Google Search кампании постоянно горели красным по CPL. Не потому что работали плохо, а потому что мы мерили их линейкой от другой платформы. Google Search и Meta имеют разный нормальный CPL/CTR. Мерить Google по меркам Meta = врать. Починили: разделили бенчмарки по platformKey. Суть одна: инструмент показывает то, что вы ему сказали показывать. Если метрика настроена неправильно, красивый отчёт вредит больше чем отсутствие отчёта.
Что починили за один день
Решение не требовало месяцев. Весь аудит и пересборка уложились в один рабочий день.
Первое: shared negative list «Конкуренты + мусор (премиум-фильтр)». 52 негативных ключа, разбитых на три группы. Конкурентные бренды (сдэк, рика, dhl, казпочта, ems, cdek и все производные). Ценовой мусор («дёшево», «недорого», «бюджетно»). Нерелевант (работа, вакансии, трекинг, отследить). Негативы привязаны к shared list и применены ко всем кампаниям разом.
Второе: ограничение tCPA. Для Kazakhstan поставили $4 (исторический CPL был $4.42 с мусором, значит на чистом трафике должен быть ниже). Для World поставили $5. Вместо неограниченного MAXIMIZE_CONVERSIONS алгоритм теперь знает свой потолок.
Третье: паузнули дубль «Алматы», включили World с отдельным бюджетом. Вместо двух кампаний бьющихся за один и тот же Казахстан получилась одна Kazakhstan плюс одна World. Чистое разделение без самоконкуренции.
И четвёртое, контринтуитивное. Через неделю мы расширили tCPA с $4 до $4.5 и подняли дневной бюджет примерно на треть. Платить чуть дороже чтобы получить объём. Это урок из другого клиента: у застройщика в Алматы старая кампания стояла с target CPA $2.40 при реальном CPL $7. Результат: кампания откручивала 10% бюджета. Алгоритм просто не находил конверсий по $2.40 и выключался. Заниженный tCPA не экономит, он душит кампанию. Когда мы у застройщика поставили реалистичный tCPA $7, день обучения стоил $27 за лид, а уже на следующий день CPL упал до $3.35.
Результат через 7 дней: цифры
Через неделю после пересборки замерили.
Kazakhstan CPL: $4.42 → $3.50. Минус 21 процент. При этом важнее не сам CPL, а то что за ним стоит. «Проходных» заявок (люди искали конкурентов) стало значительно меньше. Те же деньги, но лиды которые реально могут стать клиентами сервиса.
World CPL: кампания была на паузе, теперь работает и даёт $4.20 за лид. Это трафик который раньше просто не собирали. Международная доставка, целевой сегмент клиента, маржинальность выше внутреннего рынка.
Impression Share 33-37%. Потеря по рангу 67%, потеря по бюджету 0%. Это значит: мы показываемся только трети аукционов, но не потому что не хватает денег (потеря по бюджету ноль), а потому что ранг объявлений можно поднять. Есть куда расти без увеличения расхода.
Следующий шаг после аудита: Google Ads assets. До пересборки к активным кампаниям не было привязано ни одного asset. Все RSA, сайтлинки, сниппеты висели на PAUSED-кампаниях. Мёртвый груз. Добавили RSA с 15 заголовками и 4 описаниями, 6 sitelinks, structured snippets, 6 callouts. Суммарный прогноз Google по оптимизации +8.7%. Не гигантская цифра, но это бесплатные проценты которые просто лежали на полу.
GA4 vs Meta vs Google Ads: кому верить
У одного из наших B2B клиентов CTWA-реклама в Meta даёт $1.08 за диалог в WhatsApp. Web Leads через лендинг с тем же продуктом стоят $12.46 за лид. Разница в 12 раз. GA4 при этом покажет лендинговый лид как «лучший» по engagement (время на сайте, глубина просмотра, событие submit). Но деньги приходят из WhatsApp-диалогов. Построить полный pipeline атрибуции для таких воронок можно через отслеживание click-to-WhatsApp рекламы до продажи, и это единственный способ увидеть реальную стоимость диалога.
20-40% расхождение между GA4 и Meta Ads считается нормой в индустрии. Это не баг и не ошибка настройки. Это три разные проекции одной реальности. GA4 считает по last-click (последний клик перед конверсией). Meta считает по 7-day click и 1-day view (если человек видел рекламу и конвертировался в течение дня, Meta припишет себе). Google Ads считает по last Google click. Каждая платформа тянет одеяло на себя.
Пытаться «починить» расхождение, свести три источника к одному числу, это тупик. Вместо этого стоит построить матрицу доверия. Meta для верха воронки: сколько людей увидели, кликнули, начали разговор. GA4 для сквозного пути: откуда пришёл, что смотрел, где отвалился. CRM для правды: кто реально заплатил.
У нас в практике был кейс когда клиент работал без детальных отчётов по рекламе, по сути вслепую. Агентство давало общую цифру лидов, без разбивки по каналам, без стоимости, без конверсии в сделки. Когда подключили аналитику и посмотрели на цифры, оказалось что половина заявок приходит ночью (IG), утром на них никто не отвечает, и к моменту звонка человек уже ушёл. Проблема была не в рекламе. Проблема была в том, что без аналитики её невозможно было увидеть.
Чек-лист: 6 точек аудита до запуска рекламы
Этот чек-лист собран из реальных ошибок которые мы нашли у клиентов. Не теоретический «45 пунктов настройки GA4», а шесть мест где деньги утекают чаще всего.
1. Негативные ключи. Есть ли shared negative list? Покрыты ли конкуренты и мусорные запросы? У клиента из этого кейса было 2 негатива на весь аккаунт. Трафик по запросам конкурентов съедал бюджет и генерировал «лиды» которые никогда не конвертируются. 52 негатива решили проблему за день.
2. tCPA или tROAS. Стоит ли ограничение и реалистично ли оно? Заниженный tCPA ($2.40 при реальном $7) не экономит. Он не даёт алгоритму обучиться, кампания откручивает 10% бюджета, и деньги просто не работают. Ограничение должно быть чуть ниже текущего CPL, не в два раза ниже.
3. Дубли кампаний. Самоконкуренция по гео, аудиториям, ключам. У того же клиента «Алматы» и «Kazakhstan» бились за одни и те же показы. Проверяется за 5 минут в Google Ads, но никто не проверяет.
4. GA4 конверсии. Что именно считается Lead-ом? Совпадает ли определение с тем, что бизнес считает реальной заявкой? Если GA4 фиксирует Lead на каждый scroll до формы, CPL будет красивый. И бессмысленный.
5. ENV-переменные в проде. У нас в студии был случай: GTM не загружался 5 дней потому что NEXT_PUBLIC_GTM_ID не был добавлен в Vercel ENV. В dev-окружении всё работало, на проде GA4 был слеп. Нашли случайно. Урок: при подключении любого NEXT_PUBLIC_* сразу проверять что переменная дошла до прода. Если вы уже на этапе серверной аналитики, в нашем гайде по server-side GTM + GA4 в проде разобрано как не повторить эту ошибку и получить данные которые client-side просто теряет.
6. Бенчмарки по платформе. Не мерить Google по меркам Meta. CPL $9 для Google Search это нормально. CPL $9 для Meta Ads это дорого. Если дашборд красит всё одним цветом, вы принимаете решения на основе ложной тревоги. Разделите бенчмарки по платформам, иначе рискуете резать рабочие кампании и оставлять нерабочие. Проблема усугубляется в мире без cookie, где GA4 дозаполняет данные behavioral modeling и расхождение между платформами растёт ещё сильнее.