A/B-тест промокодов: как выбрать механику акции и не раздать маржу

Скидка 10%, бонусы или подарок к заказу — что принесет больше маржи? Разбираем методику A/B-теста промокодов: от гипотезы и выборки до подсчета uplift по деньгам.

Весы: карточка с символом процента и коробка с бантом, рядом календарь, письмо и график. 3D-иллюстрация

«Скидка 15% по промокоду» — ушло всей базе. Выручка за неделю подросла, финансист смотрит на маржу и хмурится, а на вопрос «какая часть покупателей пришла бы и без скидки» никто ответить не может. На следующий месяц акцию повторяют. Потому что «в прошлый раз сработало».

Мы в ClientCore регулярно разбираем промо-историю новых клиентов и почти всегда находим одно и то же: 20–40% промокодов активируют люди, которые купили бы и так. Дарья Касаткина, CRM-маркетолог ClientCore, помогла собрать рабочую методику: как протестировать механику акции до большого запуска и выбрать вариант, который приносит маржу.

ЧИТАЙТЕ ТАКЖЕ

«Блок рекомендаций дал +20% к кликам в тесте, а выручка не сдвинулась? Разбираем, как отделить эффект данных от эффекта шаблона в A/B-тестах персонализации.»

A/B-тест персонализации: как отделить эффект контента от эффекта шаблона

Скидка по привычке: откуда берутся потери

Механику акции обычно выбирают так: посмотрели на конкурентов, вспомнили, что «в прошлый раз вроде зашло», заложили 15%, потому что 20% — страшно, а 10% — «незаметно». Данных за этим решением нет.

Между тем разные механики работают на трех уровнях: конверсия в заказ, средний чек, маржа после вычета стоимости стимула. И уровни эти двигаются не синхронно. Скидка 20% может поднять конверсию на треть и одновременно уронить маржу на заказ почти в ноль. Подарок себестоимостью 250 рублей иногда дает тот же подъем конверсии, что скидка 15%, но съедает вдвое меньше маржи. Пока это не протестировано на вашей базе — любой выбор остается гаданием.

Иногда сильный стимул вообще лежит вне скидочной логики. В проекте для ресторана «Урюк» мы заменили привычную скидочную механику розыгрышем сертификатов через email: выручка от акции оказалась в 20,7 раза выше затрат на призовой фонд, плюс 2435 новых участников программы лояльности (кейс). Скидка раздает маржу всем участникам акции, розыгрыш — нескольким победителям, а азарт на конверсию работает не хуже.

Первое, что я прошу у нового клиента, — историю акций за полгода с маржой по каждой. Почти всегда находится кампания, которая „сработала" по выручке и ушла в минус по марже. После этого разговор про тесты идет легко: люди видят конкретную сумму, которую подарили покупателям».
Дарья Касаткина

Дарья Касаткина

CRM-маркетолог, ClientCore

Не знаете, сколько маржи съели прошлые акции?

Разберем вашу промо-историю и покажем, где вы платили за заказы, которые случились бы и без скидки

🇷🇺

Что тестировать: от механики к деталям

Тесты имеет смысл выстраивать в порядке убывания влияния на деньги.

Первый уровень — сама механика: процентная скидка против фиксированной суммы, бонусные баллы, подарок к заказу, бесплатная доставка, розыгрыш. Решение на этом уровне самое дорогое, и его почему-то тестируют реже всего.

Второй уровень — глубина стимула: 10% против 15%. Часто выясняется, что разница в конверсии минимальная, а в марже — ощутимая.

Третий уровень — условия: порог применения («от 3000 ₽»), срок жизни кода, ассортиментные ограничения.

Когда спрашивают, что тестировать в рассылках в первую очередь, я отвечаю: то, что бьет по марже напрямую. Тема письма влияет на открытия, механика — на то, сколько денег останется после акции. Бюджет тестов всегда ограничен размером базы, тратить его на кнопки стоит в последнюю очередь».
Дарья Касаткина

Дарья Касаткина

CRM-маркетолог, ClientCore

Норма
  • одна переменная на тест: скидка 15% против подарка при одинаковом письме, сегменте и дедлайне
  • гипотеза сформулирована и записана до запуска
  • у каждого варианта заранее посчитана стоимость стимула
Red flag
  • в тестовой ветке поменяли механику, тему письма и срок акции одновременно
  • гипотеза придумана задним числом под уже увиденный результат
  • тест запущен, «чтобы было», без решения, которое примут по итогам

Как собрать тест: выборка, контроль, длительность

Случайное распределение. Никаких «первых пяти тысяч по списку» — база в списке отсортирована не случайно, и ветки получатся разными по составу. В Mindbox это решается встроенным A/B-механизмом или рандомизацией внутри сценария.

Размер выборки. Ориентир: при конверсии в заказ около 1% и разнице, которую вы хотите поймать, в 20% относительных (с 1% до 1,2%), нужно порядка 20–25 тысяч получателей на ветку. Чем ниже базовая конверсия, тем больше требуется база. На маленькой базе тестируют контрастные различия: скидку против подарка, а не 10% против 12%.

Контрольная группа. Ветка без промокода вообще. Без нее вы узнаете, какой вариант сработал лучше, но не узнаете главного — нужен ли стимул как таковой.

Длительность. Срок действия кода плюс 3–7 дней на отложенные покупки, обычно это 2–4 недели. Остановка на третий день, потому что «один вариант явно лидирует», — классическое подглядывание: ранние реагирующие клиенты не репрезентативны.

Отдельно про техническую часть. Под настройку промокодов в Mindbox заводите отдельный пул для каждой ветки теста — тогда факт активации привяжется к варианту, даже если человек вернулся с другого устройства. Коды персональные, уникальные на клиента. Общий код вида SALE15 утекает на купонные агрегаторы и ломает чистоту эксперимента.

Клиент однажды принес результат теста: вариант Б победил с отрывом в 40%. Стали разбираться — общий код из ветки Б за неделю до этого опубликовал купонный сайт, и на него скупили всё подряд люди, которые рассылку вообще не получали. Персональные пулы в Mindbox закрывают эту дыру раз и навсегда».
Дарья Касаткина

Дарья Касаткина

CRM-маркетолог, ClientCore

Метрика теста: маржинальный uplift

Главная ловушка промокодных тестов — победитель по конверсии проигрывает по деньгам. Поэтому считаем так:

Маржинальный uplift = (маржа на получателя в тестовой ветке − маржа на получателя в контроле) / маржа на получателя в контроле.

Маржа ветки — это сумма по всем заказам: выручка минус себестоимость минус стоимость стимула (размер скидки или себестоимость подарка), деленная на число получателей ветки.

Пример с реалистичной арифметикой. Ветка А — скидка 15%: конверсия 2,1%, средний чек 4200 ₽, маржинальность 35%. Ветка Б — подарок себестоимостью 280 ₽ с порогом от 4000 ₽: конверсия 1,9%, чек 4400 ₽. Контроль: конверсия 1,4%, чек 4100 ₽. Считаем на 1000 получателей:

  • контроль: 14 заказов × 4100 × 0,35 = 20 090 ₽ маржи;
  • ветка А: 21 × 4200 × 0,35 = 30 870 ₽ минус скидки 13 230 ₽ = 17 640 ₽ — хуже контроля;
  • ветка Б: 19 × 4400 × 0,35 = 29 260 ₽ минус подарки 5320 ₽ = 23 940 ₽ — uplift +19%.

По конверсии победила скидка. По деньгам — подарок, а скидка ушла в минус относительно контрольной группы. Такие развороты на практике случаются регулярно, поэтому единственная метрика, по которой стоит выбирать механику, — маржа на получателя.

Норма
  • решение принимается после закрытия окна атрибуции
  • стоимость стимула вычтена из маржи, а не забыта в выручке
  • есть контрольная группа без стимула
Red flag
  • победитель выбран по конверсии в заказ
  • результат снят через три дня, «пока горячо»
  • в расчете фигурирует только выручка от промокода

Ошибки, которые убивают выводы

Смешанные сегменты. Если в ветки попали вперемешку новые подписчики и лояльные клиенты, результат усреднится до бессмыслицы: их реакция на скидку различается в разы. Решение — стратификация при распределении или отдельные тесты по RFM-сегментам.

Каннибализация. Промокод забрали те, кто купил бы завтра за полную цену. Без контрольной группы этот перекос невиден — выручка ветки выглядит красиво, а прироста нет.

Ранняя остановка. Об этом выше, но повторимся: пик активности первых дней не равен итоговому результату.

Приучение базы к скидкам. Долгосрочный эффект, который не виден в рамках одного теста. Если акции идут каждые две недели, доля покупок «только по промо» ползет вверх, а полноценные продажи проседают.

Самый коварный эффект — приучение. У одного ритейлера доля заказов по промокодам за год выросла с 18% до 54%: база просто научилась ждать скидку. Отучали полгода — растягивали интервалы, переводили скидки в бонусы и персональные предложения. Теперь в каждый план тестов я закладываю контрольный замер доли промо-заказов раз в квартал».
Дарья Касаткина

Дарья Касаткина

CRM-маркетолог, ClientCore

Результат теста — это актив

Тест, по итогам которого ничего не записали, через полгода придется проводить заново. Фиксируйте: гипотезу, сегмент, выборку, срок, цифры по веткам и принятое решение. Это база знаний, которая копится и экономит бюджет каждого следующего запуска.

Победившую механику внедряйте в регулярные кампании, но смотрите на результат в разрезе сегментов — часто победитель для «спящих» клиентов и для лояльных разный. В проекте MINIDINO мы пересобрали рассылки с упором на точность сегментов вместо охвата и получили +110% к эффективности email за квартал (кейс). С промокодами логика та же: механика, которая реанимирует «спящего» клиента, лояльному просто раздает маржу.

Планируйте повторные тесты. Эффект механик выгорает, база меняется, прошлогодний победитель через год может оказаться аутсайдером. Рабочий формат — план тестов на квартал вперед: 2–3 гипотезы по механикам, одна по глубине стимула.

ЧИТАЙТЕ ТАКЖЕ

«Uplift-расчёт на практике: формулы с контрольной группой, counterfactual-модели и ошибки пост-периода, которые завышают прирост в отчёте.»

Uplift-расчет: формулы прироста для коммуникаций и типичные ошибки оценки

Нет ресурса вести тесты системно?

Возьмем цикл A/B-тестов промокодов на себя: гипотезы, пулы в Mindbox, расчет маржинального uplift и понятные выводы для бизнеса

🇷🇺

Часто задаваемые вопросы

Сколько контактов нужно для A/B-теста промокодов?

Зависит от базовой конверсии и разницы, которую хотите поймать. При конверсии в заказ около 1% и целевой разнице в 20% относительных — порядка 20–25 тысяч получателей на ветку. Если база меньше, тестируйте контрастные варианты (скидка против подарка) и копите данные несколькими волнами рассылок.

Как долго должен длиться тест?

Минимум — срок действия промокода плюс 3–7 дней на отложенные покупки. На практике это 2–4 недели. Останавливать тест раньше из-за «очевидного лидера» — значит принять шум за сигнал.

Что делать, если разница между вариантами в пределах погрешности?

Это тоже результат: механики для вашей базы равнозначны, выбирайте более дешевую в реализации. Второй вариант — разница есть, но выборка ее не ловит. Тогда повторите тест на другом сегменте или с более контрастными вариантами.

Можно ли тестировать промокоды в триггерных письмах?

Да, и часто это удобнее массовых рассылок: триггерная цепочка стабильна, ветки в Mindbox делятся автоматически, данные копятся непрерывно. Минус — скорость: трафик в триггере ограничен, на статистически чистый результат уйдет месяц-два.

Над проектом работали

Дарья Касаткина

Дарья Касаткина

CRM-маркетолог, ClientCore