Tracciamento delle spedizioni tramite Webhook: come funzionano i webhook di tracciamento rispetto al polling (payload, tentativi e configurazione)
I webhook di tracciamento delle spedizioni inviano una richiesta HTTP alla tua applicazione quando un servizio di tracciamento ha un aggiornamento da segnalare. Il polling funziona nella direzione opposta: la tua applicazione richiede ripetutamente le informazioni di tracciamento più recenti. Per gli sviluppatori che collegano i dati delle spedizioni a un sistema di gestione degli ordini, a un negozio o a un servizio di notifiche ai clienti, i webhook sono generalmente il meccanismo principale di aggiornamento migliore quando supportati; il polling mirato può aiutare a recuperare gli aggiornamenti persi e a riconciliare i record.

Nessuno dei due metodi fa sì che un corriere effettui la scansione di un pacco prima. Entrambi dipendono da quando la fonte dei dati di tracciamento riceve e rende disponibili nuove informazioni. La differenza pratica riguarda il modo in cui la tua applicazione viene a conoscenza di tali informazioni, la quantità di traffico di richieste che genera e ciò che accade quando la consegna non riesce.
Webhook di tracciamento e polling: la differenza operativa
Si tratta di modelli di integrazione, non di database di tracciamento concorrenti. Un corriere o una piattaforma di tracciamento può offrire uno dei due modelli o entrambi, con condizioni di accesso differenti. Confronta il comportamento dell'API specifica che intendi utilizzare invece di presumere che tutti i servizi webhook offrano le stesse garanzie.
| Punto decisionale | Webhook | Polling |
|---|---|---|
| Chi avvia la richiesta? | Il servizio di tracciamento chiama il tuo endpoint. | La tua applicazione chiama l'API di tracciamento. |
| Ritardo dell'aggiornamento | Dipende dall'aggiornamento della fonte, dalla generazione dell'evento, dalla consegna e dall'elaborazione. | Dipende anche da quando viene eseguita la prossima richiesta programmata. |
| Volume delle richieste | Determinato dagli aggiornamenti emessi, dal raggruppamento e dai tentativi di consegna. | Determinato dal volume delle spedizioni, dalla frequenza del polling e dal raggruppamento. |
| Infrastruttura | Richiede un ricevitore accessibile e una gestione sicura delle richieste in ingresso. | Richiede uno scheduler, l'accesso all'API in uscita e la gestione dei limiti di frequenza. |
| Recupero dagli errori | Dipende dai tentativi del provider e dal tuo processo di riconciliazione. | Dipende dalle richieste successive e dal fatto che l'API conservi o meno la cronologia necessaria. |
Scegli prima i webhook quando gli aggiornamenti tempestivi sono importanti e il tuo team è in grado di gestire un ricevitore affidabile. Scegli prima il polling quando gli endpoint in ingresso non sono pratici, il volume delle spedizioni è modesto o la fonte non fornisce webhook adatti. Utilizza un'architettura ibrida quando gli aggiornamenti persi interromperebbero le comunicazioni con i clienti o le operazioni e l'API supporta la riconciliazione.
Non presumere che i webhook siano più economici. Gli addebiti per gli abbonamenti, la registrazione del tracciamento, le chiamate API, la consegna degli eventi e l'infrastruttura possono essere fatturati in modo diverso. Confronta le condizioni commerciali effettive e il carico di lavoro previsto invece di considerare un numero inferiore di richieste come prova di una fattura più bassa.
Cosa accade tra la scansione del corriere e la tua applicazione?
- Identifica la spedizione. Associa il numero di tracciamento, le informazioni sul corriere quando richieste e un riferimento interno della spedizione. Alcuni servizi richiedono la registrazione prima dell'inizio del monitoraggio.
- Configura la consegna degli eventi. Fornisci un URL di callback HTTPS e seleziona gli eventuali abbonamenti agli eventi supportati.
- La fonte riceve le informazioni di tracciamento. Una scansione del corriere o una modifica dello stato diventa disponibile per il servizio di tracciamento.
- Il servizio invia un webhook. La richiesta può contenere un'istantanea completa del tracciamento, un singolo checkpoint o solo un riferimento che richiede una ricerca tramite API.
- Il tuo ricevitore lo convalida e lo memorizza. Autentica la richiesta, verificane la struttura e registra in modo duraturo l'evento o inseriscilo in coda.
- Un worker aggiorna i sistemi aziendali. Normalizza gli stati, aggiorna i record delle spedizioni e attiva solo le azioni ancora appropriate.
La consegna di un webhook non equivale alla consegna fisica. È un messaggio relativo alle informazioni sulla spedizione. Analogamente, una risposta webhook riuscita non dimostra che sia stata inviata un'e-mail o aggiornato un record dell'ordine; questi sono risultati dell'elaborazione a valle che richiedono un monitoraggio separato.
Come leggere il payload di un webhook di tracciamento
Il seguente JSON è un modello illustrativo di integrazione, non un payload di 17TRACK né uno schema universale. I nomi reali dei campi, i codici di stato, i formati dei timestamp e gli identificativi degli eventi devono provenire dalla documentazione del provider selezionato.
{
"event_id": "evt_example_001",
"event_type": "shipment.updated",
"created_at": "2025-04-08T10:16:00Z",
"shipment": {
"reference": "shipment_example_123",
"tracking_number": "EXAMPLE123456",
"carrier_code": "example_carrier",
"status": "in_transit",
"checkpoint": {
"occurred_at": "2025-04-08T10:10:00Z",
"description": "Departed processing facility"
}
}
}Tieni separati nel modello dei dati tre orologi: quando si è verificato l'evento della spedizione, quando il provider ha generato il messaggio e quando la tua applicazione lo ha ricevuto. Un checkpoint ritardato può arrivare dopo uno più recente. Un timestamp senza offset richiede inoltre un'interpretazione esplicita; non trattare silenziosamente ogni timestamp locale del corriere come UTC.
Conserva il riferimento interno della spedizione insieme agli identificativi del provider. Un numero di tracciamento da solo potrebbe non essere sufficiente come identificativo globale permanente, soprattutto in contesti di corrieri diversi. Per gli ordini suddivisi, mantieni record a livello di spedizione invece di consentire che lo stato consegnato di un pacco contrassegni come completato l'intero ordine.
Conserva lo stato e la descrizione originali insieme allo stato aziendale normalizzato. La tua applicazione può associare diversi messaggi del corriere allo stato “in transito”, ma il personale dell'assistenza potrebbe comunque aver bisogno del checkpoint originale per comprendere un ritardo. Considera le date di consegna stimate come stime e distingui un campo mancante da un'istruzione esplicita per cancellare un valore esistente.
Tentativi, conferme e duplicati degli eventi
La consegna di un webhook può fallire a causa di timeout, interruzioni di rete, errori di autenticazione o indisponibilità del ricevitore. Un provider può effettuare nuovi tentativi, ma non esistono un programma di retry, una finestra di conservazione o un numero massimo di tentativi universali. Verifica quali risposte attivano un altro tentativo, come vengono gestiti i reindirizzamenti e se è disponibile la riconsegna manuale.
Conferma dopo l'accettazione duratura
Mantieni breve il percorso della richiesta: convalida la richiesta, rendi persistente il lavoro accettato e restituisci la risposta di successo richiesta dal provider. Invia le e-mail ed esegui le operazioni aziendali più lente in modo asincrono. La specifica HTTP definisce 202 Accepted come accettazione per l'elaborazione, non come elaborazione completata, ma il provider potrebbe richiedere una risposta di successo diversa. Segui il contratto webhook del provider.
Restituire il successo prima di memorizzare qualsiasi cosa rischia di perdere l'aggiornamento se il processo si arresta. Attendere ogni azione a valle rischia un timeout e un altro tentativo di consegna. Una inbox persistente o una coda fornisce un confine tra ricezione ed elaborazione.
Rendi l'elaborazione idempotente
L'idempotenza significa che elaborare nuovamente lo stesso evento non ripete i suoi effetti aziendali. Un mittente può ritentare dopo che il server ha accettato un evento ma la conferma è andata persa. La consegna duplicata dovrebbe quindi essere un normale caso di test.
- Utilizza un identificativo dell'evento documentato come chiave di deduplicazione quando disponibile, associandolo al provider o all'account corretto.
- Se non esiste alcun identificativo, progetta una chiave composta da campi stabili dell'evento e verifica i rischi di collisione.
- Applica atomicamente l'univocità nell'archiviazione; una sequenza separata “controlla, quindi inserisci” può creare condizioni di gara durante consegne concorrenti.
- Proteggi anche le azioni a valle. Un evento duplicato non deve inviare un'altra notifica di consegna né ripetere un'operazione finanziaria.
- Imposta la conservazione in base al comportamento di replay del provider e ai requisiti di recupero, invece di eliminare immediatamente i record di deduplicazione.
Non presumere un arrivo cronologico
Non sovrascrivere lo stato corrente della spedizione semplicemente perché una richiesta è arrivata per ultima. Confronta il significato dell'evento, i timestamp e le eventuali informazioni di sequenza documentate. Conserva i checkpoint tardivi nella cronologia senza riportare automaticamente indietro lo stato visualizzato. Allo stesso tempo, consenti le correzioni documentate: una regola rigida secondo cui le spedizioni consegnate non possono mai cambiare può nascondere eccezioni legittime o informazioni corrette.
Checklist pratica di configurazione
1. Conferma il contratto del provider
Prima dell'implementazione, conferma i requisiti di registrazione, gli eventi supportati, la struttura del payload, l'autenticazione, le aspettative sulle risposte, i timeout, il comportamento dei retry e i limiti dell'API. Verifica se una notifica rappresenta un'istantanea o una modifica incrementale, se le consegne possono contenere più record e se la sottoscrizione invia uno stato iniziale.
Per un'integrazione 17TRACK, inizia dalla pagina Tracking API ufficiale e dalla documentazione API. Utilizza la documentazione specifica del provider per stabilire i campi delle richieste e i requisiti dei callback; il payload generico riportato sopra non è un sostituto. Conferma le condizioni di accesso e i limiti operativi dell'integrazione che intendi implementare.
2. Proteggi l'endpoint ricevente
Utilizza HTTPS e il meccanismo di autenticazione documentato dal provider. Se utilizza una firma HMAC, convalida esattamente l'input firmato specificato. Quando vengono firmati i byte grezzi della richiesta, analizzare e serializzare nuovamente il JSON prima della verifica può modificare tali byte e invalidare la firma. Utilizza un confronto a tempo costante per i valori delle firme derivati dal segreto.
Se sono disponibili timestamp firmati o identificativi della consegna, applica i controlli contro il replay documentati. Una firma valida autentica un messaggio, ma da sola non dimostra che sia recente. Mantieni i segreti fuori dagli URL e dai log dell'applicazione, supporta la rotazione dei segreti e limita le dimensioni delle richieste. L'inserimento in whitelist degli IP può essere un controllo aggiuntivo quando esistono intervalli di indirizzi gestiti, ma non sostituisce l'autenticazione dei messaggi.
3. Separa la ricezione dall'elaborazione aziendale
Memorizza informazioni sufficienti per tracciare e riprodurre in sicurezza un evento accettato. I worker della coda devono normalizzare l'aggiornamento, applicare le regole di transizione dello stato e registrare i risultati delle azioni. Inserisci il lavoro che fallisce ripetutamente in un flusso di gestione dei dead letter esaminabile invece di ritentare all'infinito. Limita l'accesso e la conservazione perché i payload di tracciamento possono contenere informazioni relative ai clienti.
4. Testa i percorsi di errore prima del lancio
- Invia due volte lo stesso evento, incluse consegne concorrenti.
- Consegna un checkpoint più vecchio dopo uno più recente.
- Simula un'interruzione della coda e un arresto del worker dopo la ricezione.
- Testa autenticazione non valida, JSON malformato e richieste troppo grandi.
- Testa spedizioni sconosciute, campi opzionali mancanti e campi aggiunti.
- Verifica che un pacco consegnato non completi un ordine suddiviso.
- Riproduci un evento dopo il recupero e conferma che le notifiche restino deduplicate.
Sii tollerante verso i campi aggiuntivi quando è sicuro farlo, ma non reinterpretare silenziosamente valori di stato sconosciuti. Conserva il valore grezzo e indirizza i casi non riconosciuti attraverso un fallback definito o un processo di revisione.
Quando il polling mantiene la sua utilità
Il polling è utile per la sincronizzazione iniziale, il recupero dopo un'interruzione e il controllo delle spedizioni i cui aggiornamenti previsti non sono arrivati. Tuttavia, il solo silenzio non dimostra un malfunzionamento del webhook: un pacco potrebbe non avere realmente nuove scansioni. Riconcilia lo stato corrente o la cronologia tramite l'API invece di presumere che ogni spedizione silenziosa richieda un avviso.
Per la pianificazione della scalabilità, un modello semplificato di polling è requests per hour ≈ active shipments × polls per shipment per hour, ipotizzando una spedizione per richiesta. Gli endpoint batch modificano questo calcolo. A titolo esemplificativo, 1.000 spedizioni controllate quattro volte all'ora generano 4.000 richieste all'ora prima dei retry; si tratta di aritmetica, non di una quota del provider o di una stima dei prezzi.
Programma i controlli in base all'attività delle spedizioni e al rischio aziendale, rispetta i limiti di frequenza e aggiungi jitter affinché i processi non inizino tutti contemporaneamente. Per gli errori ritentabili, utilizza un backoff limitato e rispetta le indicazioni applicabili del server. Non ritentare ripetutamente gli errori permanenti relativi alle credenziali o alla convalida senza correggerli.
Un sistema ibrido pratico utilizza i webhook per gli aggiornamenti ordinari e letture API mirate per le lacune sospette. Monitora separatamente gli errori di ricezione, l'età della coda, gli errori di elaborazione, i tassi di duplicazione e le discrepanze di riconciliazione. Quando i timestamp sono affidabili, distingui il ritardo dei dati della fonte dal ritardo della consegna del webhook e dal ritardo dell'elaborazione interna.
FAQ
I webhook di tracciamento sono in tempo reale?
Possono ridurre il ritardo causato dall'attesa del ciclo di polling successivo. Non garantiscono scansioni immediate del corriere né aggiornamenti istantanei della fonte. La freschezza end-to-end comprende la comunicazione del corriere, l'elaborazione del provider, la consegna della richiesta e la tua applicazione.
Posso interrompere completamente il polling dopo aver abilitato i webhook?
È possibile, se le funzionalità di recupero del provider e i tuoi requisiti aziendali lo rendono accettabile. Per i record di spedizione importanti dal punto di vista operativo, conserva un metodo di riconciliazione. Può essere mirato anziché consistere nel polling continuo di ogni spedizione.
Cosa succede se il mio endpoint webhook è offline?
Il recupero dipende dalla politica di retry documentata dal mittente. Non presumere che i retry continuino indefinitamente. Dopo aver ripristinato l'endpoint, esamina le consegne fallite, utilizza gli strumenti di riconsegna supportati e riconcilia le spedizioni interessate tramite l'API, quando disponibile.
Ogni webhook dovrebbe attivare una notifica al cliente?
No. Un evento può essere un duplicato, un checkpoint storico o un aggiornamento che non modifica lo stato visibile al cliente. Attiva le notifiche in base a transizioni aziendali deduplicate, con regole per eccezioni e correzioni.
Una risposta HTTP riuscita significa che l'aggiornamento della spedizione è completo?
Non necessariamente. In un'architettura asincrona, significa che il ricevitore ha accettato l'evento secondo il contratto concordato. Monitora separatamente il completamento dell'elaborazione e i risultati delle notifiche a valle, affinché una richiesta accettata non nasconda un flusso di lavoro fallito.
Fonti
- RFC 9110: HTTP Semantics — semantica delle risposte HTTP, inclusa l'accettazione per l'elaborazione e Retry-After.
- RFC 2104: HMAC—Keyed-Hashing for Message Authentication — la costruzione HMAC citata nelle indicazioni per la verifica delle firme.
- Documentazione GitHub: Best practices for using webhooks — indicazioni generali di ingegneria su HTTPS, segreti, gestione asincrona e identificazione delle consegne; le sue regole specifiche del servizio non stabiliscono il comportamento dei provider di spedizioni.
- 17TRACK Tracking API — punto di accesso ufficiale per valutare un'integrazione di tracciamento 17TRACK.
- Documentazione API 17TRACK — riferimento specifico del provider per i requisiti di implementazione.


