Webhooks
Notificări outbound de la flowSCMC către sistemele dvs. (ERP, middleware).
Cerințe
- Modul webhooks activ pe companie
- URL HTTPS accesibil public
- Validare semnătură recomandată (HMAC)
Gestionare
| Context | Metodă |
|---|---|
| UI web | Administrare → Webhooks |
| API v1 | CRUD /api/webhooks |
| API v2 | GET/POST /api/v2/webhooks |
Evenimente disponibile
Articole
article.createdarticle.updated
Comenzi vânzare
sales_order.createdsales_order.updatedsales_order.status_changed
Intrări
purchase_order.createdpurchase_order.updatedpurchase_order.status_changedreception.createdreception.updatedreception.partialreception.status_changed
Retururi
return.createdreturn.updatedreturn.status_changed
Stoc
stock.updatedstock.low
Ambalaje
packaging.movement_recorded
Payload
{
"event": "sales_order.status_changed",
"timestamp": "2026-07-29T12:00:00Z",
"data": { }
}
Structura data reflectă entitatea — câmpuri documentate în UI la creare webhook.
Headers livrare
| Header | Valoare |
|---|---|
| Content-Type | application/json |
| X-Webhook-Event | numele evenimentului |
| User-Agent | 3PL-WMS-Webhook/1.0 |
| X-Webhook-Signature | sha256={hmac} (dacă HMAC activ) |
| X-ThreePl-Sandbox | present în medii sandbox |
Autentificare webhook
Tipuri suportate pe model: hmac, bearer, basic, custom.
Verificare HMAC
signature = HMAC-SHA256(secret, raw_body)
Header: X-Webhook-Signature: sha256={hex(signature)}
Configurare pas cu pas
- Modul webhooks activ pe companie
- URL HTTPS public (fără self-signed pe producție)
- Alegeți evenimentele — nu abonați
*dacă nu e necesar - Setați HMAC + secret lung (min. 32 caractere random)
- Implementați handler idempotent (event + id entitate)
- Testați semnătura în Playground înainte de go-live
Politică retry
| Parametru | Valoare tipică |
|---|---|
| Încercări | 5 |
| Backoff | 30s → 2min → 8min → 32min |
| Timeout request | 10 secunde |
Endpoint-ul dvs. trebuie să răspundă 2xx rapid; procesarea grea → ack + coadă internă.
Exemplu payload sales_order.status_changed
{
"event": "sales_order.status_changed",
"timestamp": "2026-07-29T14:00:00Z",
"data": {
"id": 123,
"code": "SO-1-00042",
"status": "LIVRAT",
"partner_id": 5,
"warehouse_id": 1
}
}
Exemplu payload stock.updated
{
"event": "stock.updated",
"timestamp": "2026-07-29T14:05:00Z",
"data": {
"article_id": 10,
"article_code": "SKU-001",
"warehouse_id": 1,
"quantity": 150,
"available": 120
}
}
Atenție: nu procesați același eveniment de două ori fără verificare — retry-urile pot retrimite același payload.
Retry
5 încercări, backoff exponential — configurație platformă. Răspundeți 2xx rapid; procesați async.
Modul Operațiuni
Evenimentele pot fi contorizate separat (billing) chiar dacă webhook-ul nu e configurat — modul operatiuni.
Sandbox
Webhook-urile pot fi dezactivate pentru companii 3PL sandbox — verificați comportamentul în tenant de test.