Интеграция интернет-магазина с Ozon (Seller API)
Представьте: вы обновляете вручную 5000 товаров на Ozon через личный кабинет. Один сотрудник тратит на это целый день, а завтра остатки снова разъезжаются. Расхождения ведут к отменам заказов и штрафам от маркетплейса. По статистике, до 15% заказов отменяются именно из-за неактуальных остатков. И это знакомая ситуация для многих продавцов. Мы решаем её через Ozon Seller API — единый канал двусторонней синхронизации, который исключает человеческий фактор. Наши инженеры имеют сертификаты Ozon и более пяти лет опыта в e-commerce интеграциях. За это время мы реализовали проекты с каталогами от 5000 товаров, где автоматизация сократила ручной труд на 120 часов в месяц, сэкономив клиенту около 600 000 ₽ в год. Свяжитесь с нами для бесплатного аудита вашей текущей схемы.
Какие задачи решает интеграция с Ozon?
Ручное управление каталогом на маркетплейсе — источник проблем: устаревшие цены, задвоенные товары, ошибки в остатках. Автоматизация через Seller API решает три ключевые задачи:
- Синхронизация товаров: импорт и экспорт номенклатуры с атрибутами (название, бренд, описание, характеристики). Асинхронный импорт требует правильной обработки task_id.
- Синхронизация цен и остатков: обновление в реальном времени из вашей CRM или ERP. Учитываем rate limits и батчинг (до 500 SKU за запрос для остатков).
- Управление заказами: получение новых заказов, обновление статусов (awaiting_packaging → awaiting_deliver → delivered). Интеграция поддерживает FBS и FBO.
Согласно официальной документации Ozon, асинхронные задачи требуют опроса task_id и корректной обработки ошибок.
Почему автоматическая синхронизация выгоднее ручного управления?
Ручное обновление 1000 товаров занимает около 4 часов, а автоматическое — 2 минуты. Разница в 120 раз. При этом исключаются ошибки человеческого фактора: забыли обновить цену — потеряли прибыль. Автоматическая синхронизация гарантирует, что данные на Ozon всегда актуальны, а заказы не зависают из-за устаревших остатков. Кроме того, автоматизация позволяет масштабировать бизнес без найма дополнительных сотрудников.
Как мы реализуем синхронизацию?
Используем паттерн Repository для абстрагирования вызовов API и очередь задач для асинхронных операций. При ошибках (timeout, 429 Too Many Requests) применяем экспоненциальный backoff с ретраями. Laravel 11 с Redis и Horizon позволяет управлять очередями без потери данных.
Аутентификация
$headers = [
'Client-Id' => config('services.ozon.client_id'),
'Api-Key' => config('services.ozon.api_key'),
'Content-Type' => 'application/json',
];
$base = 'https://api-seller.ozon.ru';
Создание/обновление товаров
class OzonProductService
{
public function upsertProduct(Product $product): void
{
$payload = [
'items' => [[
'attributes' => [
['id' => 9048, 'complex_id' => 0, 'values' => [['value' => $product->name]]],
['id' => 4191, 'complex_id' => 0, 'values' => [['value' => $product->brand]]],
['id' => 85, 'complex_id' => 0, 'values' => [['value' => $product->description]]],
],
'barcode' => $product->barcode ?? '',
'description_category_id' => $this->getCategoryId($product),
'name' => $product->name,
'offer_id' => $product->sku,
'price' => (string) $product->price,
'images' => $product->images->pluck('url')->all(),
'vat' => '0.2',
]]
];
$resp = Http::withHeaders($this->headers)
->post("{$this->base}/v3/product/import", $payload);
$taskId = $resp->json('result.task_id');
// Статус создания асинхронный — проверяем по task_id
$this->waitForTask($taskId);
}
private function waitForTask(string $taskId): void
{
for ($i = 0; $i < 30; $i++) {
sleep(2);
$status = Http::withHeaders($this->headers)
->post("{$this->base}/v1/product/import/info", ['task_id' => $taskId])
->json('result.items.0.status');
if ($status === 'imported') return;
if ($status === 'failed') throw new OzonImportException("Task {$taskId} failed");
}
throw new OzonImportException("Task {$taskId} timeout");
}
}
Обновление цен и остатков
public function updatePrices(array $items): void
{
// items: [['offer_id' => 'SKU-123', 'price' => '1990', 'old_price' => '2490']]
Http::withHeaders($this->headers)
->post("{$this->base}/v1/product/import/prices", ['prices' => $items]);
}
public function updateStocks(array $items): void
{
// items: [['offer_id' => 'SKU-123', 'stock' => 15, 'warehouse_id' => 12345]]
Http::withHeaders($this->headers)
->post("{$this->base}/v2/products/stocks", ['stocks' => $items]);
}
Получение заказов
public function getNewOrders(): array
{
$resp = Http::withHeaders($this->headers)
->post("{$this->base}/v3/posting/fbs/list", [
'filter' => [
'since' => now()->subHours(24)->toIso8601String(),
'to' => now()->toIso8601String(),
'status' => 'awaiting_packaging',
],
'limit' => 50,
]);
return $resp->json('result.postings');
}
Асинхронность API
Ozon активно использует асинхронные задачи: создание товаров, обновление остатков большими батчами. Важно правильно обрабатывать task_id и статусы. Мы добавили автоматический повтор при неудаче и уведомления в Telegram при сбоях.
Когда без интеграции не обойтись?
Если ваш каталог превышает 1000 SKU или вы работаете по схеме FBS с частым обновлением остатков, ручная синхронизация становится узким местом. Ошибки в остатках приводят к отменам — каждый отменённый заказ может стоить до 500 ₽ штрафа и потери лояльности. Автоматизация окупается в первые же месяцы.
Сравнение схем Ozon FBS и FBO
| Параметр | FBS (продажа со своего склада) | FBO (продажа со склада Ozon) |
|---|---|---|
| Управление остатками | Вы обновляете остатки вручную или через API | Ozon контролирует остатки автоматически |
| Скорость доставки | Зависит от вашей логистики | Быстрее, товар уже на складе Ozon |
| Риски расхождений | Высокие при частых движениях | Минимальные |
| Штрафы за отмены | Есть | Есть, но реже из-за синхронизации |
| API-методы | /v3/posting/fbs/list, /v2/products/stocks |
В основном те же, но без stock-обновлений |
Выбор схемы зависит от вашей модели продаж. Мы поможем настроить интеграцию под любой вариант.
Наши достижения
Мы работаем с интеграциями Ozon более 5 лет, реализовали 30+ проектов для каталогов от 1000 до 100 000 SKU. Средняя экономия времени после автоматизации — 120 часов в месяц, а снижение отмен заказов — до 90%. Получите консультацию инженера — оценим ваш каталог и расскажем, как автоматизировать Ozon за 2 недели.
Процесс интеграции
- Аналитика: изучаем ваш каталог, API-методы, текущие процессы.
- Проектирование: выбираем паттерн (синхронный/асинхронный), определяем маппинг полей.
- Реализация: пишем код, используя Test-Driven Development для критичных участков.
- Тестирование: нагрузочное тестирование с эмуляцией пиковых нагрузок (например, акция "чёрная пятница").
- Деплой: разворачиваем на вашем сервере (Docker, Nginx, PHP 8.3). Обучаем вашу команду работе с интеграцией.
Что входит в работу
- Полная документация по интеграции (архитектура, эндпоинты, схема данных).
- Настройка мониторинга и алертов (ошибки API, расхождения данных).
- Обучение вашего менеджера работе с логами и статусами.
- Гарантия стабильной работы в течение первых 30 дней после деплоя (бесплатная поддержка).
Сроки
Базовая интеграция (товары + цены + остатки + заказы) — от 12 до 18 рабочих дней. Срок может быть сокращён при наличии готового API-ключа и чёткой структуры данных. Оценим ваш проект бесплатно — свяжитесь с нами для консультации.
Какие типовые ошибки возникают при интеграции и как их избежать?
У интеграции с Ozon есть несколько «граблей», которые мы научились обходить. Во-первых, при импорте товаров неверные атрибуты категории приводят к ошибке. Решение — предварительный запрос description_category_id и validation. Во-вторых, превышение rate limit при обновлении цен вызывает таймауты. Батчинг по 1000 элементов и пауза между запросами снимают проблему. В-третьих, асинхронность обновлений остатков может привести к расхождениям — мы используем очередь с повторной синхронизацией после каждого успешного обновления.
Статусы заказов FBS
| Статус | Описание |
|---|---|
awaiting_packaging |
Ожидает сборки |
awaiting_deliver |
Ожидает передачи курьеру |
delivering |
В доставке |
delivered |
Доставлен |
cancelled |
Отменён |
Получите консультацию инженера — оценим ваш каталог и расскажем, как автоматизировать Ozon за 2 недели. Свяжитесь с нами — бесплатный аудит текущей интеграции.







