Руководство: Как управлять ставками в Яндекс Директе через динамическую ценность (Value) и защитить маржу e-com проекта
Каждый e-commerce предприниматель или маркетолог рано или поздно упирается в стену оптимизации Яндекс Директа. У вас в интернет-магазине могут быть тысячи SKU. Цена продажи у некоторых позиций совпадает, но их себестоимость, логистические издержки и чистая маржинальность различаются кардинально.
Если запустить автостратегию Яндекс Директа («Максимум конверсий» с оплатой за конверсии или удержанием ДРР) по стандартному e-commerce счетчику, система начнет оптимизировать кампании на основе цены продажи товара на сайте. Для алгоритма Яндекса продажа худи за 5 000 рублей с себестоимостью 1 000 рублей и продажа куртки за 5 000 рублей с себестоимостью 4 200 рублей — это абсолютно одинаковый успех. Но в первом случае бизнес получает отличную прибыль, а во втором — работает ради работы или вовсе уходит в минус из-за рекламных расходов.
Разбивать ассортимент на сотни мелких кампаний по уровню маржи — адский ручной труд, который к тому же дробит данные. Алгоритмы Директа в мелких группах просто не обучатся из-за нехватки конверсий.
В этом руководстве мы разберем продвинутую мартех-механику: как перестать передавать в Директ грязную выручку с сайта и начать транслировать искусственную ценность (Value) товара, учитывающую его реальную маржу. Мы пройдем путь от математической модели до ТЗ программисту и настройки рекламного кабинета.
Часть 1. Ловушки стандартной e-commerce аналитики
Прежде чем переходить к коду, зафиксируем две главные проблемы, которые прямо сейчас незаметно сливают бюджет в большинстве рекламных кабинетов Рунета.
Ловушка №1: Статичный ДРР на разнородный товар
Допустим, вы установили в Директе целевую долю рекламных расходов (ДРР) равной 15%. У вас есть три товара с одинаковой ценой на сайте — 2 000 рублей:
- Товар А (низкомаржинальный):
- Себестоимость 1 500 рублей. Маржа до маркетинга — 500 рублей. При ДРР 15% Директ спишет за его продажу 300 рублей. Ваша чистая прибыль: 500 - 300 = 200 рублей. С учетом операционки это работа в ноль.
- Товар Б (высокомаржинальный):
- Себестоимость 200 рублей. Маржа — 1 800 рублей. При ДРР 15% Директ спишет те же 300 рублей. Чистая прибыль: 1800 - 300 = 1500 рублей.
Система удерживает одинаковую стоимость привлечения (CPA) там, где нужно действовать гибко. Продукт «Б» мог бы выкупать в 3 раза больше трафика и агрессивно выбивать конкурентов из аукциона, если бы Директ знал, что за него можно заплатить дороже. Но алгоритм искусственно зажат рамками 15% от цены сайта.
Ловушка №2: Искажение за счет стоимости доставки
Большинство CMS-систем и модулей аналитики передают в электронную коммерцию (e-commerce) итоговую сумму чека, сформированную в корзине. Туда зашита стоимость доставки (например, СДЭК или курьер).
Если пользователь купил недорогой товар за 600 рублей и оформил доставку за 400 рублей, Метрика зафиксирует доход 1 000 рублей. Робот Директа, ориентируясь на ДРР, спишет свои 10–15% от этой тысячи. Но бизнес на доставке ничего не зарабатывает — это транзитный платеж логистической службе. Реклама фактически съедает маржу самого товара, искажая общую экономику.
Часть 2. Суть стратегии динамической ценности
Решение проблемы — обман алгоритма во благо бизнеса. Мы создаем кастомное JavaScript-событие в Яндекс Метрике. Вместо реальной стоимости заказа (price) мы будем передавать в параметр ценности (value) синтетический показатель, рассчитанный на стороне бэкенда или фронтенда сайта по нашей формуле.
Базовое правило расчета выглядит так:
\(\text{Value}=\text{Маржа\ в\ деньгах}\times \text{Коэффициент\ наценки\
товара}\)
Где Маржа в деньгах — это Цена на сайте -
Себестоимость (без учета доставки).
Коэффициент наценки — это плавающий множитель, который зависит от
процента маржинальности SKU. Чем выше чистая маржинальность товара в процентах,
тем выше вы закладываете повышающий коэффициент. Это позволяет искусственно
завысить ценность маржинальных товаров для Директа.
Рассмотрим, как меняется экономика, если мы выставим в Директе единый целевой ДРР 20%, но передадим скорректированный Value:
|
Показатель |
Товар 1 (Низкомаржинальный) |
Товар 2 (Высокомаржинальный) |
Товар 3 (Среднемаржинальный) |
|
Цена продажи на сайте |
2 000 ₽ |
2 000 ₽ |
2 000 ₽ |
|
Себестоимость (Unit) |
1 000 ₽ |
200 ₽ |
500 ₽ |
|
Реальная маржа до рекламы |
1 000 ₽ |
1 800 ₽ |
1 500 ₽ |
|
Расчетный коэффициент |
1.41 |
3.0 |
2.23 |
|
Передаваемый в Метрику Value |
1 410 ₽ |
5 400 ₽ |
3 345 ₽ |
|
Макс. расход в Директе (ДДР 20%) |
282 ₽ |
1 080 ₽ |
669 ₽ |
|
Фактическая прибыль бизнеса |
718 ₽ |
720 ₽ |
831 ₽ |
Что это дает на практике?
- Агрессивный выкуп жирного трафика:
- Для Товара 2 (высокомаржинального) Директ теперь видит ценность в 5 400 рублей. При ДРР 20% он готов платить за одну конверсию до 1 080 рублей. Ваше объявление мгновенно взлетает на верхние строчки премиум-показов на Поиске и забирает лучшие площадки в РСЯ. Вы максимизируете объем продаж самого выгодного для вас товара.
- Защита от слива на «пустышках»:
- По Товару 1 Директ зажмет ставки и не позволит списать за конверсию более 282 рублей. Вы гарантированно остаетесь в плюсе.
- Безопасность при оптовых или комбо-заказах:
- Если пользователь кладет в корзину сразу три разных товара, их кастомные Value суммируются на этапе отправки цели. Директ спишет ровно 20% от безопасной, математически обоснованной суммы, а не от раздутого чека сайта.
Часть 3. Пошаговый технический план реализации
Перейдем к пошаговому внедрению механики. Инструкция построена так, чтобы её можно было реализовать как напрямую через код сайта, так и с помощью диспетчера тегов Яндекс Тэг Менеджер (YTM).
[База данных / CMS] -> Расчет Value для каждого SKU
|
v
[Фронтенд сайта] ----> Формирование dataLayer (событие purchase)
|
v
[Яндекс Тэг Менеджер] -> Чтение переменных и триггер события
|
v
[Яндекс Метрика] ----> Получение e-comm события
|
v
[Яндекс Директ] -----> Оптимизация стратегии «Максимум конверсий»
Шаг 1. Подготовка продуктовой матрицы
Вам необходимо выгрузить из вашей учетной системы (1С, МойСклад, ERP) или CMS актуальную базу товаров. Каждому SKU должны быть присвоены три обязательных параметра, которые будут отдаваться во фронтенд (на страницу сайта):
- id или sku — уникальный идентификатор.
- price — реальная цена на сайте (для пользователя).
- margin_value — заранее рассчитанная искусственная ценность (наш кастомный Value).
Шаг 2. Настройка уровня данных (dataLayer) на сайте
Самый надежный и индустриальный стандарт передачи данных о действиях пользователей — использование объекта dataLayer. Программисту необходимо настроить отправку события в момент, когда система получает успешный ответ от формы покупки в один клик.
В этот объект мы передаем массив купленных товаров, но расширяем его нашим кастомным полем. Стоимость доставки сюда не включается.
Вот готовый пример кода, который должен отработать при успешном оформлении заказа:
(function() {
// 1. Инициализируем dataLayer, если CMS еще этого не сделала
window.dataLayer = window.dataLayer || [];
const originalPush = window.dataLayer.push;
// 2. Перехватываем метод push
window.dataLayer.push = function() {
let args = Array.from(arguments);
args = args.map(item => {
// Работаем только с объектами, где есть e-commerce Яндекс Метрики
if (item && item.ecommerce) {
try {
return processMarginValue(item);
} catch (e) {
console.error("Ошибка при обработке цены и маржи:", e);
}
}
return item;
});
// 3. Отправляем очищенные и измененные данные дальше (в Метрику)
return originalPush.apply(this, args);
};
function processMarginValue(eventObject) {
const eco = eventObject.ecommerce;
const actionType = Object.keys(eco)[0]; // Получаем тип (detail, add, purchase и т.д.)
if (!actionType || !eco[actionType]) return eventObject;
const actionData = eco[actionType];
// Обрабатываем массив товаров
if (actionData.products && Array.isArray(actionData.products)) {
actionData.products = actionData.products.map(product => {
// Проверяем наличие скрытого параметра margin_value
if (product.margin_value !== undefined) {
// Перезаписываем стандартное поле price значением искусственной ценности
product.price = Number(product.margin_value);
// Удаляем скрытое поле из объекта.
// Теперь Яндекс Метрика (и любой, кто смотрит в консоль после пуша) его не увидит.
delete product.margin_value;
}
return product;
});
}
// 4. КОРРЕКТИРОВКА ИТОГОВОЙ СУММЫ ЗАКАЗА (для события purchase)
// Если Метрика получит измененные цены товаров, но старую общую сумму — заказ не засчитается корректно.
if (actionType === 'purchase' && actionData.actionField) {
const totalRevenue = actionData.products.reduce((sum, prod) => {
const quantity = Number(prod.quantity) || 1;
return sum + (Number(prod.price) * quantity);
}, 0);
// Перезаписываем финальный чек на основе новых "цен" (margin_value)
actionData.actionField.revenue = Math.round(totalRevenue * 100) / 100;
}
return eventObject;
}
})();
Часть 4. Настройка Яндекс Метрики и Директа
После того как код внедрен на сайт, данные должны быть правильно интерпретированы рекламными системами Яндекса.
Шаг 2. Настройка рекламной кампании в Яндекс Директе
После создания цели совершите один тестовый заказ на сайте, чтобы Метрика зафиксировала событие и подтянула его структуру в базу. Через несколько часов цель станет доступна для выбора в рекламном кабинете Директа.
- Откройте настройки вашей e-com кампании (текстово-графические объявления, товарная кампания).
- В блоке Стратегия выберите Максимум конверсий.
- В поле «Ограничение расхода» выберите Доля рекламных расходов (ДРР).
- В выпадающем списке целей найдите нашу новую цель: Оформление заказа (Маржинальный Value).
- Установите целевое значение ДРР в процентах. Начните с комфортного для вашей юнит-экономики значения, например, 20%.
- Сохраните изменения.
Часть 5. Ожидаемые результаты и потенциальные подводные камни
Механика управления ставками через искусственную ценность кардинально меняет поведение алгоритма. Вот к чему нужно подготовиться:
1. Перераспределение трафика в первые 10-14 дней
В первые две недели после запуска стратегии вы заметите сильное перераспределение показов между товарами. Алгоритм Директа начнет нащупывать SKU с высоким переданным Value. Показы объявлений с высокомаржинальными товарами резко пойдут вверх, так как они начнут с легкостью выкупать до 90–95% объема целевого трафика в блоке премиум-показов. Низкомаржинальные позиции, напротив, просядут по охватам. Это абсолютно нормальный, целевой процесс — робот выполняет вашу задачу зарабатывать деньги, а не генерировать пустые просмотры.
2. Контроль за объемом данных
Для стабильной работы автостратегии Яндекса по ДРР критически важно получать не менее 10–15 конверсий в неделю по выбранной цели в рамках одной кампании (а лучше от 20–30). Если ваш интернет-магазин небольшой и заказов мало, объединяйте товарные категории в крупные сквозные кампании. Поскольку мы решили проблему контроля маржинальности на уровне кода, вам больше не нужно дробить кампании — вы можете смело объединять товары в один крупный пул. Алгоритм сам разберется, сколько ставить на каждый товар, ориентируясь на переданную ценность.
3. Регулярный пересчет коэффициентов
Помните, что себестоимость товаров у поставщиков, курсы валют и стоимость внутренней логистики — величины динамические. Если у вас изменилась закупочная цена на категорию товаров, обязательно обновите значения margin_value на сайте. В идеале этот процесс должен быть автоматизирован: раз в сутки скрипт на бэкенде вашего сайта должен забирать свежую маржу из учетной системы и пересчитывать массив Value для фронтенда.
Заключение
Переход на оптимизацию рекламы по маржинальной ценности — это качественный скачок для e-commerce проекта. Вы перестаете играть по правилам рекламных систем, которые стремятся просто освоить ваш бюджет под видом максимизации «абстрактной» выручки, и начинаете диктовать Директу жесткие правила вашей личной юнит-экономики.
Реализация этого метода требует пары часов работы маркетолога и одного рабочего дня толкового разработчика, но окупается механика уже в первый месяц за счет отсечения неэффективных затрат и кратного масштабирования продаж прибыльных товаров.