Типы нотификаций
Lamoda B2B Platform Partner API Lamoda отправляет нотификации (webhooks) при изменении статусов заказов, товаров и поставок. На этой странице описаны все типы нотификаций, их структура и поведение.
Обзор типов
| Тип | Триггер | Модели |
statusChanged
|
Изменился статус заказа | FBS, FBO, Dropshipping |
itemStatusChanged
|
Изменился статус товара в заказе | FBS, FBO, Dropshipping |
fulfilmentShipmentStatusChanged
|
Изменился статус поставки (FBO) или отгрузки (FBS) | FBO, FBS |
statusChanged — Статус заказа
Отправляется только при изменении статуса заказа целиком (New to be confirmed → Confirmed → Shipped → Delivered и т.д.).
statusChanged НЕ отправляется. В этом случае приходит только itemStatusChanged.
Нотификация содержит полную информацию о заказе, включая все товары, адрес, способ доставки и данные клиента.
{
"type": "statusChanged",
"trackingId": "117391950",
"data": {
"id": "CZ117391950",
"status": "Delivered",
"paymentMethod": "COD",
"fullSum": "12000.00",
"basePrice": 12000,
"salePrice": 12000,
"paidPrice": 12000,
"partnerAgreedPrice": 12000,
"couponDiscount": 0,
"loyaltyDiscount": 0,
"partnerAgreedDiscount": 0,
"otherDiscounts": 0,
"totalDiscount": 0,
"deliveryPrice": "250.00",
"rejectPrice": 150,
"itemQuantity": 1,
"currency": "rub",
"shippingType": "fulfilment",
"platform": "marketplace",
"comment": null,
"confirmationFailedCode": null,
"confirmationFailedReason": null,
"externalOrderNumber": null,
"externalTrackingNumber": [],
"createdAt": "2025-05-25",
"updatedAt": "2025-05-29 18:00:15",
"paymentDate": null,
"dates": {
"delivered": "2025-05-29 17:48:00",
"shipped": "2025-05-27 23:26:15"
},
"items": [
{
"id": "7598",
"status": "Delivered",
"finalERPStatus": "sold",
"sku": "SELLERSKU104",
"description": "Кроссовки Nike Air Max",
"size": "42",
"basePrice": "12000.00",
"salePrice": "12000.00",
"paidPrice": "12000.00",
"partnerAgreedPrice": "12000.00",
"couponDiscount": "0.00",
"loyaltyDiscount": "0.00",
"partnerAgreedDiscount": "0.00",
"otherDiscounts": "0.00",
"totalDiscount": "0.00",
"datamatrix": null,
"datamatrixCode": null,
"statusChangeReason": null,
"discrepancyAct": null
}
],
"shippingAddress": {
"id": 12345,
"zipcode": "115114",
"region": "Москва",
"city": "Москва",
"street": "Летниковская",
"houseNum": "д.2 с1",
"apartment": "909",
"cityId": "7700000000000",
"streetId": "77000000000170700",
"buildingId": "770000000001707000001",
"pickupPointId": null
},
"deliveryMethod": {
"deliveryPrice": "250.00",
"deliveryDate": "2025-05-29",
"deliveryIntervalFrom": "15:00",
"deliveryIntervalTo": "18:00",
"deliveryIntervalId": 514877540,
"hasIntervals": true,
"shippingMethodName": "Курьерская доставка Lamoda Express",
"shippingMethodCode": "lamoda",
"serviceLevelTypeCode": "economy_b2b",
"serviceLevelTypeName": "Без примерки",
"shippingMethodTypeCode": "delivery_service",
"cutOff": "2025-06-04 03:00:00"
},
"customer": {
"firstName": "Иван",
"lastName": "Каминский",
"middleName": "Сергеевич",
"phone": "+79016666666",
"email": "ivan@example.com"
},
"tracking": {
"trackingId": "TR-2025-117391950",
"trackingUrl": "https://www.lamoda.ru/tracking/TR-2025-117391950"
}
},
"date": "2025-05-29 18:00:15",
"sequenceNumber": 5
}
itemStatusChanged — Статус товара
Отправляется при изменении статуса отдельного товара в заказе. Особенно важно при частичном выкупе, когда заказ в статусе «Delivered», но один или несколько товаров в статусе «Not bought».
itemStatusChanged всегда содержит все товары заказа с их текущими статусами, а не только изменившийся товар.
{
"type": "itemStatusChanged",
"trackingId": "20018856",
"data": {
"id": "CZ20018856",
"status": "Delivered",
"fullSum": "5500.00",
"currency": "rub",
"itemQuantity": 2,
"items": [
{
"id": "12345",
"status": "Delivered",
"finalERPStatus": "sold",
"sku": "SKU-001",
"description": "Футболка хлопковая",
"size": "M",
"basePrice": "3000.00",
"salePrice": "3000.00",
"paidPrice": "3000.00",
"partnerAgreedPrice": "3000.00",
"couponDiscount": "0.00",
"loyaltyDiscount": "0.00",
"partnerAgreedDiscount": "0.00",
"otherDiscounts": "0.00",
"totalDiscount": "0.00",
"datamatrix": "010467003301005321gJk6...",
"datamatrixCode": null,
"statusChangeReason": null,
"discrepancyAct": null
},
{
"id": "12346",
"status": "Not bought",
"finalERPStatus": "rejected",
"sku": "SKU-002",
"description": "Джинсы slim fit",
"size": "32",
"basePrice": "2500.00",
"salePrice": "2500.00",
"paidPrice": "0.00",
"partnerAgreedPrice": "2500.00",
"couponDiscount": "0.00",
"loyaltyDiscount": "0.00",
"partnerAgreedDiscount": "0.00",
"otherDiscounts": "0.00",
"totalDiscount": "0.00",
"datamatrix": null,
"datamatrixCode": null,
"statusChangeReason": "Не подошёл размер",
"discrepancyAct": null
}
]
},
"date": "2025-12-02 16:11:30",
"sequenceNumber": 4
}
Когда приходит itemStatusChanged без statusChanged
Если статус товара изменился, но статус заказа — нет, нотификация statusChanged НЕ отправляется. Типичные сценарии:
- Невыкупленный товар вернулся на склад — заказ уже «Delivered»
- Изменился
finalERPStatusтовара — заказ по-прежнему «Delivered» - Начался процесс возврата одного товара — статус заказа не меняется
fulfilmentShipmentStatusChanged — Статус поставки / отгрузки
Отправляется при изменении статуса поставки на склад Lamoda (FBO — входящие поставки) или отгрузки со склада (FBS — исходящие отгрузки).
fulfilmentShipmentStatusChanged в текущей версии OpenAPI-спецификации отсутствует в enum поля type (указаны только statusChanged и itemStatusChanged). Несмотря на это, тип подтверждён кодом и активно используется. Учитывайте это при валидации payload на своей стороне.
Пример нотификации (FBO — входящая поставка)
{
"type": "fulfilmentShipmentStatusChanged",
"createdAt": "2025-12-05T14:20:00+03:00",
"data": {
"id": 12345,
"shipmentId": "SHIP-2025-001234",
"status": "received",
"itemQuantity": 100,
"priceSum": 250000.00,
"receipt": 97,
"accepted": 95,
"surplus": 2,
"missing": 5,
"damaged": 2,
"unknownSurplus": 0,
"items": [
{
"sku": "SELLER-SKU-001",
"ean": "4607123456789",
"quantity": 100,
"receipt": 97,
"accepted": 95,
"surplus": 2,
"missing": 5,
"damaged": 2
}
]
}
}
Пример нотификации (FBS — исходящая отгрузка)
{
"type": "fulfilmentShipmentStatusChanged",
"createdAt": "2025-01-21T09:00:00+03:00",
"data": {
"id": 98765,
"shipmentId": "OUT-2025-005678",
"direction": "out",
"status": "initial",
"itemQuantity": 15,
"priceSum": 45000.00,
"updatedAt": "2025-01-21T09:00:00+03:00"
}
}
Статусы поставки
Классический workflow:
| Статус | Описание |
initial
|
Начальный статус (FBS-отгрузка создана) |
new
|
Поставка создана, ожидает подтверждения |
confirmed
|
Подтверждена, идёт регистрация |
sent
|
Зарегистрирована в системе, отправлена |
rejected
|
Отклонена (расхождение данных) |
received
|
Принята по количеству |
closed
|
Закрыта по качеству, товары на стоке |
cancelled
|
Отменена |
Расширенный FBO-workflow (дополнительные статусы для поставок FBO):
| Статус | Описание |
draft
|
Черновик (начальный статус для FBO) |
validation
|
На валидации |
validation_error
|
Ошибка валидации |
ready_for_shipment
|
Готова к отгрузке |
cancel_pending
|
Ожидает отмены |
unloading_needed
|
Требуется разгрузка |
unloading
|
Разгружается |
unloaded
|
Разгружена |
processing
|
Обрабатывается на складе |
confirmed, received). Набор доступных статусов зависит от workflow поставки (классический или расширенный FBO).
Доступность по моделям
| Тип | FBS | FBO | Dropshipping |
| statusChanged | |||
| itemStatusChanged | |||
| fulfilmentShipmentStatusChanged | — |
fulfilmentShipmentStatusChanged отправляется для исходящих отгрузок (direction: "out"). Для FBO — для входящих поставок.
Дополнительные REST-события
Помимо трёх основных типов, система поддерживает дополнительные configurable REST-события. Подписка на них управляется через API нотификаций (Настройка вебхуков).
| Имя события | Описание |
orderCreated
|
Создан новый заказ |
orderStatusChanged
|
Изменился статус заказа (внутреннее событие, отправляется как statusChanged)
|
orderRepresentStatusChanged
|
Изменился статус заказа (представление для партнёра) |
itemRepresentStatusChanged
|
Изменился статус товара (представление для партнёра) |
orderAndItemsStatusChanged
|
Изменился статус заказа и товаров одновременно |
shipmentOutReceivedRest
|
Получена исходящая поставка |
fulfilmentShipmentValidationRest
|
Результат валидации поставки |
moderationRejected
|
Модерация карточки товара отклонена |
moderationApproved
|
Модерация карточки товара одобрена |
nomenclatureSubscriptionUpdated
|
Обновлена подписка на номенклатуру |
purchaseOrderDirectFlowCreated
|
Создан заказ на закупку (прямой поток) |
purchaseOrderReverseFlowCreated
|
Создан заказ на возврат поставщику |
supplierReturnCancelProcessedEvent
|
Обработана отмена возврата поставщику |
configurable. Только configurable-события доступны для подписки через API. Актуальный список можно получить через GET /dictionary → notificationEvents.
Структура нотификации
Все нотификации заказов (statusChanged, itemStatusChanged) имеют общие поля:
| Поле | Тип | Описание |
type
|
string |
Тип нотификации (statusChanged, itemStatusChanged, fulfilmentShipmentStatusChanged)
|
trackingId
|
string | Номер заказа партнёра (без префикса) |
data
|
object | Полные данные объекта (заказ или поставка) |
date
|
datetime |
Время события (формат: YYYY-MM-DD HH:MM:SS)
|
sequenceNumber
|
integer | Порядковый номер изменения для данного заказа |
sequenceNumber
Используйте для обработки дублей и определения порядка событий. Номер увеличивается при каждом изменении статуса заказа.
sequenceNumber пришедшей нотификации меньше или равен уже обработанному — игнорируйте её, т.к. данные устарели.
Полная структура data в нотификации заказа
Объект data для нотификаций statusChanged и itemStatusChanged содержит полную информацию о заказе:
Основные поля заказа
| Поле | Тип | Описание |
id
|
string |
ID заказа (с префиксом страны, например CZ20018856)
|
status
|
string | Текущий статус заказа |
paymentMethod
|
string |
Способ оплаты (COD, prepaid)
|
fullSum
|
string | Полная сумма заказа |
deliveryPrice
|
string | Стоимость доставки |
rejectPrice
|
integer | Стоимость возврата |
itemQuantity
|
integer | Количество товаров в заказе |
currency
|
string |
Валюта (rub)
|
shippingType
|
string |
Тип отгрузки (fulfilment)
|
platform
|
string |
Платформа (marketplace)
|
comment
|
string | Комментарий к заказу |
confirmationFailedCode
|
string | Код причины неподтверждения |
confirmationFailedReason
|
string | Описание причины неподтверждения |
externalOrderNumber
|
string | Внешний номер заказа |
externalTrackingNumber
|
array | Внешние трек-номера (массив строк) |
createdAt
|
string | Дата создания заказа |
updatedAt
|
string | Дата последнего обновления |
paymentDate
|
string | Дата оплаты |
dates
|
object |
Даты ключевых событий: delivered, shipped
|
Ценовые поля уровня заказа
| Поле | Тип | Описание |
basePrice
|
integer | Базовая цена (сумма по заказу) |
salePrice
|
integer | Цена продажи |
paidPrice
|
integer | Оплаченная цена |
partnerAgreedPrice
|
integer | Согласованная цена партнёра |
couponDiscount
|
integer | Скидка по купону |
loyaltyDiscount
|
integer | Скидка программы лояльности |
partnerAgreedDiscount
|
integer | Согласованная скидка партнёра |
otherDiscounts
|
integer | Прочие скидки |
totalDiscount
|
integer | Общая скидка |
Поля товара (items[])
| Поле | Тип | Описание |
id
|
string | ID товара в заказе |
status
|
string | Текущий статус товара |
finalERPStatus
|
string |
Финальный ERP-статус (sold, rejected, claimed_ok и т.д.)
|
sku
|
string | Артикул товара партнёра |
description
|
string | Описание товара |
size
|
string | Размер товара |
basePrice
|
string | Базовая цена (до скидок) |
salePrice
|
string | Цена продажи |
paidPrice
|
string | Оплаченная цена |
partnerAgreedPrice
|
string | Согласованная цена партнёра |
couponDiscount
|
string | Скидка по купону |
loyaltyDiscount
|
string | Скидка программы лояльности |
partnerAgreedDiscount
|
string | Согласованная скидка партнёра |
otherDiscounts
|
string | Прочие скидки |
totalDiscount
|
string | Общая скидка |
datamatrix
|
string | Код маркировки DataMatrix (UIT) |
datamatrixCode
|
string | Альтернативное поле кода маркировки |
statusChangeReason
|
string | Причина изменения статуса |
discrepancyAct
|
string | Акт расхождений |
Адрес доставки (shippingAddress)
| Поле | Тип | Описание |
id
|
integer | ID адреса |
zipcode
|
string | Почтовый индекс |
region
|
string | Регион |
city
|
string | Город |
street
|
string | Улица |
houseNum
|
string | Номер дома |
apartment
|
string | Квартира |
cityId
|
string | ФИАС-код города |
streetId
|
string | ФИАС-код улицы |
buildingId
|
string | ФИАС-код здания |
pickupPointId
|
string | ID пункта выдачи (если самовывоз) |
Способ доставки (deliveryMethod)
| Поле | Тип | Описание |
deliveryPrice
|
string | Стоимость доставки |
deliveryDate
|
string | Дата доставки |
deliveryIntervalFrom
|
string | Начало интервала доставки |
deliveryIntervalTo
|
string | Конец интервала доставки |
deliveryIntervalId
|
integer | ID интервала доставки |
hasIntervals
|
boolean | Доступны ли интервалы доставки |
shippingMethodName
|
string | Название способа доставки |
shippingMethodCode
|
string | Код способа доставки |
serviceLevelTypeCode
|
string |
Код уровня сервиса (economy_b2b, standard_b2b)
|
serviceLevelTypeName
|
string | Название уровня сервиса |
shippingMethodTypeCode
|
string |
Тип метода доставки (delivery_service)
|
cutOff
|
string | Крайний срок подтверждения/отгрузки |
Клиент (customer)
| Поле | Тип | Описание |
firstName
|
string | Имя |
lastName
|
string | Фамилия |
middleName
|
string | Отчество |
phone
|
string | Телефон |
email
|
string |
Трекинг (tracking)
| Поле | Тип | Описание |
trackingId
|
string | ID для отслеживания |
trackingUrl
|
string | URL для отслеживания доставки |
Сценарий: частичный выкуп
Пример последовательности нотификаций при частичном выкупе (2 товара, 1 выкуплен):
| Событие | Статус заказа | Товар 1 | Товар 2 | Нотификации |
| Заказ создан | New to be confirmed | New to be confirmed | New to be confirmed | statusChanged |
| Подтверждён | Confirmed | Confirmed | Confirmed | statusChanged |
| Отгружен | Shipped | Shipped | Shipped | statusChanged |
| Доставлен, частичный выкуп | Delivered | Delivered | Not bought | statusChanged + itemStatusChanged |
| Товар 2 на складе | Delivered | Delivered | Returned | только itemStatusChanged |
statusChanged НЕ приходит, потому что статус заказа не изменился (остался «Delivered»). Приходит только itemStatusChanged.
См. также
Помогла эта информация?
Спасибо за отзыв