Перенос карточек товаров с Ozon на Wildberries через Seller IP: полное руководство

Перенос ассортимента между двумя крупнейшими маркетплейсами России — Ozon и Wildberries — задача, с которой рано или поздно сталкивается каждый мультибрендовый продавец. Вручную копировать сотни карточек нереально: это заняло бы недели и гарантировало бы ошибки в атрибутах, ценах и остатках. К счастью, есть легальный способ автоматизации — через API Seller IP, который позволяет синхронизировать каталоги между платформами с минимальными затратами времени.

Но здесь продавцов поджидают подводные камни: разная структура данных на Ozon и WB, ограничения API, необходимость трансформации атрибутов (например, color_name на Озоне vs color на ВБ). Эта статья — не теоретический обзор, а практические шаги с примерами кода, таблицей соответствия полей и решениями типичных ошибок, которые экономят дни работы. Мы разберём два сценария: перенос через готовые сервисы (типа МойСклад или Атоматик) и прямой экспорт через Seller IP для тех, кто готов писать скрипты.

Если вы никогда не работали с API маркетплейсов, не пугайтесь: мы начнём с базовых понятий и постепенно дойдём до технических деталей. Главное — понимать, что универсального решения нет: для одежды и электроники потребуются разные подходы к маппингу атрибутов. Готовьтесь к тому, что первый перенос займёт время, но последующие обновления будут занимать минуты.

1. Почему Seller IP — лучший способ переноса карточек

На первый взгляд, проще всего скачать Excel-отчёт с Ozon и загрузить его на Wildberries через личный кабинет. Но этот метод работает только для 10–15 товаров. При масштабировании вы столкнётесь с проблемами:

  • 🔄 Разная структура файлов: Озон выдаёт данные в формате JSON/CSV с сотней колонок, а ВБ требует XLSX с жёстко заданными полями.
  • 📦 Отсутствие автоматической синхронизации: после первой загрузки вам придётся вручную обновлять остатки, цены и статусы.
  • Ограничения API: Wildberries блокирует массовую загрузку через интерфейс (максимум 500 товаров в час).

Seller IP решает эти проблемы, так как:

  1. Предоставляет единый интерфейс для работы с API обоих маркетплейсов.
  2. Позволяет трансформировать данные на лету (например, конвертировать ozon_category_id в wb_subject).
  3. Поддерживает реальное время: изменения на Озоне можно мгновенно отразить на ВБ.

Кроме того, Seller IP даёт доступ к расширенным функциям, например:

  • 📊 Аналитика продаж по обоим маркетплейсам в одном дашборде.
  • 🔄 Автоматическое резервирование остатков, чтобы избежать оверсела.
  • 🛡️ Проверка на дубли перед загрузкой (важно для брендовых товаров).
📊 Какой способ переноса товаров вы используете сейчас?
Вручную через Excel
Через сервисы типа МойСклад
Пишу свои скрипты на Python
Ещё не переносил, только планирую

2. Подготовка: что нужно сделать до переноса

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

1. Проверьте соответствие категорий. На Ozon и Wildberries разные иерархии. Например:

  • На Озоне: Электроника → Смартфоны → Apple
  • На ВБ: Электроника → Телефоны и гаджеты → Смартфоны → iPhone

Используйте справочник категорий WB и документацию Ozon для маппинга.

2. Соберите обязательные атрибуты. Wildberries требует поля, которых нет на Озоне:

Атрибут на Ozon Атрибут на WB Пример трансформации
color_name color Если на Озоне "Цвет: Чёрный", на ВБ должно быть "Черный" (без кавычек).
images (массив) photos (строка с URL) Нужно конвертировать из [{"url": "..."}] в "url1;url2;url3".
price price Цена на ВБ должна быть не ниже РРЦ (если есть).
stock quantity На ВБ нельзя указывать остатки больше 9999.

3. Получите доступ к API:

  • На Ozon: перейдите в Личный кабинет → Настройки → API-ключи и создайте ключ с правами read:products.
  • На Wildberries: в Личном кабинете → API запросите доступ к Marketplace API (может занять до 3 дней).

Проверено соответствие категорий|Собраны все обязательные атрибуты|Получены API-ключи от Ozon и WB|Создана тестовая карточка на WB для проверки|Подготовлен бэкап данных Озон-->

3. Пошаговая инструкция: перенос через Seller IP

Рассмотрим два варианта: с использованием готового сервиса (для новичков) и через прямой API-запрос (для продвинутых).

Вариант 1: Через сервис-интегратор (МойСклад, Атоматик, Seller IP)

Если вы не хотите писать код, используйте один из сервисов:

  1. Авторизуйтесь в сервисе и подключите аккаунты Озон и ВБ.
  2. Настройте маппинг полей. Например, в Seller IP это делается в разделе Интеграции → Правила трансформации.
  3. Запустите тестовую синхронизацию для 1–2 товаров. Проверьте:
    • 📸 Корректность загрузки изображений.
    • 🏷️ Совпадение атрибутов (цвет, размер, материал).
    • 💰 Соответствие цен (учитывайте комиссию ВБ!).
  • Настройте расписание для автоматического обновления (рекомендуем раз в 6 часов).
  • Плюсы метода:

    • ✅ Не нужен программист.
    • ✅ Встроенная обработка ошибок.
    • ✅ Поддержка клиентской службы.

    Минусы:

    • ❌ Платная подписка (от 1 500 ₽/мес).
    • ❌ Ограниченная гибкость (не все атрибуты можно трансформировать).

    Вариант 2: Прямой перенос через API (для разработчиков)

    Если вы готовы писать скрипты, вот пошаговый алгоритм:

    Шаг 1. Экспорт данных с Ozon

    Используйте endpoint:

    GET https://api-seller.ozon.ru/v2/product/list
    

    Headers:

    - Client-Id: [ваш_client_id]

    - Api-Key: [ваш_api_key]

    Пример ответа (упрощённо):

    {
    

    "items": [

    {

    "id": 12345,

    "name": "Смартфон Apple iPhone 13 128GB",

    "category_id": 17035609,

    "price": "79990",

    "images": [{"url": "https://..."}],

    "attributes": [

    {"name": "color_name", "value": "Синий"},

    {"name": "brand", "value": "Apple"}

    ]

    }

    ]

    }

    Шаг 2. Трансформация данных для WB

    Пример кода на Python для конвертации:

    def transform_ozon_to_wb(ozon_product):
    

    wb_product = {

    "name": ozon_product["name"],

    "brand": next(a["value"] for a in ozon_product["attributes"] if a["name"] == "brand"),

    "color": next(a["value"] for a in ozon_product["attributes"] if a["name"] == "color_name"),

    "price": int(ozon_product["price"]),

    "photos": ";".join(img["url"] for img in ozon_product["images"]),

    "quantity": min(ozon_product["stock"], 9999) # Ограничение WB

    }

    return wb_product

    Шаг 3. Загрузка на Wildberries

    Используйте endpoint:

    POST https://suppliers-api.wildberries.ru/content/v1/cards/upload
    

    Headers:

    - Authorization: [ваш_api_key_wb]

    Body:

    {

    "data": [{"json": [преобразованные_данные]}]

    }

    4. Типичные ошибки и как их избежать

    Даже при автоматизации переноса продавцы сталкиваются с проблемами. Вот TOP-5 ошибок и их решения:

    Ошибка Причина Решение
    400 Bad Request: Invalid category Некорректный subject или vendorCode. Проверьте соответствие категорий в справочнике WB.
    403 Forbidden: Price too low Цена ниже РРЦ или минимальной цены категории. Увеличьте цену на 5–10% от РРЦ или запросите разрешение у WB.
    504 Gateway Timeout Слишком большой запрос (>1 000 товаров). Разбейте на пакеты по 500–800 товаров.
    Карточка не отображается в каталоге Не заполнены обязательные атрибуты (например, country для одежды). Добавьте недостающие поля через PATCH-запрос.
    Изображения не загружаются URL изображений с Ozon недоступны для WB. Скачайте изображения на свой сервер и укажите прямые ссылки.

    Самая частая проблема — несовпадение атрибутов. Например, на Озоне может быть size: "M", а на ВБ требуется size: {"rus": "M", "orig": "M"}. Решение:

    # Пример трансформации размера для WB
    

    if "size" in ozon_attributes:

    wb_product["sizes"] = [

    {

    "rus": ozon_attributes["size"],

    "orig": ozon_attributes["size"],

    "vendorSize": ozon_attributes.get("vendor_size", "")

    }

    ]

    Что делать если WB отказывает в модерации?

    Если карточка отклонена с формулировкой "Несоответствие товара заявленным характеристикам", проверьте:

    1. Совпадение бренда в названии и атрибуте `brand`.

    2. Качество изображений — на ВБ требуется белый фон (RGB 255,255,255) и разрешение не менее 800x800.

    3. Описание — должно содержать ключевые слова из названия и не дублировать его.

    Если проблема не решена, напишите в поддержку WB с указанием `nmId` товара и скриншотом ошибки.

    5. Автоматизация обновлений: как синхронизировать остатки и цены

    Одноразовый перенос — это только половина задачи. Главное — настроить регулярную синхронизацию, чтобы:

    • 📉 Остатки обновлялись при продаже на Озоне.
    • 💰 Цены корректировались с учётом акций на обоих маркетплейсах.
    • Статусы ("в наличии"/"под заказ") совпадали.

    Способ 1: Вебхуки (рекомендуется)

    Настройте уведомления об изменениях на Озоне:

    POST https://api-seller.ozon.ru/v1/webhook/subscribe
    

    {

    "events": ["stocks_updated", "price_updated"],

    "url": "https://ваш-сервер.com/ozon-webhook"

    }

    Пример обработчика на Python:

    from flask import Flask, request
    
    

    app = Flask(__name__)

    @app.route('/ozon-webhook', methods=['POST'])

    def handle_webhook():

    data = request.json

    if data['event'] == 'stocks_updated':

    update_wb_stock(data['product_id'], data['new_stock'])

    return "OK", 200

    Способ 2: Cron-задачи

    Если вебхуки не доступны, запускайте скрипт синхронизации по расписанию (например, каждые 4 часа):

    0 /4    /usr/bin/python3 /path/to/sync_script.py

    6. Оптимизация карточек для Wildberries: что изменить после переноса

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

    1. Название товара

    На Озоне допускаются длинные названия с ключевыми словами, а на ВБ действуют жёсткие правила:

    • Правильно: Смартфон Apple iPhone 13 128GB Синий
    • Неправильно: Apple iPhone 13 128 ГБ, новый, гарантия, быстрая доставка (лишние слова).

    2. Описание

    Wildberries ранжирует карточки с:

    • 📝 Структурированным текстом (подзаголовки, списки, абзацы).
    • 🔍 Ключевыми словами из поисковых запросов (используйте инструмент WB).
    • 📏 Техническими характеристиками в таблице (для электроники).

    3. Цена и скидки

    На ВБ действуют особенности:

    • 💰 Комиссия выше, чем на Озоне (до 15% для электроники). Учитывайте это в цене.
    • 🎁 Скидки лучше устанавливать через Promo API, а не вручную.
    • 📈 Динамическое ценообразование: используйте сервисы вроде Pricer24 для автоматического подбора цены под конкурентов.

    7. Альтернативные способы переноса (если Seller IP не подходит)

    Если по какой-то причине Seller IP вам не доступен, рассмотрите альтернативы:

    1. Через 1C или МойСклад

    Если вы ведёте учёт в 1C, можно настроить выгрузку:

    • 📥 Импорт данных с Озон через CommerceML.
    • 📤 Экспорт на ВБ через модуль WB Интеграция (стоимость от 5 000 ₽).

    2. Парсинг + Excel

    Для небольших каталогов (до 500 товаров):

    1. Спарсите данные с Озон через Ozon Parser (например, сервис).
    2. Обработайте файл в Excel:
      • 🔄 Замените названия колонок (например, ozon_idvendorCode).
      • 📊 Добавьте недостающие поля (например, country для одежды).
  • Загрузите через Личный кабинет WB → Товары → Импорт.
  • 3. Готовые решения от партнёров WB

    Wildberries рекомендует несколько сервисов для миграции:

    • 🛠️ RetailCRM — для комплексного управления.
    • 📦 МойСклад — для синхронизации складов.
    • 🤖 Атоматик — для автоматизации без кода.
    📊 Какой способ переноса вы считаете самым надёжным?
    Через Seller IP
    Через 1C/МойСклад
    Самописные скрипты
    Сервисы-партнёры WB (RetailCRM и др.)

    FAQ: Ответы на частые вопросы

    ❓ Можно ли перенести отзывы с Озон на Wildberries?

    Нет, Wildberries не предоставляет API для импорта отзывов. Однако вы можете:

    • 📸 Добавить скриншоты отзывов с Озон в галерею товара на ВБ (с пометкой "Отзыв с Ozon").
    • 📊 Указать средний рейтинг в описании (например: "4.8★ на Ozon по 120 отзывам").

    ⚠️ Внимание: Не копируйте текст отзывов напрямую — это может быть расценено как манипуляция рейтингами.

    ❓ Как перенести товары с вариантами (цвет/размер)?

    Для товаров с вариантами (SKU) на Озоне и NMID на ВБ:

    1. Сгруппируйте варианты по parent_id (на Озоне) или groupId (на ВБ).
    2. Для каждого варианта укажите:
      {
      

      "vendorCode": "AR123-BLUE-M", // Артикул + цвет + размер

      "sizes": [{"rus": "M", "orig": "M"}],

      "colors": [{"name": "Синий"}]

      }

    3. Используйте PATCH /cards/group для связывания вариантов в группу.

    Важно: На ВБ все варианты должны иметь одинаковое название, кроме атрибутов цвета/размера.

    ❓ Сколько времени занимает модерация на Wildberries?

    Сроки зависят от категории:

    • Быстрая модерация (1–6 часов): книги, канцтовары, некоторые аксессуары.
    • Стандартная (1–3 дня): электроника, одежда, обувь.
    • 🐢 Долгая (до 7 дней): товары с сертификатами (например, детские игрушки).

    🔹 Как ускорить:

    • Заполните все обязательные атрибуты (особенно country и material).
    • Прикрепите сертификаты (если требуются).
    • Используйте предмодерацию в личном кабинете.
    ❓ Можно ли перенести товары с Ozon на WB бесплатно?

    Да, но с ограничениями:

    • 🆓 Бесплатно:
      • Ручной перенос через Excel (до 500 товаров).
      • Самописные скрипты на Python (если у вас есть навыки программирования).
    • 💰 Платно:
      • Сервисы типа Seller IP (от 1 500 ₽/мес).
      • Партнёрские интеграции (например, RetailCRM — от 3 000 ₽/мес).

    ⚠️ Внимание: Бесплатные способы требуют много времени на поддержку. Например, при изменении API Озон или WB ваш скрипт может перестать работать.

    ❓ Что делать, если товар на Озоне есть, а на WB его нет в справочнике?

    Если ваш товар отсутствует в каталоге Wildberries:

    1. Проверьте справочник номенклатуры WB по:
      • 🏷️ Бренду (например, brand: "Apple").
      • 📦 Артикулу (попробуйте поиск по vendorCode).
  • Если товара нет:
    • 📋 Заполните заявку на добавление (для брендовых товаров).
    • 🔄 Или создайте карточку как "Свой товар" (для non-brand).

    🔹 Важно: Для некоторых категорий (например, лекарства или алкоголь) добавление нового товара невозможно — их можно продавать только из существующего каталога WB.