Webasyst с приложением Shop-Script — платформа, которую удобно связать с RetailCRM через официальный плагин: сайт отдаёт каталог в формате ICML, а заказы и клиенты уходят в CRM автоматически. Разберём установку, обмен и типичные ошибки.
Что даёт связка Shop-Script и RetailCRM
Shop-Script — это приложение интернет-магазина внутри фреймворка Webasyst. Само по себе оно закрывает витрину и корзину, но не даёт полноценной воронки продаж, триггеров и омниканальности. RetailCRM берёт на себя обработку заказов, а Shop-Script остаётся источником каталога и точкой приёма заявок.
После интеграции обмен идёт в двух направлениях:
- Каталог сайт → CRM: товары, категории, цены и остатки выгружаются в RetailCRM в формате ICML;
- Заказы сайт → CRM: каждый оформленный заказ и его покупатель попадают в CRM с составом, суммой и данными доставки;
- Статусы CRM → сайт: смена статуса в RetailCRM возвращается на витрину, чтобы покупатель видел актуальное состояние в личном кабинете.
Установка плагина RetailCRM в Webasyst
Интеграция ставится как плагин приложения Shop-Script. Откройте Магазин → Настройки → Плагины и найдите RetailCRM в каталоге приложений Webasyst либо установите загруженный архив вручную через установщик.
- Установите плагин и активируйте его в списке;
- Перейдите в настройки плагина — там задаются адрес аккаунта и ключ API;
- Проверьте, что в системе Webasyst работает планировщик
cron— без него обмен по расписанию не запустится.
Для регулярной выгрузки каталога и отправки статусов Webasyst использует системное задание. Убедитесь, что в crontab прописан вызов php cli.php sitemap-подобных задач Webasyst и хук плагина, иначе обмен придётся запускать руками.
Подключение по API и ключ доступа
В RetailCRM создайте отдельный ключ: Настройки → Интеграция → Ключи доступа к API. Выберите тип «Магазин» и привяжите его к нужному магазину в CRM, ограничив набор методов только необходимыми (заказы, клиенты, справочники, товары).
| Параметр | Где взять | Пример |
|---|---|---|
| URL аккаунта | адрес вашей CRM | https://shop.retailcrm.ru |
| API-ключ | Ключи доступа к API | 32-символьная строка |
| Версия API | по умолчанию | v5 |
Выгрузка каталога (ICML) из Shop-Script
Плагин формирует ICML-файл на стороне сайта, а RetailCRM забирает его по ссылке. В настройках плагина укажите, какие типы товаров и категории попадают в выгрузку, и включите передачу остатков со складов Shop-Script.
Типичный адрес файла выглядит так:
https://shop.ru/shop/?plugin=retailcrm&action=icml
Эту ссылку нужно прописать в RetailCRM: Администрирование → Настройки каталога → Добавить каталог. CRM скачивает файл по расписанию (обычно раз в час) и обновляет справочник.
- Торговые предложения (размер, цвет) выгружаются как
offerс общимproductId; - Артикул уходит в поле
vendorCode, бренд — вvendor; - Характеристики Shop-Script превращаются в
<param>внутри предложения.
Синхронизация заказов и клиентов
После подключения новые заказы Shop-Script уходят в RetailCRM методом orders/create. Клиент ищется по телефону и e-mail: если контакт уже есть, заказ привязывается к нему, если нет — создаётся новая карточка.
Чтобы состав заказа корректно связался с товарами CRM, позиции сопоставляются по externalId или артикулу из ICML. Поэтому каталог должен быть выгружен до начала приёма заказов.
Соответствие статусов сайта и CRM
Статусы — узкое место любой интеграции. В Shop-Script свой набор состояний заказа, в RetailCRM — свои группы и статусы. Их нужно сопоставить в настройках плагина, чтобы обмен шёл в обе стороны без «застрявших» заказов.
| Статус Shop-Script | Группа RetailCRM | Статус RetailCRM |
|---|---|---|
| Новый | Новый | Новый |
| Подтверждён | Согласование | Согласован |
| В работе | Комплектация | Комплектуется |
| Выполнен | Выполнен | Доставлен |
| Удалён | Отменён | Отменён покупателем |
Обязательно предусмотрите статус для отмены с обеих сторон — иначе отменённые в CRM заказы вернутся на сайт как активные.
Типичные проблемы и отладка
Большинство сбоев видно в журналах. В RetailCRM это Администрирование → Журнал загрузки каталога и история заказа, в Webasyst — лог плагина и системный wa-log.
- Каталог не грузится — проверьте, что ICML отдаётся по ссылке без авторизации и валиден по XML (RetailCRM отклонит файл с ошибкой разметки);
- Заказы не уходят — почти всегда неверный ключ, отключённый cron или превышение лимита методов API;
- Товары в заказе без картинок — позиция не нашлась в справочнике, каталог не обновился или артикул не совпал;
- Статусы не возвращаются — не задан обратный маппинг или заблокирован метод
orders/editу ключа.
Итог
Связка Webasyst / Shop-Script и RetailCRM собирается из четырёх шагов: плагин, ключ API типа «Магазин», выгрузка каталога ICML и маппинг статусов, оплаты и доставки. Ключевое правило — сначала стабильный каталог, потом заказы, иначе позиции не свяжутся с товарами CRM.
Мы настраиваем такие интеграции под ключ: подключаем обмен, выверяем справочники, статусы и триггеры, а затем сопровождаем систему, чтобы каталог и заказы синхронизировались без ручного вмешательства.
Частые вопросы
Нужен ли отдельный сервер для интеграции Shop-Script и RetailCRM?
Нет. Обмен идёт средствами плагина Webasyst и API RetailCRM. Достаточно работающего сайта, доступного по HTTPS, и настроенного планировщика cron.
Как часто обновляется каталог в RetailCRM?
CRM скачивает ICML по расписанию, по умолчанию примерно раз в час. Частоту можно изменить в настройках каталога, но слишком частые выгрузки нагружают сайт.
Что делать, если товары в заказе приходят без остатков?
Проверьте, что в ICML передаётся атрибут quantity и остатки берутся с нужного склада Shop-Script. Без выгруженного каталога остатки в CRM не появятся.
Можно ли передавать в CRM телефон и e-mail покупателя?
Да, контактные данные уходят вместе с заказом, и клиент создаётся или обновляется автоматически по совпадению телефона и e-mail.
Почему статус не возвращается из CRM на сайт?
Чаще всего не настроен обратный маппинг статусов или у ключа API отключён метод orders/edit. Проверьте оба условия в настройках плагина и ключа.
Поддерживаются ли торговые предложения (размеры, цвета)?
Да. Вариации выгружаются как отдельные offer с общим productId, поэтому в CRM видно конкретное предложение с его артикулом и остатком.
Сломается ли обмен при обновлении Shop-Script?
Обычно нет, но после крупных обновлений стоит проверить лог плагина и один тестовый заказ. Иногда меняется структура cron-задач, и обмен нужно перезапустить.
Поможем с настройкой и поддержкой RetailCRM
Поможем с настройкой, доработкой и поддержкой RetailCRM.