---
title: "Wildberries и n8n: заказы и остатки | Nodbot"
source_url: "https://nodbot.ru/integrations/wildberries/"
canonical_url: "https://nodbot.ru/integrations/wildberries/"
language: "ru"
content_type: "IntegrationGuide"
section: "integrations"
generated_at: "2026-05-30"
word_count_source: 1000
---

# Интеграция Wildberries и n8n: заказы, остатки и цены без ручных CSV

## AI summary

Problem/Solution-гайд по Wildberries и n8n: как автоматизировать WB API для заказов, остатков и цен без oversell, дублей и опасных массовых обновлений.

## Best used for

Страница подходит для специалистов, которым нужна production-интеграция, а не общий обзор: конкретная боль, workflow JSON, payload, Code Node, тесты, риски и чек-лист готовности.

## Key topics

- Проблема и решение
- Архитектура workflow
- Контракт входных данных
- Нормализация и проверка данных
- Готовый workflow JSON
- Пошаговая настройка
- Тесты перед production
- Production-риски
- Критерии готовности

## Source outline

Проблема: Wildberries API даёт доступ к заказам, остаткам, ценам и отчётам, но без слоя контроля workflow легко перезаливает весь каталог, продаёт больше доступного остатка или меняет цены без объяснимой причины.

Решение: Решение — обрабатывать WB как операционный канал: хранить mapping nmID/vendorCode/barcode/internal_sku, считать доступный остаток с safety stock, делать idempotent import заказов и отправлять цены только после policy-check.

### Контракт входных данных

```json
{
  "event_id": "wb-order-981244",
  "event_type": "fbs_order.created",
  "wb_order_id": "981244",
  "rid": "wb-rid-001",
  "nm_id": 123456789,
  "vendor_code": "SKU-001",
  "barcode": "4600000000011",
  "warehouse_id": "wb-fbs-msk",
  "qty": 1,
  "price": 3490,
  "customer_region": "Москва",
  "created_at": "2026-05-30T10:00:00+03:00"
}
```

### Code Node

```javascript
const src = $json.body ?? $json;
const vendorCode = String(src.vendor_code ?? src.vendorCode ?? '').trim().toUpperCase();
const nmId = Number(src.nm_id ?? src.nmID ?? 0);
const barcode = String(src.barcode ?? '').trim();
const wbOrderId = String(src.wb_order_id ?? src.orderId ?? '').trim();
if (!wbOrderId) throw new Error('No Wildberries order id');
if (!vendorCode && !barcode && !nmId) throw new Error(`No WB mapping keys for order ${wbOrderId}`);
const availableQty = Math.max(0, Number(src.stock_physical ?? src.qty ?? 0) - Number(src.reserve ?? 0) - Number(src.safety_stock ?? 1));
return [{ json: {
  idempotency_key: `wildberries:fbs:${wbOrderId}`,
  mapping: { vendor_code: vendorCode, nm_id: nmId, barcode },
  warehouse_id: String(src.warehouse_id ?? ''),
  available_qty_for_wb: availableQty,
  operation: src.event_type?.includes('order') ? 'import_order' : 'sync_stock',
  price_policy: { max_drop_percent: 15, require_approval: Number(src.price_change_percent ?? 0) < -15 },
  audit: { event_id: src.event_id, received_at: new Date().toISOString() }
}}];
```

### Критерии готовности

- Каждый WB order id обрабатывается один раз.
- Для SKU есть mapping и правило unknown/review.
- Остаток считается как available qty, а не копируется напрямую.
- Изменения цены проходят policy-check и dry-run.
- Есть reconciliation-отчёт и безопасный replay.

## Related Nodbot pages

- [МойСклад и n8n](/integrations/moysklad/)
- [Ozon и n8n](/integrations/ozon/)
- [Retry и DLQ для HTTP Request](/workflows/retry-dlq-http-request/)
