Чат поддержки для OpenCart и MODX: установка и сценарии
Нотифлоу ставится на OpenCart 3.x и OCStore через шаблон в 5 минут, на MODX Revo — через chunk шаблона за 7 минут. Скрипт весит 35 КБ gzipped и грузится async, на скорость каталога не влияет. Кроме базовой установки — два сценария именно для интернет-магазинов: проактивное сообщение в карточке товара (триггер «посетитель смотрит товар > 30 секунд») и уведомление о брошенной корзине через 5 минут после добавления товара. Оба настраиваются в кабинете без кода.
Зачем интернет-магазину чат?
Большая часть посетителей карточки товара уходит без покупки — это типичная история для e-commerce. Часть из них уходит с конкретным вопросом: «есть ли в моем размере», «когда привезете», «можно ли в рассрочку», «работает ли в моей машине». На большинстве магазинов на эти вопросы отвечает FAQ или вообще никто.
Проактивный чат ловит вопрос в момент колебания, удерживает посетителя от ухода, подсказывает альтернативу, если товара нет. По разным оценкам, прирост конверсии в чек-ауте на категориях с высокой средней суммой заказа (электроника, мебель, шины) измеряется единицами процентов — конкретный результат зависит от качества сценариев и скорости ответа операторов.
Установка Нотифлоу на OpenCart 3.x: правильный способ через шаблон
Старый workaround — вставка кода в поле «Google Analytics Code» в настройках магазина. Работает, но грязно: чат маркируется как Google-скрипт, при удалении GA снесете и его.
Чистый способ — правка шаблона.
- По FTP откройте файл
catalog/view/theme/<имя_шаблона>/template/common/header.twig(для OpenCart 3.x на Twig). Для шаблонов на старом синтаксисе путь —catalog/view/theme/<имя_шаблона>/template/common/header.tpl - Найдите закрывающий тег
</head> - Прямо перед ним вставьте
<script>от Нотифлоу:
<!-- catalog/view/theme/default/template/common/header.twig -->
<script>
(function(w,d,s,o,f,js,fjs){
w[o]=w[o]||function(){(w[o].q=w[o].q||[]).push(arguments)};
js=d.createElement(s),fjs=d.getElementsByTagName(s)[0];
js.id=o;js.src=f;js.async=1;fjs.parentNode.insertBefore(js,fjs);
}(window,document,'script','nw','https://cp.notiflow.ru/js/widget.js'));
nw('init', {apiKey:'YOUR_API_KEY_UUID'});
</script>
</head>
- Сохраните файл, в админке OpenCart очистите кэш Twig: «Дашборд → Расширения → Дополнения → Twig Compiler → Очистить»
Для авторизованного покупателя сразу пробросьте идентификацию:
{% if logged %}
<script>
nw('identify', '{{ customer_id }}', {
email: '{{ customer_email }}',
name: '{{ customer_firstname }} {{ customer_lastname }}'
});
</script>
{% endif %}
Переменные customer_id и customer_email нужно прокинуть в массив $data контроллера catalog/controller/common/header.php — без этого Twig их не увидит.
Установка Нотифлоу на OCStore
OCStore — форк OpenCart с локализацией под РФ. Структура файлов та же. Путь к header-шаблону: catalog/view/theme/<имя_шаблона>/template/common/header.tpl (OCStore 2.x) или header.twig (3.x на форке).
Способ установки идентичен OpenCart — вставка <script> перед </head>. Единственное отличие — OCStore часто использует переопределенные шаблоны через папку template_default, проверьте, какой шаблон активен в «Система → Настройки → Магазин → Тема».
После правки сбросьте кэш в «Система → Обслуживание → Очистить кэш» (все галочки).
Установка Нотифлоу на MODX Revo (через chunk шаблона)
MODX Revo разделяет шаблоны и chunks (переиспользуемые блоки). Правильный способ — отдельный chunk для чата, подключенный в основном шаблоне.
- В админке MODX откройте «Элементы → Чанки → Создать чанк»
- Имя:
НотифлоуWidget. Содержимое:
<script>
(function(w,d,s,o,f,js,fjs){
w[o]=w[o]||function(){(w[o].q=w[o].q||[]).push(arguments)};
js=d.createElement(s),fjs=d.getElementsByTagName(s)[0];
js.id=o;js.src=f;js.async=1;fjs.parentNode.insertBefore(js,fjs);
}(window,document,'script','nw','https://cp.notiflow.ru/js/widget.js'));
nw('init', {apiKey:'YOUR_API_KEY_UUID'});
</script>
- Сохраните чанк
- Откройте основной шаблон сайта («Элементы → Шаблоны → ваш шаблон»). Перед
</head>вставьте вызов чанка:[[$НотифлоуWidget]] - Очистите кэш: «Управление → Очистить кэш сайта»
Для идентификации авторизованного пользователя через MODX Login используйте отдельный чанк НотифлоуIdentify:
<script>
nw('identify', '[[+id]]', {
email: '[[+email]]',
name: '[[+fullname]]'
});
</script>
И вызывайте его внутри сниппета [[!Login]] после успешной авторизации. Сам API-ключ удобно вынести в системную настройку MODX и подставлять в чанк через placeholder — тогда ротация ключа не требует правки шаблона.
Сценарий: брошенная корзина → проактивное сообщение
Цель: показать сообщение посетителю, который добавил товар в корзину, но не оформил заказ за 5 минут.
В шаблоне OpenCart или MODX триггерите событие при добавлении товара в корзину. Для OpenCart правьте catalog/controller/checkout/cart.php, добавьте JS-возврат после AJAX-ответа:
// в скрипте каталога после успешного add-to-cart
nw('track', 'cart_add', {
product_id: productId,
product_name: productName,
price: productPrice,
cart_total: cartTotal
});
В кабинете Нотифлоу создайте попап «Брошенная корзина»:
- «Виджеты → Создать → Попап»
- Триггер запуска: событие
cart_addсовершено + не было событияpurchaseза 5 минут - Текст: «Завершите заказ — товар на сумму {{ cart_total }} ₽ ждет вас в корзине. Промокод BACK5 даст скидку 5%»
- CTA: ссылка на страницу корзины с промокодом
Подробнее — в статье проактивные попапы для e-commerce.
Сценарий: триггер в карточке товара
Если посетитель смотрит карточку товара дольше 30 секунд — это сильный сигнал колебания. Покажите всплывающее сообщение от менеджера: «Помочь подобрать размер?» / «Уточнить срок доставки в ваш город?»
В Нотифлоу:
- «Виджеты → Создать → Попап»
- Условие показа: URL содержит
/product/, время на странице > 30 секунд - Триггер показа — один раз за сессию
- Текст и CTA — кнопка «Спросить менеджера», по клику открывается чат
По разным оценкам, на категориях со сложным выбором (электроника, шины, мебель) такой попап заметно поднимает долю посетителей, которые задают вопрос — и часть из этих диалогов конвертируется в заказ. Конкретные цифры сильно зависят от качества сценария и скорости ответа оператора.
Сценарий: статус заказа в чате через события
Покупатели часто пишут в чат «где мой заказ?». Можно автоматизировать ответ — при изменении статуса заказа в OpenCart фиксируйте событие в Нотифлоу через REST API. На это событие настраивается триггер: вернувшемуся клиенту покажется сообщение в чате с актуальным статусом.
В OpenCart повесьте хук на model/checkout/order/addOrderHistory и из него отправляйте POST /api/v1/events с X-Api-Key, external_id (email клиента), полем event: order_status_changed и атрибутами order_id и status. Подробнее про эндпоинт — в статье API-ключи.
Что делать, если виджет не появляется
Чек-лист:
- Сбросьте кэш — Twig в OpenCart, основной кэш в MODX. Без сброса видна старая версия шаблона
- Проверьте, что домен в Нотифлоу совпадает с реальным URL (включая www и https)
- Откройте DevTools Console — нет ли
Failed to load cp.notiflow.ru/js/widget.js. Если есть — проблема с сетью или AdBlock - На страницах админки виджет не нужен и не появится — это норма. Тестируйте на витрине магазина
- Если используете несколько шаблонов под разные категории — проверьте, что код добавлен во все
Часто задаваемые вопросы
Куда вставлять код в OpenCart?
В файл шаблона catalog/view/theme/<имя_шаблона>/template/common/header.twig (OpenCart 3) или header.tpl (OpenCart 2), перед закрывающим </head>. Не используйте поле «Google Analytics Code» — это грязный workaround.
Совместим ли с OCStore?
Да. Структура файлов в OCStore такая же, как в OpenCart. Установка идентична, путь к шаблону тот же. После правки очистите кэш в «Система → Обслуживание».
Как поставить чат на MODX Revo?
Создайте чанк НотифлоуWidget со скриптом виджета, в основном шаблоне сайта перед </head> вызовите его через [[$НотифлоуWidget]]. После сохранения очистите кэш сайта.
Можно ли показать чат только в карточке товара?
Да. В кабинете Нотифлоу в настройках виджета задайте условие показа «URL содержит /product/». На остальных страницах чат не появится, но скрипт грузиться будет — это базовая логика виджета.
Как настроить триггер на брошенную корзину?
Триггерьте событие cart_add через JS SDK при добавлении товара. В кабинете создайте попап с условием «событие cart_add совершено + не было purchase за 5 минут». Текст попапа и промокод задайте в настройках виджета.
Поставьте чат для интернет-магазина за 10 минут — зарегистрируйтесь в Нотифлоу, скопируйте код установки и вставьте в шаблон OpenCart или чанк MODX. Подробнее про сценарии — в проактивных попапах для e-commerce и чат для Telegram интернет-магазина. Сравнение виджетов — на странице платформы.