Перейти к содержимому

retailCRM и WooCommerce: заказы, остатки и WP-Cron

retailCRM — система для обработки интернет-заказов и работы с клиентами: кто отвечает за покупателя, на каком этапе заказ, что оплачено и что нужно отгрузить. Для синхронизации остатков CRM не обязательна: сайт может обмениваться данными напрямую с учётной системой. CRM подключают ради процессов продаж, а не ради передачи количества.

Это важное разделение: retailCRM не заменяет товарный учёт, а встаёт между сайтом и учётом.

  • Менеджерам нужна единая среда для обработки заказов из нескольких каналов, а не работа в админке WordPress.
  • Требуется фиксировать этапы работы с клиентом, историю коммуникаций и ответственность менеджеров.
  • Заказы приходят не только с сайта, но и из маркетплейсов, мессенджеров, телефона.

Если ничего из этого не нужно, а задача — только правильно считать остатки, retailCRM лишнее звено. Каждое звено в цепочке добавляет задержку и точку отказа.

У retailCRM есть модуль для WooCommerce. Он связывает заказы сайта с CRM: заказ создаётся в retailCRM, меняет статусы, синхронизируется состав.

Платформа также поддерживает подключение складских систем, отображение остатков и бронирование товаров — но это отдельные настройки, а не следствие установки модуля.

Один из рабочих вариантов:

  1. Покупатель оформляет заказ в WooCommerce.
  2. Менеджер обрабатывает его в retailCRM.
  3. Документы и остатки ведутся в МойСклад или 1С.
  4. Сайт получает доступное количество по выбранному маршруту.

Для МоегоСклада есть готовая интеграция retailCRM: заявлены обмен товарами, остатками и закупочными ценами по складам, а также передача заказов из CRM в учётную систему.

Ключевой вопрос в такой схеме — маршрут остатка. Вариантов два, и смешивать их нельзя:

  • Остатки идут в обход CRM: учёт → сайт. CRM работает только с заказами.
  • Остатки идут через CRM: учёт → CRM → сайт. Тогда CRM становится обязательным звеном, и её недоступность останавливает обновление количества.

Первый вариант надёжнее: у CRM нет причин знать точное количество, если она не управляет складом.

В модуле WooCommerce получение остатков из CRM включается отдельно, по умолчанию его нет. Документация указывает:

  • обновление каждые 15 минут;
  • зависимость фоновых задач от WP-Cron — встроенного планировщика WordPress.

Обе детали критичны на практике. WP-Cron не является настоящим демоном: он запускается по посещению сайта. На магазине с низким трафиком ночью задачи могут не выполняться, а на сайте с запретом DISABLE_WP_CRON в конфигурации — не выполняться вовсе, пока не настроен системный cron, дергающий wp-cron.php.

Проверка перед запуском: убедитесь, что задачи обмена реально выполняются по расписанию. Для этого нужен системный cron или планировщик хостинга, а не надежда на трафик.

Если данные проходят через несколько систем, задержки суммируются: 15 минут обновления в CRM плюс свой интервал выгрузки из учёта плюс время на обработку заказа.

Для товаров с небольшим запасом это означает одно: правила резервирования важнее скорости обмена. Если на складе одна единица, а обмен идёт раз в 15 минут, без резерва в момент оформления её продадут дважды — второй покупатель узнает об этом из письма об отмене.

Что помогает:

  • Резерв при оформлении на стороне учёта или CRM, а не только списание при оплате.
  • Страховой буфер в доступности, покрывающий фактическую задержку.
  • Ограничение продажи последних единиц: часть магазинов показывает «осталось N» и не даёт купить больше, чем есть в резерве.
  • Маршрут заказа единственный. Заказ не создаётся одновременно и напрямую в учёте, и через CRM.
  • Дубли не появляются. Повторная синхронизация обновляет существующий заказ по внешнему ID.
  • Смена статуса не зацикливается. Статус, пришедший из CRM, не отправляется обратно как изменение с сайта.
  • Остатки не обнуляются при ошибке. Недоступность CRM или учёта не должна снимать товары с продажи.
  • Расписание работает. WP-Cron выполняет задачи по системному cron, а не по случайным визитам.
  • Есть журнал обмена. Видно, когда последний раз обновлялись остатки и какие заказы не доехали.