Настройка триггера снижения цены на просмотренный товар в Битрикс

Пользователь посмотрел товар три раза за два дня — явный сигнал интереса. Но покупки нет. Стандартные email-рассылки с напоминанием дают конверсию 2-3%. Автоматическое снижение цены через 24-48 часов после просмотра или отправка персонального купона конвертирует до 15% таких пользователей. В Битрикс
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка триггера снижения цены на просмотренный товар в Битрикс
Простой
~1 день

Наши компетенции:

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

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1458
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    880
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    805
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1163

Пользователь посмотрел товар три раза за два дня — явный сигнал интереса. Но покупки нет. Стандартные email-рассылки с напоминанием дают конверсию 2-3%. Автоматическое снижение цены через 24-48 часов после просмотра или отправка персонального купона конвертирует до 15% таких пользователей. В Битрикс это реализуется через модуль маркетинга и обработчик событий. Мы настраиваем такой триггер под ключ за 3-5 рабочих дней. Получите консультацию по вашему проекту. За 10 лет опыта мы реализовали десятки подобных решений. Используем проверенные паттерны с HL-блоками и агентами.

Фиксация просмотров

Просмотры товара пишутся в таблицу HL-блока. Стандартный модуль статистики (b_stat_page_event) не подходит — нужна связь конкретного пользователя с конкретным товаром. Upsert-запрос обновляет счётчик и дату, исключая дублирование:

// /local/lib/Tracking/ProductViewTracker.php namespace Local\Tracking; class ProductViewTracker { public static function track(int $userId, int $productId): void { if ($userId <= 0) return; // только авторизованных $conn = \Bitrix\Main\Application::getConnection(); // Upsert: обновляем счётчик и дату последнего просмотра $conn->queryExecute(" INSERT INTO b_uts_product_view (UF_USER_ID, UF_PRODUCT_ID, UF_VIEW_COUNT, UF_LAST_VIEW, UF_TRIGGER_SENT) VALUES ({$userId}, {$productId}, 1, NOW(), 'N') ON DUPLICATE KEY UPDATE UF_VIEW_COUNT = UF_VIEW_COUNT + 1, UF_LAST_VIEW = NOW() "); } } 

Вызывать в компоненте карточки товара, в result_modifier.php:

// /local/templates/.default/components/bitrix/catalog.element/main/result_modifier.php global $USER; if ($USER->IsAuthorized()) { \Local\Tracking\ProductViewTracker::track( (int)$USER->GetID(), (int)$arResult['ID'] ); } 

Как работает агент-триггер?

Агент запускается раз в час, ищет пользователей с подходящими условиями и применяет скидку:

namespace Local\Marketing; class PriceDropTriggerAgent { public static function run(): string { $conn = \Bitrix\Main\Application::getConnection(); // Товары, просмотренные 2+ раз, без покупки, 24+ часов назад $candidates = $conn->query(" SELECT pv.UF_USER_ID, pv.UF_PRODUCT_ID, pv.UF_VIEW_COUNT FROM b_uts_product_view pv LEFT JOIN b_sale_basket sb ON sb.USER_ID = pv.UF_USER_ID AND sb.PRODUCT_ID = pv.UF_PRODUCT_ID AND sb.ORDER_ID IS NOT NULL WHERE pv.UF_VIEW_COUNT >= 2 AND pv.UF_LAST_VIEW < DATE_SUB(NOW(), INTERVAL 24 HOUR) AND pv.UF_TRIGGER_SENT = 'N' AND sb.ID IS NULL LIMIT 50 "); while ($row = $candidates->fetch()) { self::applyDiscount($row['UF_USER_ID'], $row['UF_PRODUCT_ID']); // Помечаем, чтобы не применять повторно $conn->queryExecute(" UPDATE b_uts_product_view SET UF_TRIGGER_SENT = 'Y' WHERE UF_USER_ID = {$row['UF_USER_ID']} AND UF_PRODUCT_ID = {$row['UF_PRODUCT_ID']} "); } return '\Local\Marketing\PriceDropTriggerAgent::run();'; } private static function applyDiscount(int $userId, int $productId): void { // Создаём персональный купон через модуль маркетинга $couponCode = 'VIEW_' . strtoupper(substr(md5($userId . $productId . time()), 0, 8)); \CCatalogDiscountCoupon::Add([ 'DISCOUNT_ID' => VIEWED_PRODUCT_DISCOUNT_ID, // ID заранее созданной скидки 10% 'CODE' => $couponCode, 'ONE_TIME' => 'Y', // одноразовый 'ACTIVE' => 'Y', 'ACTIVE_FROM' => new \Bitrix\Main\Type\DateTime(), 'ACTIVE_TO' => \Bitrix\Main\Type\DateTime::createFromTimestamp(time() + 86400 * 3), 'MAX_USE' => 1, ]); // Привязываем купон к пользователю через HL-блок PersonalCouponRepository::save($userId, $productId, $couponCode); // Email пользователю self::sendEmail($userId, $productId, $couponCode); } } 

Почему агент запускается раз в час?

Частота выбрана не случайно. Интервал менее 30 минут создаёт избыточную нагрузку на базу при большом количестве просмотров. Раз в час — баланс между своевременностью и производительностью. При необходимости можно изменить крон-задачу до 15 минут для высоконагруженных проектов.

Скидка через модуль маркетинга

Базовая скидка создаётся один раз через административный интерфейс (Маркетинг → Скидки) или через API:

\CCatalogDiscount::Add([ 'NAME' => 'Персональная скидка на просмотренный товар', 'LID' => SITE_ID, 'ACTIVE' => 'Y', 'VALUE' => 10, // скидка 10% 'VALUE_TYPE' => 'P', 'COUPON_TYPE' => 'U', // только с купоном 'SORT' => 300, 'PRIORITY' => 1, ]); 

Идентификатор этой скидки прописывается в константу VIEWED_PRODUCT_DISCOUNT_ID.

Как избежать повторного применения скидки?

Поле UF_TRIGGER_SENT в HL-блоке блокирует повторную обработку. После выдачи купона агент больше не обрабатывает эту пару пользователь-товар. Дополнительно проверяется наличие заказа — если пользователь уже купил товар, триггер не срабатывает.

Почему важно чистить старые записи?

Таблица просмотров может разрастись до миллионов строк. Раз в неделю агент удаляет записи старше 30 дней с отправленным триггером. Это ускоряет выборку и снижает нагрузку на базу.

Процесс работы

  1. Аналитика: определяем условия триггера (количество просмотров, временной порог, размер скидки).
  2. Прототипирование: создаём HL-блок, настраиваем агент, тестовый сценарий.
  3. Разработка: пишем код трекера, агента, генерации купонов.
  4. Тестирование: проверка на тестовом товаре, логирование, корректировка.
  5. Деплой и мониторинг: запуск, наблюдение за конверсией.

Что входит в работу

  • Разработка и интеграция трекера просмотров
  • Создание агента с гибкими условиями
  • Настройка персональных купонов
  • Email-уведомления (опционально)
  • Документация и передача доступов
  • Гарантия 30 дней на корректную работу

Сроки ориентировочно

Этап Срок
Аналитика и прототип от 1 дня
Разработка от 2 дней
Тестирование и деплой от 1 дня
Итого от 3 до 5 дней

Стоимость рассчитывается индивидуально. Оценим ваш проект бесплатно — просто свяжитесь.

Интеграция с email-уведомлениями

Email-уведомление о скидке — критическая часть воронки. Без письма купон лежит в базе, пользователь о нём не знает. Шаблон создаётся в почтовых событиях 1С-Битрикс (Маркетинг → Почтовые события). В шаблон подставляются: название товара, фото, новая сумма скидки, код купона и прямая ссылка на карточку.

Оптимальная цепочка: первое письмо сразу после выдачи купона, второе — через 24 часа с напоминанием «купон истекает через 48 часов». Такая цепочка повышает итоговую конверсию с 10–15% до 18–22%.

Типичные ошибки при настройке триггера

  • Слишком малый порог просмотров (1 вместо 2–3): купоны получают случайные посетители без реального намерения купить.
  • Отсутствие проверки на существующий заказ: пользователь уже купил товар, но получает купон — лишняя скидка.
  • Нет ограничения по частоте повторной выдачи: один пользователь может получить купон на тот же товар несколько раз.
  • Не чистятся старые записи: таблица просмотров разрастается, выборка замедляется.

Сравнение механик конверсии

Механизм Конверсия Сложность внедрения
Email-напоминание 2-3% Низкая
Персональный купон 10-15% Средняя
Автоматическая скидка в корзине 8-12% Высокая

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