Статья на модерации
Содержание статьи
Нотификации (webhooks) — это POST-запросы, которые Lamoda отправляет на ваш URL при изменении статуса заказа или товара.
Чек-лист подключения
| № | Действие | Кто делает |
| 1 | Реализовать endpoint для приёма POST-запросов | Вы |
| 2 | Предоставить URL для получения нотификаций | Вы → KAM |
| 3 | Добавить IP Lamoda в whitelist (получить у KAM) | Вы |
| 4 | Предоставить логин/пароль для Basic Auth (опционально) | Вы → KAM |
| 5 | Настроить отправку нотификаций | KAM |
| 6 | Протестировать на Demo-окружении | Вы |
Требования к endpoint
URL
Ваш endpoint должен:
- Принимать POST-запросы
- Быть доступен 24/7
- Работать по HTTPS
- Отвечать быстро (желательно < 5 сек)
Коды ответа
| Код | Поведение Lamoda |
2xx
|
Нотификация успешно доставлена |
3xx
|
↪ Редирект (максимум 5 редиректов) |
4xx
|
Ошибка, повторная отправка НЕ будет |
5xx
|
Повторная отправка по алгоритму |
| Timeout | Повторная отправка по алгоритму |
Алгоритм повторной отправки
При ошибке 5xx или timeout Lamoda повторяет отправку с увеличивающимся интервалом:
| Попытка | Интервал | Пример времени |
| 1 | — | 10:00:00 |
| 2 | 80 сек | 10:01:20 |
| 3 | 240 сек (80×3) | 10:05:20 |
| 4 | 720 сек (80×3×3) | 10:17:20 |
| 5 | 2160 сек (80×3×3×3) | 10:53:20 |
Формула: 80 × 3^(N-1) секунд, где N — номер попытки. Максимум 5 попыток.
Обеспечьте высокую доступность вашего endpoint. Если нотификации были потеряны, используйте метод переотправки.
Типы нотификаций
Тип (type)
|
Описание |
statusChanged
|
Изменился статус заказа |
itemStatusChanged
|
Изменился статус товара в заказе |
fulfilmentShipmentStatusChanged
|
Изменился статус FBO-поставки |
Пример нотификации
{
"type": "statusChanged",
"trackingId": "117391950",
"data": {
"id": "CZ117391950",
"status": "Delivered",
"paymentMethod": "COD",
"fullSum": "12000",
"deliveryPrice": "250.00",
"createdAt": "2025-12-01",
"updatedAt": "2025-12-03 17:48:00",
"currency": "rub",
"items": [
{
"id": 7598,
"status": "Delivered",
"sku": "SELLER-SKU-001",
"paidPrice": 12000,
"size": "42",
"datamatrix": null
}
],
"shippingAddress": {
"city": "Москва",
"street": "Летниковская",
"houseNum": "д.2 с1",
"apartment": "909"
},
"deliveryMethod": {
"deliveryDate": "2025-12-03",
"deliveryIntervalFrom": "15:00",
"deliveryIntervalTo": "18:00",
"shippingMethodName": "Курьерская доставка Lamoda Express"
},
"customer": {
"firstName": "Иван",
"lastName": "Петров",
"phone": "+79001234567"
}
},
"date": "2025-12-03 17:48:00",
"sequenceNumber": 5
}
Пример обработчика (Python)
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/lamoda/webhook', methods=['POST'])
def handle_webhook():
data = request.json
notification_type = data.get('type')
order_id = data['data']['id']
status = data['data']['status']
print(f"Received: {notification_type}, Order: {order_id}, Status: {status}")
# Обработка по типу нотификации
if notification_type == 'statusChanged':
process_order_status(data['data'])
elif notification_type == 'itemStatusChanged':
process_item_status(data['data'])
# Важно: вернуть 200 быстро!
return jsonify({"status": "ok"}), 200
def process_order_status(order_data):
# Ваша бизнес-логика
pass
def process_item_status(order_data):
# Ваша бизнес-логика
pass
Переотправка нотификаций
Если вы пропустили нотификации, можно запросить их повторно:
POST /api/v1/notifications/resend
{
"trackingIds": ["CZ117391950", "CZ117391951", "CZ117391952"]
}
Ограничения переотправки
- Максимум 100 заказов в одном запросе
- Один заказ можно запросить не чаще 1 раза в 15 минут
- Переотправляются ВСЕ нотификации по заказу
Тестирование на Demo
На Demo-окружении можно протестировать получение нотификаций по сценариям:
POST /api/v1/orders/{orderNr}/status
{
"scenario": "delivered"
}
Доступные сценарии
| Сценарий | Описание |
delivered
|
Заказ доставлен клиенту |
notDelivered
|
Адрес вне зоны доставки |
notBought
|
Клиент отказался от товара |
partialBought
|
Частичный выкуп (1 из 2 товаров) |
postponed
|
Доставка перенесена |
Best Practices
Рекомендации
- Отвечайте быстро — вернуть 200 и обработать асинхронно
- Идемпотентность — обрабатывайте дубли корректно (по sequenceNumber)
- Не валидируйте количество полей — новые поля могут добавляться
- Логируйте всё — тело запроса, время, результат обработки
- Мониторинг — отслеживайте количество ошибок
Обратная совместимость
Lamoda гарантирует:
- Существующие поля не удаляются
- Тип существующих полей не изменяется
- Новые поля могут добавляться
Не отклоняйте нотификацию, если в ней появилось новое поле. Игнорируйте неизвестные поля.
См. также
Помогла эта информация?
Спасибо за отзыв
0/1000
Отправить