Исходные данные
- Штатный функционал интернет-магазина Битрикс
- Персональные скидки для:
- юридических лиц
- физических лиц
- Акции
- Старая добрая
зачеркнутая цена
Клиенты часто приходят к нам с разными запросами по реализации программ лояльности, логике работы скидок и наличия акционных предложений внутри сайта. Очень хорошо, когда человек знает свою аудиторию, не первый день продает в интернете и в целом знаком с механиками, что называется на практике. Но что делать, если бизнес только вышел в интернет, идей много, почву прощупать нужно? Да еще и аппетит приходит во время еды. Добавьте сюда стремление автоматизировать как можно больше аспектов работы интернет ресурса. Да и ковыряться в том, что есть, меняя уже устоявшиеся правила работы, для того, чтобы сайт работал - хочется далеко не всем.
С таким кейсом, проблемами реализации и подводными камнями, я сегодня вас познакомлю.
Штатный функционал
Как всегда это происходит в нашей компании, при разработке сайта с нуля, начали с проектирования будущего интернет-магазина и написания технического задания. Когда речь зашла о системе скидок, единственным пожеланием клиента было разделение пользователей. Достаточно просто спрашивать при регистрации “Вы чьих будете?” и определять пользователя в нужную группу. А исходя из группы, показывать нужные цены.
(При регистрации клиенты делятся на две группы: “физические” и “юридические” лица.)
Уже на этом этапе возникли трудности.
Первая, у клиента старая версия 1С, которая не имеет интеграции с Битрикс в стандартном виде. Переходить на новые версии - значит обучать заново персонал, к чему персонал не готов и настроен крайне отрицательно. Пытаться интегрировать - дорого.
Вторая, в 1С в принципе заведена только одна цена - розничная. Разделять и дописывать еще 2 типа с повышающими коэффициентами - долго.
Выход:
- Налаживаем обмен номенклатурой 1С -> Сайт. Обрабатываем пришедшие данные, проверяем, радуемся, вешаем задание на крон.
- Пишем скрипт, который на входе ловит цену товара, перемножает на повышающий коэффициент, а далее заносит в нужные места.
В итоге получаем разные цены для разных групп пользователей, каталог их показывает, в корзине всё считается, оформляет заказ корректно.
Для реализации всяческих акций, после обсуждения, было принято решение использовать правила работы с корзиной и предустановленный список маркетинговых акций. Штатный функционал битрикса покрывает достаточно широкий спектр потребностей. По крайней мере, для MVP (минимальной жизнеспособной версии проекта) этого вполне достаточно.
Персональные скидки
Клиентоориентированность - наше всё. И тут не важно, большой у вас бизнес или маленький. Любому человеку приятно чувствовать, что его помнят, его проблемы решают и работают с ним, как будто он единственный покупатель вашего магазина. У каждого магазина есть свои постоянные покупатели, с которыми партнерские отношения хочется продолжать и хочется быть к ним лояльнее.
А чем можно продемонстрировать свою лояльность? Конечно же персональными скидками! Помните, выше мы говорили о том, что завели два типа цен для групп пользователей? А получится ли сделать по той же схеме? Давайте сперва разберемся с понятиями.
Персональные цены можно настроить для любого товара, для любого зарегистрированного пользователя. На сайте или в 1С указывается конечная цена товара для конкретного клиента.
В каталоге это будет выглядеть, как обычная цена: | А персональная скидка выводится так: |
Нам нужно именно демонстрировать скидку. Поэтому вариант с ценами не подходит. Да и нет у нас их нигде, в 1С только базовая, которую мы потом пересчитываем и раскидываем по двум группам.
Напрашивается вариант решения, который используют многие вендоры. Создаем несколько групп пользователей с процентом скидки. Например:
vip1 | -5% |
vip2 | -10% |
vip3 | -15% |
vip4 | -20% |
vip5 | -25% |
Материал для руководителя по маркетингу
12 + лет работаем с руководителями по маркетингу
Мы работаем с руководителями по маркетингу и их помощниками более 12 лет и отлично понимаем, с какими проблемами и задачами вы сталкиваетесь.
Специально для вас, мы подготовили материалы, которые помогут вам в вашей работе с онлайн-проектами. Какое-то время мы будем раздавать их бесплатно, но скоро уберем их из открытого доступа.
в Телеграме
способов привлечения клиентов
плана на 3 месяца
Увеличиваем количество групп в 2 раза, просто потому что у нас уже есть деление на юридических лиц и физических и вроде должно работать. Но… не было бы этого кейса, если бы всё было так гладко.
Вдруг откуда ни возьмись… Появились новые идеи!
- Персональные скидки для юридических лиц, должны быть действительно персональными. И пустить их под гребенку условных 5 групп пользователей мы не можем.
- Для физических лиц должна быть своя программа лояльности, для которой кстати, группы как раз-таки можно и нужно использовать.
Значит разберем по очереди.
Персональные скидки для юридических лиц
Компания “Ноунейм и партнеры” часто покупает товары бренда “А”, за это мы его и любим. Поэтому Ноунейм получает 30% скидки на бренд “А”. Но его партнеры еще чаще, но в меньших объемах просят заказать что-то еще, чем несомненно помогают нашему магазину. Поэтому нужно раскидать “на что-то еще” еще скидочек.
…И таких “Ноунеймов с партнерами” в нашем примере были сотни.
В целом задача ясна, но стандартными методами ее не решить. Начинаем декомпозировать. Было бы начало, будет и конец.
Скидки должны где-то храниться. Будь то инфоблок, хайлоад блок или даже кастомизировать правила работы с корзиной.
Создание интернет-магазинов
под ключ
Двигаемся дальше. Что там с правилами корзины? Отлично, функционал есть, он даже удовлетворяет нашим хотелкам, касаемо логики предоставления скидки. Скидка должна предоставляться конкретному пользователю из группы “юридические лица” и предоставляться на определенные бренды. Проблема, которую данный метод решить не может - отображение скидки в общем каталоге.
В таком виде персональные скидки не работают в общем каталоге, а это обязательное условие, пересчет только в корзине - не наш вариант, клиент должен сразу видеть сколько он заплатит за каждый товар. Так же невозможно выполнять сортировку и фильтрацию, поскольку цены считаются для каждого клиента на лету. А отключать кеширование и ждать загрузки страницы десятки секунд, просто смерти подобно, ваш сайт никогда не проиндексируется должным образом, а соответственно все деньги, вложенные в разработку - просто так потраченные деньги.
Вариант с инфоблоком откинули сразу, ибо для наших целей упрощенные таблицы highload блока подходят лучше. Снова лезем в 1С для того, чтобы организовать выгрузку. Что нам нужно?
- id пользователя
- собственно бренд, на который идет скидка
- процент скидки
Выгружаем. Помните я говорил, что условий много?
Дело за малым…
- Не убить скорость загрузки страниц каталога
- Не забыть, что часть загрузок отдана ajax-у (фильтр, теги, пагинация)
- Передавать корректные цены в заказ
Валера! Front-end! Настало твое время!
Чтобы бы не отключать кеширование компонента, выбираем вариант откладывать показ цен (или выводим общую, без скидки). То есть в начале выводим цены без скидки, а после загрузки страницы запрашиваем js-ом новые цены по нашим условиям и выводим уже их (либо по отдельности по товару, либо собираем все ID товаров в блоке, и выполняем запрос, если есть ТП). И кроме отдельного запроса JS, после загрузки страницы, запрашиваем/подменяем цену в component_epilog.php - а далее заменяем в сгенерированном шаблоне.
И да, это работает! Наверное вы немного устали, но дальше будет проще, обещаю.
Персональные скидки для физических лиц
Пороги закупки | Процент скидки |
25001р - 50000р | 10 |
15001р - 25000р | 5 |
5001р - 15000р | 3 |
1001р - 5000р | 1 |
0р - 1000р | 0 |
Самое сложное мы прошли, пытаясь выстроить работы скидок для юридических лиц и не убить индексацию. Тут действительно всё намного проще:
Разработчики Битрикса позаботились о пользователях и сделали функционал предустановленных маркетинговых акций! Настраивается все в дружественном интерфейсе, просто и понятно. Назначается группа пользователей для которых программа должна работать, можно пользоваться, этап пройден!
На текущий момент сайт запущен, работает в тестовом режиме - lamps.ru.