Когда клиент откладывает покупку, ожидая скидки, важно не потерять его интерес. Уведомления о снижении цен на избранные товары помогают вовремя сообщать пользователям о выгодных предложениях, возвращая их на сайт и стимулируя продажи. В статье мы расскажем, как настроить такую функцию в 1С-Битрикс.
Автоматизация проверки цен на избранные товары
Проверку цен на избранные товары лучше автоматизировать. Варианты есть разные, рассмотрим основные.
Логика обработки «избранных товаров»
Использование стандартных функций 1С-Битрикс для работы с «избранным»
В 1С-Битрикс встроена возможность работы с избранными товарами, так что настроить проверку достаточно просто. «Избранное» обычно создается на базе механизма пользовательских отложенных данных, которые остаются в корзине или заносятся в специальную пользовательскую таблицу.
Это позволяет легко сохранять и извлекать данные о товарах, которые пользователь отметил как интересные. Вам не нужно разрабатывать сложную логику с нуля — достаточно правильно настроить инструменты платформы.
Основные преимущества стандартного подхода:
- Простая интеграция с корзиной и личным кабинетом. 
- Поддержка стандартных API для управления «избранным». 
- Возможность кастомизации отображения и обработки данных под нужды бизнеса. 
Получение списка товаров, добавленных клиентами в «избранное»
Для получения списка товаров из «избранного» можно использовать встроенные методы и классы 1С-Битрикс, такие как `CSaleBasket::GetList` (если избранное связано с корзиной) или собственные таблицы данных, если реализована кастомная логика.
Пример алгоритма:
- Сначала определяем текущего авторизованного пользователя или используем идентификатор сессии для неавторизованных клиентов. 
- С помощью методов API или SQL-запросов получаем список товаров, отмеченных клиентом как «избранное». 
- Привязываем данные о товарах (например, ID, названия, текущую цену) к визуальному представлению в личном кабинете или на странице «избранного». 
- Проверяем актуальность данных (например, наличие товара и его цену), чтобы пользователь видел только актуальные предложения. 
Учитывайте, что важно настроить логику так, чтобы данные «избранного» были корректно связаны с личным кабинетом клиента и могли использоваться для последующих уведомлений о снижении цен.
Написание PHP-скрипта для проверки изменений цен
Обращение к базе данных каталога товаров
Первый шаг в разработке скрипта — это подключение к базе данных, где хранятся данные о товарах. В 1С-Битрикс стандартно используется модуль Инфоблоков, и информация о товарах доступна через методы API, например, `CIBlockElement::GetList`.
Пример запроса:
$arSelect = ["ID", "NAME", "CATALOG_GROUP_1"]; // Поля, которые нужно получить 
$arFilter = ["IBLOCK_ID" => $catalogId, "ACTIVE" => "Y"]; 
$res = CIBlockElement::GetList([], $arFilter, false, false, $arSelect); 
while ($item = $res->Fetch()) { 
	$products[$item['ID']] = [ 
    	'NAME' => $item['NAME'], 
    	'PRICE' => $item['CATALOG_PRICE_1'], // Текущая цена 
	]; 
}Эти данные формируют базу для сравнения цен с предыдущими значениями.
Логика сравнения текущих цен с предыдущими значениями
Для отслеживания изменений необходимо сохранять данные о предыдущих ценах. Обычно эту информацию заносят в отдельную таблицу в базе данных или в кастомный инфоблок.
Пример логики:
- Запрашиваем актуальные цены товаров (как показано выше). 
- Получаем данные из таблицы с историей цен и сравниваем текущую цену с сохраненной: 
if ($currentPrice < $oldPrice) { 
	$changedPrices[] = [ 
    	'ID' => $productId, 
    	'NAME' => $productName, 
    	'OLD_PRICE' => $oldPrice, 
    	'NEW_PRICE' => $currentPrice, 
    ]; 
} 3. Если цена изменилась, обновляем запись в таблице исторических цен.
Формирование списка товаров с измененными ценами для каждого пользователя
Чтобы уведомлять пользователей, необходимо сопоставить изменившиеся товары с их «избранным».
- Используем стандартные методы API или SQL-запрос для получения списка «избранных» товаров по каждому пользователю. 
$userFavorites = getUserFavorites($userId); // Ваша функция для получения "избранного" 2. Проверяем на пересечение с измененными товарами.
foreach ($userFavorites as $productId) { 
	if (isset($changedPrices[$productId])) { 
    	$userNotifications[] = $changedPrices[$productId]; 
	} 
} Формирование уведомлений.
Для каждого пользователя создаем список уведомлений и сохраняем его для дальнейшей отправки (например, по e-mail или через внутренние уведомления).
foreach ($userNotifications as $notification) { 
	echo "Товар {$notification['NAME']} подешевел с {$notification['OLD_PRICE']} до {$notification['NEW_PRICE']}.<br>"; 
} Этот скрипт станет основой для автоматизации процесса уведомления клиентов о снижении цен.
Настройка планировщика заданий (cron)
Регулярный запуск скрипта проверки цен
Чтобы уведомления о снижении цен работали автоматически, необходимо регулярно запускать скрипт проверки цен. Это можно сделать с помощью планировщика задач cron, который доступен на большинстве серверов с ОС Linux.
Оптимальная частота запуска скрипта зависит от особенностей вашего интернет-магазина. Если цены изменяются редко, достаточно запускать скрипт раз в месяц. Для более динамичных изменений (например, в период акций) запуск проводится ежедневно или еженедельно.
Выбирайте время, когда нагрузка на сервер минимальна, например, ночью.
Пример команды для настройки cron
Чтобы настроить cron, выполните следующие шаги:
- Создайте PHP-скрипт. Убедитесь, что ваш скрипт проверки цен доступен для выполнения, например, он находится по пути /var/www/html/scripts/check_prices.php. 
- Откройте редактор cron. В терминале выполните команду: crontab -e 
- Добавьте задание для cron. Укажите, как часто и какой скрипт нужно запускать. Например, для запуска скрипта раз в месяц: 
0 3 1 * * /usr/bin/php /var/www/html/scripts/check_prices.php Здесь:
- 0 3 1 * * — расписание выполнения задания: в 3:00 первого числа каждого месяца. 
- /usr/bin/php — путь к интерпретатору PHP на вашем сервере. 
- /var/www/html/scripts/check_prices.php — полный путь к вашему скрипту. 
Сохраните изменения. После выхода из редактора cron задание появится в очереди.
Проверьте работу cron. Убедитесь, что задание выполняется корректно, например, настроив логирование результатов выполнения скрипта. Для этого можно добавить перенаправление вывода:
0 3 1 * * /usr/bin/php /var/www/html/scripts/check_prices.php >> /var/log/check_prices.log 2>&1Работу скрипта проверяйте вручную. Перед добавлением задания в cron убедитесь, что скрипт выполняется без ошибок. Помните о контроле нагрузки. Регулярный запуск тяжёлого скрипта нагружает сервер, поэтому выбирайте подходящее время и частоту выполнения. Используйте логи. Они помогут проконтролировать, была ли выполнена задача, и выявить возможные ошибки.
Настройка отправки уведомлений
Проще всего рассылать уведомления через API-платформу МТС Exolve. В такой интеграции есть ряд очевидных плюсов:
- Exolve объединяет различные каналы связи. 
- Платформа обеспечивает хранение клиентских данных на вашей стороне, исключая возможность их копирования сторонними сервисами, что повышает доверие клиентов. 
- С помощью Exolve можно создавать имя отправителя для отправки SMS, настроить обращение к клиентам по имени, что усиливает лояльность и повышает вероятность покупки. 
- Платформа предоставляет детализированные отчёты по доставке сообщений, позволяя анализировать эффективность и своевременно реагировать на сбои. 
- В случае возникновения проблем с доставкой сообщений система продолжает попытки отправки, обеспечивая высокую вероятность того, что клиент получит уведомление. 
Начните с регистрации на платформе, получите ключ доступа (токен). После этого можно продолжить настройку.
Интеграция МТС Exolve с 1С-Битрикс
Поскольку готового модуля нет, придётся написать собственный клиент для работы с API платформы Exolve. Для этого вам потребуется:
· Изучить документацию Exolve для работы с API.
· Использовать стандартные функции PHP для отправки запросов (`curl` или `file_get_contents`).
Пример настройки подключения с использованием токена для API
Для работы с API Exolve требуется авторизация с помощью токена. Пример кода для подключения:
<?php 
// Токен, полученный в личном кабинете Exolve 
$apiToken = "ваш_токен"; 
 
// URL для отправки запросов 
$apiUrl = "https://api.exolve.ru/v1/messages"; 
 
// Данные для отправки сообщения 
$data = [ 
    "to" => "+79161234567",  // Номер получателя 
    "message" => "Цена на ваш избранный товар снижена! Проверьте наш сайт.", 
]; 
 
// Настройка cURL 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $apiUrl); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); 
curl_setopt($ch, CURLOPT_HTTPHEADER, [ 
	"Authorization: Bearer $apiToken", 
	"Content-Type: application/json", 
]); 
 
// Отправка запроса и получение ответа 
$response = curl_exec($ch); 
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
 
curl_close($ch); 
 
// Обработка ответа 
if ($httpCode == 200) { 
    echo "Сообщение успешно отправлено!"; 
} else { 
    echo "Ошибка: $response"; 
} 
?> 
Рекомендации по интеграции
- Сохраняйте токен в конфигурационном файле или переменной среды для безопасности. 
- Реализуйте обработку ошибок для повторной отправки сообщений при сбоях. 
- Перед запуском на боевой сервер убедитесь, что API корректно обрабатывает ваши запросы. 
Отправка SMS-уведомлений
SMS-уведомление – надёжный способ донести до клиента нужную информацию. Но важно, чтобы само сообщение автоматически составлялось правильно. Разберём основные моменты.
Генерация персонализированных сообщений с данными о снижении цен
Для привлечения внимания клиентов важно персонализировать сообщения. Например, можно указать название товара, старую и новую цену, а также добавить ссылку для быстрой покупки.
Пример структуры персонализированного сообщения:
Здравствуйте, {Имя}! Цена на {Название товара} снизилась с {Старая цена} до {Новая цена}. Успейте купить! Подробнее: {Ссылка}
Персонализацию можно реализовать, подставляя данные из базы:
- имя пользователя; 
- название товара из «избранного»; 
- разницу между старой и новой ценой; 
- ссылку на товар в интернет-магазине. 
Пример кода для отправки SMS с использованием библиотеки cURL
Формирование API-запроса
Предположим, что вы используете API для отправки SMS (например, через МТС Exolve). Вот пример кода:
<?php 
// Токен авторизации, предоставленный API 
$apiToken = "ваш_токен"; 
// URL для отправки SMS 
$apiUrl = "https://api.exolve.ru/v1/messages"; 
// Данные для SMS 
$userPhone = "+79161234567"; 
$userName = "Иван"; 
$productName = "Смартфон X"; 
$oldPrice = "25,000 руб."; 
$newPrice = "20,000 руб."; 
$link = "https://example.com/product/123"; 
$message = "Здравствуйте, $userName! Цена на \"$productName\" снизилась с $oldPrice до $newPrice. Подробнее: $link"; 
// Формирование запроса 
$data = [ 
	"to" => $userPhone, 
	"message" => $message, 
]; 
// Настройка cURL 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $apiUrl); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); 
curl_setopt($ch, CURLOPT_HTTPHEADER, [ 
	"Authorization: Bearer $apiToken", 
	"Content-Type: application/json", 
]); 
// Отправка запроса и получение ответа 
$response = curl_exec($ch); 
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
curl_close($ch); 
?> Обработка ошибок при отправке
Чтобы обеспечить надёжность доставки, важно правильно обрабатывать возможные ошибки:
if ($httpCode == 200) { 
    echo "Сообщение успешно отправлено!"; 
} else { 
    // Логирование ошибки 
    error_log("Ошибка отправки SMS: Код ответа $httpCode. Ответ: $response"); 
 
    // Уведомление администратора (при необходимости) 
    echo "Не удалось отправить сообщение. Пожалуйста, проверьте логи."; 
} Интеграция с CRM для анализа результатов
Интегрировав систему уведомлений о снижении цен с CRM, можно быстро фиксировать и анализировать результаты взаимодействия с клиентами. Посмотрим, как интеграция может выглядеть на практике.
Передача данных о переходах и продажах
Использование UTM-меток в ссылках для отслеживания переходов
Чтобы отслеживать эффективность рассылок, стоит добавить UTM-метки к ссылкам на товары. Они покажут, откуда пришел пользователь, и какие действия он совершил.
Пример ссылки с UTM-метками:
https://example.com/product/123?utm_source=sms&utm_medium=notification&utm_campaign=price_drop
Каждая метка имеет свое назначение:
- utm_source – источник трафика (например, SMS). 
- utm_medium – тип канала (например, notification). 
- utm_campaign – название кампании (например, price_drop). 
Добавлять метки можно автоматически, если ссылки формируются скриптом. Это обеспечит точный учет переходов в Google Analytics и Яндекс.Метрике.
Автоматическая передача данных в CRM
Для анализа не только переходов, но и продаж, надо автоматически передавать данные в CRM. Это реализуется через REST API 1С-Битрикс:
- При каждом клике на ссылку с UTM-метками фиксируйте данные пользователя (например, номер телефона или ID) и товар, на который он перешел. 
- Используйте передачу данных через REST API 1С-Битрикс для создания лидов или обновления информации о клиенте. Пример кода для передачи данных: 
<?php 
// Адрес вашего портала и токен доступа 
$bitrixUrl = "https://example.bitrix24.ru/rest/1/your_webhook/"; 
$leadData = [ 
    "fields" => [ 
        "TITLE" => "Переход по уведомлению", 
        "NAME" => "Иван", 
    	"PHONE" => [["VALUE" => "+79161234567", "VALUE_TYPE" => "MOBILE"]], 
    	"UTM_SOURCE" => "sms", 
    	"UTM_MEDIUM" => "notification", 
    	"UTM_CAMPAIGN" => "price_drop", 
        "COMMENTS" => "Пользователь перешел по ссылке на товар 'Смартфон X'", 
    ] 
]; 
// Запрос к API 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $bitrixUrl . "crm.lead.add"); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($leadData)); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($ch); 
curl_close($ch); 
if ($response) { 
    echo "Данные успешно переданы в CRM!"; 
} else { 
    echo "Ошибка передачи данных."; 
} 
?> В CRM будут отображаться данные о каждом переходе, что позволит отслеживать, какие уведомления привели к продажам.
Анализ статистики
Отчеты о количестве отправленных SMS и их доставке
Для оценки эффективности уведомлений важно регулярно анализировать статистику отправленных SMS. Основные метрики, на которые стоит обращать внимание:
- Общее количество отправленных сообщений. Это позволяет понять охват аудитории. 
- Процент успешной доставки. Он показывает, сколько SMS дошло до клиентов. Это важно для выявления возможных технических проблем, таких как некорректные номера. 
Если вы используете платформу для отправки SMS, отчеты о доставке можно получить через API или в личном кабинете. Например, API может предоставить следующие данные:
- Статус доставки сообщений (отправлено, доставлено). 
- Причины недоставки (если известны, например, неправильный номер). 
- Время отправки и доставки. 
Пример формирования отчета через API:
<?php 
$apiUrl = "https://api.exolve.ru/v1/reports"; 
$apiToken = "ваш_токен"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $apiUrl); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, [ 
	"Authorization: Bearer $apiToken", 
	"Content-Type: application/json", 
]); 
$response = curl_exec($ch); 
curl_close($ch); 
$data = json_decode($response, true); 
if ($data) { 
	foreach ($data['messages'] as $message) { 
    	echo "Номер: " . $message['to'] . " - Статус: " . $message['status'] . "\n"; 
	} 
} else { 
	echo "Ошибка получения отчета."; 
} 
?> Отслеживание конверсий по продажам товаров, упомянутых в уведомлениях
Чтобы понять, насколько эффективно уведомления стимулируют продажи, необходимо отслеживать конверсии — действия клиентов после получения SMS. Это можно сделать следующими способами:
Использование UTM-меток
Каждое уведомление должно содержать ссылку с уникальными UTM-метками. С помощью систем аналитики (Google Analytics, Яндекс.Метрика) можно отслеживать:
- количество переходов по ссылкам; 
- долю пользователей, совершивших покупку; 
- средний чек после перехода по уведомлению. 
Интеграция с CRM
Автоматическая передача данных о продажах из 1С-Битрикс в CRM позволяет напрямую связывать уведомления с их результатами. Например:
- Создание лидов для клиентов, перешедших по ссылкам. 
- Отмечать статус лидов как «успешно закрыто» для завершенных сделок. 
Пример передачи данных о конверсии:
$leadData = [ 
    "fields" => [ 
        "TITLE" => "Покупка после уведомления", 
        "STAGE_ID" => "WON", // Закрытая сделка 
        "AMOUNT" => "20000", // Сумма продажи 
        "COMMENTS" => "Продажа по уведомлению о снижении цены на товар X", 
    ] 
]; 
// Отправка данных через API 
curl_setopt($ch, CURLOPT_URL, $bitrixUrl . "crm.deal.add"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($leadData)); 
$response = curl_exec($ch); 
curl_close($ch); Анализируйте статистику не реже одного раза в месяц, чтобы своевременно выявлять проблемы.
Создание системы уведомлений о снижении цен на избранные товары в 1С-Битрикс включает три ключевых этапа: автоматизацию проверки цен, использование МТС Exolve для отправки SMS и передачу данных в CRM для анализа. Эти инструменты работают в связке, помогая вам улучшить пользовательский опыт, увеличить продажи и точно оценить результаты маркетинговых кампаний.
Подписывайтесь на наш Хаб, следите за новыми гайдами и получайте приз
Каждый понедельник мы случайным образом выбираем победителей среди новых подписчиков нашего Хабр-канала и дарим крутые призы от МТС Exolve: стильные рюкзаки, лонгсливы и мощные беспроводные зарядки. Победители прошлых розыгрышей и правила.
 
          