Выгрузка из OpenCart в Яндекс Маркет: чек-лист
Перед запуском выгрузки из OpenCart проверьте цены, остатки, изображения, обязательные атрибуты и обработку ошибок. Один чек-лист поможет не отправить в Яндекс Маркет пустые карточки, неверные остатки и старые цены.

Почему выгрузка из OpenCart ломается уже после запуска
В OpenCart 3.x товар может быть виден в каталоге, но не пройти проверку в Яндекс Маркете: у него нет обязательного атрибута, неверно указана цена, не открывается изображение или выгружается остаток из закрытого склада. Похожая проблема возникает при передаче данных в Ozon, Wildberries и другие площадки через модули и промежуточные сервисы.
Этот чек-лист рассчитан на проверку перед продакшеном. Он не привязан к конкретному расширению: названия полей и экранов зависят от модуля, версии OpenCart и схемы конкретной площадки. Перед началом зафиксируйте версию OpenCart, название и версию модуля, адрес фида и способ обновления остатков.
Продакшен начинается не с кнопки «Включить выгрузку», а с ответа на вопрос: какие данные площадка получит вместо каждого пустого или спорного поля.
Что проверять до подключения фида
1. Каталог и идентификаторы
- У каждого товара есть стабильный внутренний идентификатор. Не меняйте его после первой успешной выгрузки без необходимости.
- Название содержит конкретный тип товара, модель и ключевые характеристики, но не рекламные обещания вроде «лучший» или «самый дешёвый».
- Описание не содержит служебные HTML-элементы, скрипты, ссылки на админку и текст, который разрешён в OpenCart, но запрещён схемой площадки.
- Товар привязан к категории, которую модуль умеет сопоставить с категорией Яндекс Маркета или другой площадки.
- Варианты товара — размер, цвет, объём — передаются как отдельные предложения или как одна карточка с корректными вариантами. Это зависит от формата расширения.
Проверка: откройте сырой фид или предварительный просмотр модуля и найдите несколько товаров из разных категорий. У каждого должны быть неповторяющийся идентификатор, название, категория и цена.
2. Цена, скидка и валюта
Сверьте цену в трёх местах: в карточке OpenCart, в сформированном фиде и на странице товара после обновления на площадке. Если модуль выгружает старую цену, скидку или несколько типов цен, заранее определите, какое поле считается финальной стоимостью.
- Проверьте основную цену, акционную цену и минимальную цену, если они используются.
- Убедитесь, что цена округляется по правилам площадки и не превращается в строку с запятой вместо десятичной точки.
- Проверьте валюту магазина и курс, если цены пересчитываются автоматически.
- Не передавайте нулевую цену для товара, который должен продаваться. Площадка может отклонить предложение или показать его как недоступное.
- Сравните стоимость доставки и порог бесплатной доставки: эти данные могут передаваться отдельно от цены товара.
Проверка: выберите товар с акцией, товар без акции и товар с дробной ценой. После обновления проверьте, что на площадке отображается ожидаемая цена, а не цена из кэша или предыдущего фида.
3. Остатки и доступность
Остаток в OpenCart — не всегда остаток для маркетплейса. На сайте он может учитывать несколько складов, резерв заказов и статус «в наличии», а модуль — читать только поле количества из карточки товара.
- Сопоставьте склад, из которого берётся количество, с реальным складом отгрузки.
- Проверьте, что резервирование товара после заказа уменьшает доступный остаток с нужной задержкой.
- Решите, что выгружать при количестве 0: скрывать предложение, передавать «нет в наличии» или оставлять карточку без заказа.
- Проверьте товар с несколькими вариантами: остаток родительского товара не должен заменять остаток конкретного размера или цвета.
- Убедитесь, что задача обновления не запускается параллельно. Два процесса могут записать разные остатки в непредсказуемом порядке.
Проверка: уменьшите количество тестового товара, запустите обновление вручную и убедитесь, что изменились и фид, и статус предложения на площадке.
4. Изображения
Площадка должна получить доступный по HTTPS адрес изображения. Ссылка из локальной сети, временный URL, файл с запретом для роботов или картинка, доступная только после авторизации, для маркетплейса не сработает.
- Откройте каждый URL изображения в отдельном окне без входа в админку.
- Проверьте главное и дополнительные изображения, порядок галереи и отсутствие битых ссылок.
- Убедитесь, что после изменения картинки URL либо обновляется, либо площадка действительно скачивает новый файл по прежнему адресу.
- Проверьте, не отдаёт ли CDN страницу ошибки со статусом 200 вместо изображения.
Проверка: сохраните несколько URL из фида и загрузите их с внешнего подключения. Ответ должен быть изображением, а не страницей OpenCart, редиректом на вход или ошибкой сервера.
Что отличается у разных способов выгрузки
Для Яндекс Маркета часто используют XML-фид в формате YML, но конкретный способ зависит от требований кабинета и установленного модуля. Для других площадок расширение может формировать CSV, JSON или отправлять данные через API. Нельзя считать, что валидный YML автоматически подходит для Ozon или Wildberries.
| Способ | Что проверить | Цена ошибки |
|---|---|---|
| XML/YML-фид | Структуру XML, обязательные элементы, доступность URL и расписание обновления | Карточка не принимается или остаётся со старыми данными до следующего запуска |
| CSV-файл | Разделитель, кодировку, порядок колонок, формат чисел и правила загрузки | Колонки съезжают, цены читаются неверно, часть товаров пропускается |
| API-модуль | Токен, права, лимиты запросов, повторные попытки и журнал ответов | Обновление останавливается на части каталога или создаёт дубли |
| Промежуточный сервис | Соответствие полей, расписание, преобразование категорий и стоимость тарифа | Ошибка появляется не в OpenCart, а между магазином и площадкой |
YML — XML-формат товарного предложения, который использует экосистема Яндекса. Наличие XML-файла само по себе не означает, что он соответствует требованиям Яндекс Маркета: важны структура, обязательные поля и значения.
Проверка фида перед боевым подключением
- Сформируйте тестовый набор. Возьмите товар без вариантов, товар с вариантами, акционный товар, товар без остатка и товар с несколькими изображениями. Так вы проверите разные ветки выгрузки, а не только идеальную карточку.
- Проверьте сырой файл. Откройте URL фида без авторизации. Найдите идентификаторы тестовых товаров, цены, остатки, категории и изображения. Если файл пустой или отдаёт страницу ошибки, подключать его к кабинету рано.
- Проверьте формат. Для XML используйте валидатор XML и просмотр ошибок в кабинете площадки. Для CSV проверьте кодировку и разделитель в редакторе, который не меняет значения автоматически.
- Загрузите ограниченную выборку. Если модуль позволяет фильтр по категории, бренду или списку товаров, начните с нескольких позиций. Не отправляйте весь каталог, пока не проверены цены и остатки.
- Сопоставьте результат. Сравните данные в OpenCart, фиде и кабинете маркетплейса. Зафиксируйте время формирования файла: обновление на площадке может происходить не мгновенно.
- Включите журналирование. Лог должен показывать время запуска, число обработанных товаров, число ошибок и ответ внешнего сервиса. Секретные ключи и токены в лог не записывайте.
Что ломается чаще всего
Товар есть в OpenCart, но его нет на площадке
Проверьте статус товара, категорию, фильтры модуля, обязательные атрибуты и причину отклонения в кабинете. Частая ошибка — товар исключается условием «количество больше нуля», хотя остаток хранится у варианта, а не у родительского товара.
Выгружается старая цена
Сравните время изменения цены, время формирования фида и время последнего импорта на площадке. Затем проверьте кэш OpenCart, кэш модуля и отдельный кэш промежуточного сервиса. Не очищайте всё подряд в продакшене: сначала определите, на каком этапе данные устарели.
Фид отдаёт 403, 404 или HTML вместо XML
403 обычно указывает на запрет доступа, защиту от роботов или неверную авторизацию. 404 означает, что URL изменился или маршрут модуля не работает. HTML вместо XML часто появляется при ошибке PHP или редиректе на страницу входа. Откройте URL с внешнего соединения и проверьте код ответа сервера.
Часть изображений не принимается
Сравните рабочую и нерабочую ссылку: протокол, редиректы, размер файла, тип содержимого и доступ без cookie. Если магазин использует WebP или нестандартную обработку изображений, проверьте, поддерживает ли такой формат конкретная площадка.
Обновление запускается, но каталог не меняется
Проверьте расписание cron, часовой пояс сервера, права пользователя и журнал запуска. Для API дополнительно смотрите лимиты запросов и ответы с ошибками авторизации. Для фида проверьте, что площадка читает именно новый URL, а не сохранённую копию файла.
Когда считать выгрузку готовой
Перед включением всего каталога у вас должны быть ответы на пять вопросов: какой источник цены используется, какой склад формирует остаток, где смотреть ошибку, как часто обновляются данные и кто получает уведомление о сбое.
- Тестовые товары проходят проверку площадки.
- Цена в фиде совпадает с ценой, которую должен увидеть покупатель.
- Остаток меняется после контрольного заказа или ручного изменения количества.
- Изображения открываются извне и не требуют авторизации.
- Логи сохраняют результат каждого запуска, но не содержат токены.
- Есть план отката: отключить фид, убрать проблемную категорию или вернуть предыдущие настройки.
После запуска не заканчивайте проверку. Первую неделю смотрите число принятых и отклонённых предложений, время последнего успешного обновления, расхождения остатков и товары, которые исчезли из фида. Инвалидация кэша и автоматическое восстановление после сбоя — отдельные задачи, их стоит настроить после базовой проверки обмена.
Редактор изображений: Убрать лишнее, заменить фон, добавить объект, расширить кадр — на вашем изображении.
Спросить за 20 ₽Источники: Яндекс Маркет для продавцов: требования к товарным предложениям, OpenCart Documentation
Частые вопросы
Какая версия OpenCart нужна для этой схемы?
Можно ли одним YML-файлом выгружать товары на все маркетплейсы?
Что делать, если фид валидный, но товар не появился?
Как понять, откуда берётся старая цена?
Нужно ли выгружать товар с нулевым остатком?
Что делать, если после запуска обновляются не все товары?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.