Інтеграція Rozetka, KeyCRM і Нова пошта Фулфілмент
Сервіс на Python: замовлення з Rozetka потрапляє на склад Нова пошта Фулфілмент з ТТН і етикеткою за одним статусом у KeyCRM, плюс повідомлення складу у Viber, передоплата за показником викупу й аналітика залишків.
Магазин продає на Rozetka, веде замовлення в KeyCRM, а товар зберігає на складах Нова пошта Фулфілмент. Склад пакує замовлення лише за етикеткою служби доставки, а вбудована інтеграція KeyCRM передавала замовлення на фулфілмент без неї. Тому ТТН для Rozetka Delivery і Meest менеджери створювали вручну в кабінеті Rozetka, а етикетки пересилали окремо. Ми написали сервіс, який робить це сам: менеджер змінює статус у KeyCRM, а замовлення потрапляє на склад з ТТН і PDF-етикеткою. З 12 жовтня 2026 року сервіс працює на сервері замовника і за перші два з половиною тижні передав на склад понад 170 замовлень.
Технічний стек
Python 3.12 + FastAPI на сервері замовника, вебхуки й тригери KeyCRM, API продавця Rozetka (ТТН Rozetka Delivery, Meest і Нової пошти, етикетки, статуси), SOAP-API складу Нова пошта Фулфілмент і Green API для показника викупу. Аналітика залишків рахується в SQLite за таймером systemd.

Один статус замість ручної роботи
Менеджер ставить у KeyCRM статус «Передати на фулфілмент», і тригер KeyCRM надсилає вебхук у сервіс. Сервіс перевіряє доставку, бере наявну ТТН або створює нову через API Rozetka, забирає PDF-етикетку й створює замовлення на складі НП з етикеткою у вкладенні та номером замовлення Rozetka. Склад обирається той, де є весь товар. Артикул Rozetka перекладається в артикул складу, а якщо треба інший, менеджер вписує заміну в поле замовлення чи товару в KeyCRM. Замовлення, яке вже є на складі, вдруге не відправляється. Перше реальне відвантаження пройшло 7 жовтня, і замовник підтвердив, що етикетка дійшла на склад правильно.

Статуси в Rozetka
Від статусів на Rozetka залежить комісія, а KeyCRM міг відкотити статус і скинути вже створену ТТН. Ми розібрали переходи статусів Rozetka й узгодили із замовником, які статуси KeyCRM і куди передаються. Правила налаштували в KeyCRM, а статус передачі на фулфілмент на Rozetka не передається зовсім.
Товар зі свого складу
Частина товару відвантажується не з фулфілменту, а з власного складу. Для цього в KeyCRM є статус «Працівник». Автоматичні ТТН Нової пошти в KeyCRM не створювалися жодного разу, бо служба брала як опис повну назву товару, а НП відхиляла її як задовгу. Тепер ТТН створює сервіс через Rozetka з коротким описом. Працівник складу отримує у Viber повідомлення в тому ж форматі, що раніше писали вручну: номер за день, ТТН, служба, отримувач, артикул, примітка для складу, кількість і посилання на етикетку.

Передоплата для ризикових покупців
Для неоплачених замовлень з оплатою при отриманні сервіс бере з Green API Rozetka показник викупу покупця й записує його в замовлення. Якщо він нижчий за поріг, замовлення на Rozetka переходить в очікування передоплати. Поріг власник задає сам в умові тригера KeyCRM.

Аналітика залишків
Другим етапом ми зробили аналітику залишків. Щоранку о 7:00 сервіс збирає продажі з KeyCRM, залишки й надходження складів НП і рахує швидкість продажів без днів, коли товару не було, сезонність, прогноз, точку замовлення, кількість до замовлення з кратністю, втрачену виручку й ABC. Кожен артикул отримує статус: критично, уточнити залишок, замовити, норма або застій. Результат — звіт-таблиця по всіх артикулах.

Безпека й персональні дані
Замовник просив, щоб у сервісу не було публічного доступу через браузер і щоб персональні дані покупців нікуди не витікали. Сервіс працює на його сервері від окремого користувача без входу в систему. Назовні відкриті лише вебхук із секретом і тимчасові посилання на етикетки, а на будь-яку іншу адресу сервер просто закриває з’єднання.
Підсумок
За нами передача замовлень з Rozetka на склад Нова пошта Фулфілмент з ТТН і етикеткою за одним статусом, вибір складу й артикулів, налаштування статусів KeyCRM ↔ Rozetka, ТТН і повідомлення для власного складу, передоплата за показником викупу, щоденна аналітика залишків і запуск на сервері замовника.
