Один каталог для разных каналов продаж
Интеграция интернет-магазина с Ozon нужна, когда продажи на сайте и маркетплейсе используют связанные товары и общий учёт остатков. Если обновлять данные вручную, сотрудникам приходится искать соответствия между карточками и отдельно учитывать каждое отправление.
Для действующего магазина на Drupal 11 и Drupal Commerce я разработал собственный модуль обмена с Ozon Seller API. Он связывает товары, получает FBS-отправления и передаёт доступное количество на маркетплейс. Система развёрнута и используется ежедневно.
Технологии этого решения
Магазин, каталог и собственный модуль интеграции с Ozon Seller API.
Drupal 11: данные, роли и интеграции
Каталог, вариации и остатки
Каталог, FBS-заказы и остатки
Сервис API, очереди и обработка заказов
Сначала найти соответствие товара
У товара на сайте и карточки на Ozon могут быть разные идентификаторы. Интеграция хранит явную связь между вариацией Drupal Commerce, артикулом и идентификаторами Ozon. По ней система определяет, к какому товару относится отправление и какой остаток нужно передать для конкретной карточки.
Из Ozon в магазин
Внешний каталог можно загрузить и использовать для создания товаров магазина. Для уже сопоставленных карточек доступно выборочное обновление данных из Ozon.
Из магазина в Ozon
Для связанных товаров рассчитывается доступный остаток, после чего он может быть отправлен на выбранный склад Ozon. Настройки определяют, разрешена ли такая отправка.
Эти потоки решают разные задачи: интеграция не заявлена как двусторонняя синхронизация всех полей. Когда соответствия нет, сначала нужно связать карточку с товаром магазина.
FBS-заказы и повторный импорт
Модуль получает отправления Ozon по модели FBS и сохраняет их в системе магазина. Для разрешённых статусов он может учитывать состав отправления в локальных остатках: позиции находятся по сохранённым соответствиям, затем формируется план списания.
Отправление получено
Условный заказ содержит товар A, связанный с вариацией магазина. Система сохраняет внешнее отправление и при подходящем статусе применяет изменение остатка.
Тот же заказ пришёл снова
При повторном импорте система находит ранее сохранённое отправление и проверяет отметку обработки. Если остаток уже списан, повторного списания не происходит.
Параллельная обработка
Блокировка отправления помогает не запустить обработку одного и того же списания одновременно. Ошибки фиксируются для проверки.
Это защита конкретного процесса повторного импорта, а не гарантия от любых сбоев или гонок между системами.
Что именно отправляется на Ozon
Перед обновлением интеграция определяет локальный остаток товара и учитывает настроенный буфер. Так на маркетплейс передаётся рассчитанное доступное количество, а не просто значение из карточки без поправок.
Проверка до отправки
Предварительный просмотр показывает расчёт. Пробный запуск позволяет пройти сценарий без передачи остатка во внешний API.
Управление и журнал
Для автоматического и ручного обновления предусмотрены отдельные настройки. Изменения могут обрабатываться через очередь; запрос и результат операции фиксируются в журнале.
Синхронизация помогает согласовывать данные, но скорость обмена, внешние ошибки и параллельные продажи требуют отдельного контроля. Нельзя обещать полное отсутствие продаж сверх остатка при любых обстоятельствах.
Обновлять нужное, сохраняя остальное
Для сопоставленных товаров предусмотрена выборочная загрузка данных из Ozon в Drupal: описаний, характеристик, rich content, изображений, видео и габаритов. Можно выбирать группы данных и использовать режим заполнения только пустых полей. Это помогает не перезаписывать подготовленный в магазине контент без необходимости.
Разработка учитывает направление обмена: передача остатков на Ozon и получение контента в магазин — отдельные процессы с разными правилами. Публикация произвольных карточек из Drupal на маркетплейс и обмен ценами в рамках этого кейса не заявляются.

Рабочий процесс для магазина и маркетплейса
Магазин получил работающий процесс: товары сопоставлены с внешними карточками, FBS-отправления учитываются в локальных остатках, а рассчитанное доступное количество передаётся в Ozon при разрешённых настройках. Журнал и предварительная проверка помогают команде разбираться в обмене.
Подход подходит магазинам, которым нужно связать собственный каталог и продажи на маркетплейсе с учётом их правил работы. Объём интеграции определяется после разбора данных, складов и обработки заказов; универсального набора для каждого бизнеса здесь нет.
Отдельно описаны интеграция Ozon Доставки для заказов сайта и интеграция СДЭК с Drupal Commerce. Если нужен магазин целиком, можно обсудить разработку интернет-магазина.
Об интеграции магазина с Ozon
Чем интеграция с Ozon Seller API отличается от Ozon Доставки?
В этом кейсе Seller API связывает магазин с продажами на маркетплейсе: каталогом, FBS-отправлениями и остатками. Отдельная интеграция Ozon Доставки отвечает за доставку заказов самого сайта.
Можно ли учитывать заказы Ozon в остатках магазина?
Да. Модуль получает FBS-отправления и при разрешённом статусе может списывать соответствующие товары из локального остатка. Для этого нужны корректные сопоставления товаров.
Как исключается повторное списание при повторном импорте?
Система сохраняет отправление и отметку применения остатка. Перед списанием она проверяет эту отметку под блокировкой; уже обработанное отправление повторно не списывается.
Можно ли выбирать, какие данные каталога обновлять?
Да. Для сопоставленных товаров можно выбрать группы данных, загружаемых из Ozon, и при необходимости обновлять только пустые поля. Состав доступных полей зависит от данных и структуры магазина.