Skip to main content
CasaBlogGuideStato di consegna dell'API di spedizione: codici di stato, webhook e avvisi sulle eccezioni

Stato di consegna dell'API di spedizione: codici di stato, webhook e avvisi sulle eccezioni

17TRACK

Uno stato di consegna dell’API di spedizione descrive l’avanzamento di un pacco, non se una richiesta API ha avuto esito positivo. Per creare un sistema di tracciamento affidabile, mantieni separati i codici di risposta HTTP dagli stati della spedizione, elabora i webhook senza presumere che arrivino una sola volta o in ordine e trasforma le eccezioni che richiedono un’azione in avvisi con responsabili chiari. Per i team di ingegneria e delle operazioni ecommerce, l’obiettivo è un record della spedizione che rimanga affidabile quando gli aggiornamenti del corriere sono ritardati, duplicati o corretti.

Stato di consegna dell’API di spedizione, codici di stato, webhook e avvisi sulle eccezioni

Questa guida spiega come strutturare tale record, gestire gli eventi di tracciamento in ingresso e distinguere un problema di consegna da un problema di integrazione del tracciamento.

Separa i codici HTTP, i risultati dell’API e gli stati della spedizione

L’espressione “codice di stato” può riferirsi a tre livelli diversi. Confonderli crea dashboard fuorvianti e notifiche clienti non necessarie.

LivelloCosa indicaEsempio di interpretazione
Risposta HTTPIl risultato della richiesta HTTPUna risposta 200 indica un esito positivo a livello HTTP; non significa che il pacco sia stato consegnato.
Risultato aziendale dell’APISe l’operazione richiesta è riuscita secondo le regole applicative del providerIl corpo della risposta può indicare che la registrazione del tracciamento è stata rifiutata, anche all’interno di una risposta HTTP riuscita, se l’API è progettata in questo modo.
Stato della spedizioneLo stato fisico o operativo comunicato del paccoIn transito, in attesa di ritiro o consegnato.

Lo standard sulla semantica HTTP definisce il significato delle risposte HTTP. Ad esempio, 202 Accepted significa che una richiesta è stata accettata per l’elaborazione, ma che l’elaborazione non è necessariamente terminata. Non dimostra che un corriere abbia accettato un pacco.

Allo stesso modo, una richiesta di tracciamento non riuscita non dimostra che una spedizione abbia smesso di muoversi. La tua applicazione potrebbe perdere temporaneamente visibilità mentre la consegna fisica prosegue normalmente. Monitora questi livelli separatamente.

Crea un modello di stato senza eliminare i dettagli del corriere

Non esiste un codice numerico universale dello stato di consegna condiviso da ogni API di spedizione e da ogni corriere. Un valore proveniente da un’integrazione non deve essere interpretato utilizzando la mappatura di un altro provider. Usa la documentazione della versione specifica dell’API che implementi.

Un modello interno pratico combina un piccolo insieme di stati normalizzati con l’evento originale del corriere. La normalizzazione consente una reportistica coerente; l’evento originale conserva i dettagli necessari per le verifiche.

Stato interno esemplificativoSignificatoAvvertenza operativa
Informazioni ricevuteEsistono informazioni elettroniche sulla spedizione.Non considerare la creazione dell’etichetta come una conferma della consegna fisica al corriere.
In transitoIl record di tracciamento indica un movimento nella rete di consegna.Questa categoria ampia può includere fasi di trasporto diverse.
In consegnaIl pacco risulta su un percorso di consegna.Non trasformare questo stato in una garanzia incondizionata di consegna.
In attesa di ritiroSi prevede che il destinatario ritiri il pacco.Includi istruzioni o scadenze per il ritiro solo quando sono supportate dalla fonte.
ConsegnatoLa fonte del tracciamento segnala la consegna.Una scansione di consegna, da sola, non risolve la contestazione del cliente relativa alla mancata ricezione.
EccezioneUn evento può richiedere attenzione o interrompere il normale avanzamento.Conserva il motivo invece di considerare ogni eccezione come una perdita.
Reso in corso o restituitoIl pacco sta tornando indietro o è stata segnalata la conclusione del reso.Mantieni distinto il progresso del reso dalla consegna al destinatario originale.
SconosciutoLe informazioni disponibili non possono essere mappate con sufficiente certezza.Indaga sulla mappatura o sulla lacuna dei dati invece di inventare uno stato di consegna.

Queste etichette sono un modello applicativo suggerito, non un elenco ufficiale dei codici 17TRACK. Conserva, quando disponibili, il codice di stato del provider, il sottostato, la descrizione, l’ora dell’evento, le informazioni sul fuso orario, la posizione e l’ora di ricezione. Conserva inoltre la versione della mappatura, in modo che le modifiche future possano essere verificate.

Per un’implementazione multi-corriere, 17TRACK Tracking API è un’opzione di integrazione pertinente. Usa la sua documentazione ufficiale dell’API per definire il contratto di implementazione, invece di copiare etichette esemplificative nei campi specifici del provider. Conferma le definizioni degli stati applicabili, la configurazione dei webhook, i requisiti di autenticazione e la semantica delle risposte prima di creare l’adapter.

Costruisci la gestione dei webhook intorno a una ricezione duratura

Un webhook è una richiesta HTTP inviata al tuo endpoint per segnalare un evento. Può ridurre la necessità di effettuare polling ripetuti, ma non deve essere considerato una garanzia di consegna immediata, ordinata o esattamente una volta. Progetta il ricevitore affinché tolleri tentativi ripetuti, interruzioni e payload imprevisti, salvo garanzie esplicite diverse da parte del provider.

  1. Autentica la richiesta. Applica il metodo di verifica documentato dal provider. Se sono supportate firme, convalidale usando l’algoritmo specificato e i byte grezzi della richiesta. Non inventare un’intestazione di firma e non presumere che ogni servizio utilizzi HMAC.
  2. Convalida il payload. Controlla i campi obbligatori, i tipi, le dimensioni del payload e l’associazione con una spedizione gestita dal tuo account. Gestisci i campi opzionali sconosciuti senza compromettere inutilmente la compatibilità futura.
  3. Salva prima di confermare. Memorizza l’evento accettato o inseriscilo in una coda duratura prima di inviare la risposta di successo documentata. Se il salvataggio non riesce, non confermare che l’evento sia stato ricevuto in sicurezza.
  4. Elabora in modo asincrono. Esegui la mappatura degli stati, gli aggiornamenti degli ordini e le decisioni sulle notifiche al di fuori del gestore della richiesta, quando pratico.
  5. Rendi idempotenti gli effetti collaterali. Un evento ripetuto non deve creare un altro ticket di assistenza né inviare un’altra copia dello stesso messaggio al cliente.

Il codice di conferma esatto, il timeout, la pianificazione dei tentativi e il comportamento di riproduzione dipendono dal provider. Verifica esplicitamente questi dettagli. Un’istruzione generica come “restituisci 200” non sostituisce il contratto del webhook.

Usa HTTPS e tieni le credenziali fuori dagli URL e dai log ordinari. Applica controlli di accesso ai payload memorizzati, poiché i dati di tracciamento possono contenere informazioni personali. La OWASP REST Security Cheat Sheet offre indicazioni pertinenti sulla protezione del trasporto, sulla convalida degli input e sulla sicurezza degli endpoint.

Deduplica gli eventi senza sopprimere gli aggiornamenti reali

Preferisci un identificatore dell’evento stabile e documentato, quando disponibile. In caso contrario, ricava una chiave di deduplicazione da una combinazione accuratamente selezionata di identità della spedizione, timestamp dell’evento, codice dell’evento e posizione. Testa questo approccio con payload reali: due eventi legittimi possono condividere lo stesso timestamp e lo stesso evento può arrivare con un testo descrittivo leggermente diverso.

Usa controlli di deduplicazione separati per l’acquisizione degli eventi e per le azioni a valle. Un aggiornamento dello stato potrebbe dover essere memorizzato nuovamente come correzione, mentre la relativa notifica al cliente dovrebbe rimanere soppressa. Assegna a ogni notifica o azione di ticket una propria identità duratura.

Mantieni separati l’orario dell’evento e quello di ricezione

Supponiamo che un evento “in transito” raggiunga il tuo sistema dopo un evento “in consegna”, ma che il timestamp del corriere sia precedente. Memorizzalo nella cronologia senza riportare automaticamente lo stato corrente a “in transito”.

L’ordinamento basato solo sui timestamp non è sufficiente in ogni caso. Fusi orari mancanti, scansioni corrette e fonti in conflitto richiedono regole esplicite. Conserva la precisione e gli offset dei timestamp, registra quando il sistema ha ricevuto ogni evento e usa le informazioni documentate sulla sequenza del provider, quando disponibili. Non imporre una rigida progressione degli stati solo in avanti: tentativi di consegna, reindirizzamenti, resi e correzioni possono creare transizioni legittime che sembrano procedere all’indietro.

Trasforma le eccezioni in azioni assegnate

Un avviso di eccezione dovrebbe spiegare cosa è successo, quale azione è necessaria e chi è responsabile del passaggio successivo. Un messaggio generico come “eccezione della spedizione” costringe il personale operativo a ripetere la stessa verifica e può allarmare i clienti senza aiutarli.

Inizia con una piccola politica di instradamento:

  • Problema di indirizzo o accesso: indirizza al supporto clienti per verificare il problema e controllare la procedura di correzione disponibile presso il corriere. Non promettere una modifica dell’indirizzo prima di aver confermato che sia possibile.
  • Ritiro necessario: avvisa il destinatario quando la fonte fornisce istruzioni utilizzabili per il ritiro. Conserva ogni scadenza verificata.
  • Azione doganale necessaria: assegna il caso in base a chi deve fornire i documenti o le informazioni richiesti. Un evento relativo alla dogana, da solo, non dimostra che sia dovuto un pagamento.
  • Tentativo di consegna non riuscito: verifica il passaggio successivo segnalato prima di consigliare una nuova consegna o il ritiro.
  • Restituzione al mittente: apri una verifica operativa. Non emettere automaticamente un rimborso solo sulla base di un’etichetta di tracciamento generica, salvo che la tua politica lo autorizzi esplicitamente.
  • Perdita o danno segnalati dal corriere: indirizza al responsabile dei reclami e conserva le prove dell’evento. Mantieni separate le decisioni sui reclami dal rilevamento generale dei ritardi.

Ogni avviso dovrebbe contenere un identificativo della spedizione, il riferimento dell’ordine, il motivo dell’evento, il timestamp della fonte, l’ultimo stato noto, il responsabile assegnato e l’azione successiva. Includi un link al record interno pertinente invece di esporre dettagli cliente non necessari nei canali di messaggistica condivisi.

Tratta la “mancanza di aggiornamenti” come una condizione separata

Una spedizione senza scansioni recenti non è automaticamente persa. Potrebbe trovarsi tra due punti di controllo, essere in attesa della prima scansione fisica o essere interessata da una lacuna di visibilità.

Definisci le soglie di inattività in base al servizio, al percorso, alla fase di spedizione e all’impegno commerciale, invece di applicare un unico timer universale. Distingui un pacco che non ha mai ricevuto una scansione di accettazione da uno che ha smesso di aggiornarsi dopo l’ingresso nella rete. Se le prove storiche sono limitate, usa la soglia per avviare un’indagine, non per dichiarare una perdita.

Sopprimi gli avvisi ripetuti mentre un caso invariato rimane aperto. Escala il caso quando compare una nuova prova, non viene rispettato un follow-up concordato o l’impegno di consegna al cliente richiede un intervento.

Monitora separatamente lo stato dell’integrazione e le prestazioni della consegna

Il monitoraggio dell’API risponde alla domanda se l’integrazione del tracciamento funziona. Il monitoraggio della consegna risponde alla domanda su cosa sta accadendo alle spedizioni. Un endpoint funzionante può ricevere dati obsoleti dal corriere, mentre un endpoint non disponibile può perdere aggiornamenti relativi a pacchi che si stanno muovendo normalmente.

  • Stato delle richieste: monitora errori di autenticazione, timeout, risposte di limite di frequenza, errori del server e rifiuti a livello applicativo.
  • Stato dei webhook: monitora errori di verifica, latenza delle conferme, errori di persistenza, consegne duplicate ed errori di elaborazione.
  • Stato dell’elaborazione: monitora l’età della coda, gli eventi non elaborati, gli errori di mappatura e gli errori delle notifiche.
  • Aggiornamento del tracciamento: misura separatamente il tempo trascorso dall’ultimo evento della fonte e quello dall’ultima acquisizione riuscita.
  • Risultati operativi: monitora le eccezioni irrisolte, il tempo necessario per assegnare un responsabile e i follow-up scaduti.

Per i tentativi ripetuti delle richieste, segui le indicazioni del provider sui limiti di frequenza e sui retry. Evita di ripetere ciecamente operazioni che potrebbero creare registrazioni duplicate o altri effetti collaterali; usa i meccanismi di idempotenza documentati, quando disponibili.

Quando supportato, usa un processo di riconciliazione per recuperare il record di tracciamento più recente dopo interruzioni o sospette perdite di eventi. Imposta la frequenza entro i limiti contrattuali e di frequenza. Webhook e riconciliazione hanno scopi diversi: il primo distribuisce le modifiche, mentre la seconda aiuta a rilevare e riparare le lacune.

Testa i casi di errore prima di abilitare le notifiche ai clienti

Inizia con un’elaborazione riservata all’uso interno e controlla spedizioni rappresentative prima di consentire agli aggiornamenti di stato di inviare messaggi ai clienti. Testa più del normale passaggio da “in transito” a “consegnato”.

  • Un webhook duplicato crea una sola notifica cliente prevista.
  • Un evento precedente che arriva in ritardo non sostituisce erroneamente lo stato corrente.
  • Uno stato sconosciuto viene conservato e segnalato invece di essere mappato silenziosamente come “consegnato”.
  • Una scrittura duratura non riuscita non produce una conferma positiva.
  • Un’interruzione temporanea dei sistemi a valle lascia gli eventi disponibili per un nuovo tentativo.
  • Un evento di consegna seguito da una correzione rimane verificabile.
  • Un ordine con più pacchi non diventa completamente consegnato quando è stato consegnato un solo pacco.
  • Un’interruzione dell’API avvisa il team di ingegneria senza informare automaticamente i clienti che i loro pacchi sono in ritardo.

Il criterio di rilascio dovrebbe essere la coerenza operativa: il record della spedizione, il messaggio al cliente e l’azione di supporto devono concordare con le stesse prove sottostanti. Una risposta positiva del webhook, da sola, non dimostra che l’esperienza di consegna funzioni.

FAQ

HTTP 200 significa che il pacco è stato consegnato?

No. Indica il successo a livello HTTP della richiesta. Leggi separatamente il risultato aziendale dell’API e i campi relativi allo stato della spedizione. Per un webhook, una conferma positiva riguarda la ricezione della notifica, non la consegna fisica del pacco.

Devo usare webhook o polling per gli aggiornamenti del tracciamento?

Usa i webhook per gli aggiornamenti basati sugli eventi quando il provider li supporta. Quando è supportato e operativamente giustificato, aggiungi un polling di riconciliazione con limiti definiti per recuperare le lacune. Il solo polling può essere appropriato quando i webhook non sono disponibili, ma la sua frequenza deve rispettare i limiti del provider e i tuoi requisiti di aggiornamento.

Perché lo stato del tracciamento può cambiare dopo “consegnato”?

Una fonte può correggere un evento oppure la tua integrazione può ricevere informazioni ritardate o in conflitto. Conserva la cronologia e valuta le prove più recenti invece di considerare tecnicamente immutabile lo stato “consegnato”. Una consegna segnalata e la conferma di ricezione da parte del cliente sono inoltre fatti diversi.

Con quale rapidità deve essere inviato un avviso di eccezione?

Basa l’urgenza sull’azione richiesta e su qualsiasi scadenza verificata. Un problema che richiede un’azione del destinatario deve essere gestito diversamente da un ritardo informativo. La velocità di elaborazione non può compensare un evento del corriere pubblicato in ritardo, quindi conserva sia il timestamp della fonte sia quello di ricezione.

I clienti devono vedere lo stato grezzo del corriere?

Di solito, i clienti traggono vantaggio da una spiegazione chiara e da un passaggio successivo supportato, invece che da un codice non spiegato. Conserva i dettagli grezzi per il supporto e per gli audit. Non semplificare mai uno stato trasformandolo in una promessa più forte di quanto l’evento sottostante supporti.

Fonti

  • RFC 9110: Semantica HTTP — riferimento per il significato dei codici di stato HTTP, inclusi 200 e 202.
  • OWASP REST Security Cheat Sheet — indicazioni di sicurezza pertinenti per gli endpoint API e webhook.
  • 17TRACK Tracking API — riferimento ufficiale del prodotto per l’opzione di integrazione del tracciamento discussa.
  • Documentazione API 17TRACK — riferimento ufficiale per i requisiti di integrazione specifici del provider; gli schemi esemplificativi e le raccomandazioni sul flusso di lavoro contenuti in questa guida non sostituiscono tale contratto.
Loading