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

Остатки в WooCommerce: где вести учёт

Остаток в WooCommerce — это не одно число в карточке товара, а результат договорённости о том, какая система владеет запасом и кто создаёт резерв. Пока эта договорённость не зафиксирована, магазин рано или поздно продаёт товар, которого нет: он ушёл в рознице, зарезервирован менеджером или списан на складе, а сайт об этом не узнал.

Выбор схемы начинается не с плагина, а с вопроса «где живёт остаток». Два взаимоисключающих варианта:

  1. Учёт внутри WooCommerce. Сайт — единственное место, где ведутся количества, закупки и движения. Подходит, когда продажи идут только через сайт, а складские операции просты.
  2. Учёт во внешней системе. Остатки и товарные документы ведутся в товароучётной системе, WooCommerce получает данные для витрины и передаёт заказы. Подходит, когда есть закупки, приёмки, перемещения, несколько складов или общий запас с розницей и маркетплейсами.

Смешанная схема — ручные правки остатка на сайте при включённом обмене — не является третьим вариантом: следующая синхронизация перезапишет ручные числа, и никто не поймёт, почему доступность «сама» изменилась.

Решение не зависит от размера каталога. Небольшой магазин с розницей и маркетплейсом нуждается в отдельном учёте раньше, чем крупный каталог с единственным каналом: важны процессы, а не 500 или 10 000 позиций.

При любом варианте — на сайте или во внешней системе — нужно различать физический остаток, резерв и доступность к продаже:

  • Физический остаток — сколько единиц лежит на складе по данным учёта.
  • Резерв — сколько удержано оформленными, но ещё не отгруженными заказами.
  • Доступность к продаже — что видит покупатель: доступно = остаток − резервы − страховой буфер.

Страховой буфер компенсирует задержку обмена: пока заказ едет в учёт, буфер не даёт продать ту же единицу второму покупателю. «Обновление раз в 15 минут» и «сразу после продажи» — разные условия для магазина, торгующего последними единицами через несколько каналов. Формула и правила резервирования подробно разобраны в «Заказах и остатках» — этот раздел описывает конкретные реализации на WooCommerce и не дублирует модель.

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

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

Порядок выбора — последовательный, а не по списку популярных плагинов.

  1. Определите, где ведётся учёт. Если он уже работает в МойСклад, 1С или другой системе — начинайте с подключения сайта к ней, а не с переноса процессов в WordPress.
  2. Назначьте владельца для каждого типа данных. Остатки и цены могут приходить из учёта, а названия, описания и фотографии оставаться на сайте. Направления обмена задаются отдельно для каждого типа данных.
  3. Определите роль CRM. Если отдельных процессов работы с клиентами нет, обмен идёт напрямую. Если менеджеры работают в retailCRM или Битрикс24 — пропишите маршрут заказа через CRM и убедитесь, что заказ не создаётся в учёте дважды: напрямую с сайта и повторно из CRM.
  4. Добавьте недостающие функции. Закупки и поставщики — инструменты управления запасами; количества по точкам — мультисклад; продажи в магазине — касса и связь с общим учётом; сложные операции на складе — WMS.
  5. Посчитайте полную стоимость. В бюджет входят подготовка каталога, настройка, дополнительные модули, тестирование и поддержка. Бесплатный плагин требует работы специалиста, платный — проверки на ваших данных.

Пять проверок, без которых интеграция остатков не считается рабочей.

  • Товары сопоставляются без дублей. У каждой позиции и вариации есть устойчивый идентификатор (SKU или внешний ID), а не совпадение названий.
  • Сайт получает правильное количество. Физический остаток, резерв и доступный запас различаются; ожидаемая поставка не становится доступной к немедленной отгрузке.
  • Заказы меняют запас один раз. Проверены продажа последней единицы, отмена, возврат и изменение состава заказа.
  • Обмен восстанавливается после сбоя. Повторная передача не создаёт дублей, а ошибка подключения не читается как нулевой остаток — иначе витрина обнулит весь каталог при недоступном API.
  • Есть ответственный за интеграцию. Видно время последнего успешного обновления, сохраняются ошибки, определён порядок их устранения.

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