Timeline dello stato dell'ordine: UI ed eventi che riducono il carico del supporto
Timeline dello stato dell'ordine che spiega cosa sta succedendo, cosa succede dopo e quando preoccuparsi, usando un semplice modello di eventi che mantiene gli aggiornamenti coerenti.

Perché uno stato d'ordine poco chiaro crea ticket di supporto
La maggior parte dei ticket “Dov'è il mio ordine?” in realtà non riguarda la spedizione. Riguarda l'incertezza. Se un cliente non riesce a capire cosa sta succedendo, chiede a una persona anche quando non c'è niente di sbagliato.
Le stesse domande ritornano: dov'è l'ordine in questo momento, è già stato spedito o è ancora in preparazione, quando arriverà (e quella data è cambiata?), posso annullare o cambiare l'indirizzo, e cosa fare quando il tracciamento non si muove.
Quando il tuo team risponde a tutto manualmente, appaiono rapidamente due problemi. Primo: non scala. Un piccolo picco di ordini può trasformarsi in un flusso di ticket e i tempi di risposta peggiorano. Secondo: le risposte divergono. Un addetto dice “è in lavorazione”, un altro dice “sta venendo imballato”, e il cliente sente conflitto invece che chiarezza. Questo porta a follow-up, che genera ancora più lavoro.
L'obiettivo è semplice: i clienti dovrebbero poter consultare lo stato dell'ordine da soli senza indovinare o aver bisogno di risposte personalizzate. Una buona timeline dello stato dell'ordine lo fa trasformando l'attività interna in una storia chiara che il cliente può seguire.
Trasparenza non significa esporre ogni dettaglio interno. Significa che il cliente vede chiaramente lo stato corrente in linguaggio semplice, quando è cambiato (con un timestamp ragionevole), cosa succede dopo (e cosa potrebbe ritardarlo), e quando vale la pena contattarti.
Quando i clienti possono rispondere da soli a “cosa sta succedendo e cosa devo fare?”, molti ticket non vengono nemmeno creati.
Cosa si aspettano i clienti dal tracciamento
I clienti non controllano il tracciamento per curiosità. Controllano perché vogliono risposte rapide: dov'è il mio ordine adesso, quando è avvenuto l'ultimo aggiornamento, e cosa dovrebbe succedere dopo.
Una buona UI di tracciamento racconta una storia, non solo un'etichetta. “Spedito” è un'etichetta. Una storia è: “Imballato nel nostro magazzino ieri alle 15:12, ritirato dal corriere, prossimo aggiornamento atteso: scansione in transito.” La storia riduce l'incertezza, quindi le persone non cercano il supporto.
Tre cose contano di più in una timeline dello stato dell'ordine:
- Il passo corrente, evidenziato chiaramente come unica fonte di verità
- L'ultima ora di aggiornamento (con fuso orario se hai un pubblico globale)
- Il passo successivo previsto, più una finestra approssimativa (anche ampia va bene)
L'ansia cresce quando il tracciamento sembra silenzioso o vago. I trigger principali sono lunghe pause senza spiegazione, testi di stato che possono significare qualsiasi cosa (“Processing”), e finestre di consegna mancanti. Se non puoi ancora stimare la consegna, dillo chiaramente ed esplica cosa stai aspettando, per esempio: “Mostreremo una ETA dopo la scansione del corriere.”
L'accuratezza conta più dell'ottimismo. Le persone perdonano di più i ritardi che le promesse false. Se i tuoi dati sono parziali, mostra quello che sai ed evita di fingere di sapere il resto.
Un esempio semplice: se un pacco resta su “Label created” per 36 ore, i clienti assumono che sia bloccato. Una timeline utile aggiunge contesto: “Il corriere non ha ancora scannerizzato il pacco. Prossimo aggiornamento previsto dopo il ritiro. Se non c'è alcuna scansione entro domani alle 17:00, indagheremo.” Quella frase sola può prevenire un'ondata di ticket “Dov'è il mio ordine?”.
Progettare una UI della timeline che risponda alle domande
Una buona timeline dello stato dell'ordine dovrebbe rispondere a tre cose a colpo d'occhio: dov'è ora l'ordine, cosa è successo prima, e cosa il cliente dovrebbe aspettarsi dopo. Tienila semplice. Se le persone devono leggere un articolo di aiuto per capire la timeline, non ridurrà i ticket.
Inizia con un piccolo set di milestone comprensibili per il cliente. La maggior parte dei negozi può coprire la maggioranza delle domande con un set stabile tipo: Effettuato, Pagamento confermato, Imballato, Spedito, Consegnato, più finali chiari come Annullato e Restituito.
Per ogni step, aggiungi una riga breve di microcopy che spieghi cosa significa e cosa succede dopo. Per esempio: “Imballato: i tuoi articoli sono stati preparati nel nostro magazzino. Prossimo: consegnato al corriere.” Questo evita il classico messaggio “È davvero spedito?”.
Mostra sempre i timestamp e indica la fonte dell'aggiornamento così il cliente si fida. “Aggiornato 14:32 da Magazzino” suona diverso da “Aggiornato oggi.” Quando la fonte è esterna, dillo: “Aggiornato dal corriere.” Se non conosci la fonte, non azzardare.
Le eccezioni dovrebbero essere più evidenti del progresso normale. Trattale come uno step visibile a sé, o come un badge chiaro sullo step rilevante, con linguaggio semplice e l'azione successiva. Le più comuni includono Ritardo, Problema di indirizzo e Tentativo di consegna fallito.
Un pattern semplice e affidabile è:
- Gli step normali hanno uno stile neutro e diventano spuntati quando completati
- Lo step corrente è evidenziato chiaramente e include testo su “cosa succede dopo”
- Le eccezioni usano uno stile distinto e includono un'azione esplicita (per esempio, “Conferma indirizzo”)
Esempio: un cliente vede “Spedito (Corriere) 09:10” e poi “Tentativo di consegna fallito 18:40.” Se l'UI mostra anche “Il corriere non ha potuto accedere all'edificio. Prossimo tentativo: domani,” eviti una conversazione di ida e ritorno.
Stati orientati al cliente vs passaggi del workflow interno
Il tuo workflow interno potrebbe includere dozzine di passaggi: picking, packing, stampa etichette, consegna al corriere, retry, eccezioni e altro. I clienti non hanno bisogno di quel livello di dettaglio. Vogliono risposte chiare a domande semplici: “Avete ricevuto il mio ordine?”, “È stato spedito?”, “Quando arriverà?”, e “C'è qualcosa che non va?”
Per questo è utile separare le operazioni interne dagli stati rivolti al cliente. Mantieni il workflow interno complesso quanto serve, ma presenta un piccolo e stabile set di step nella timeline che abbia senso al di fuori del magazzino.
Un approccio pratico è aggiungere uno strato di mapping: molti eventi interni confluiscono in pochi stati della timeline. Per esempio, pagamento autorizzato, controllo antifrode passato e inventario riservato possono diventare “Ordine confermato.” Pick iniziato, imballato e etichetta creata possono essere “In preparazione.” Consegna al corriere e scansioni in transito diventano “Spedito.” Una scansione out-for-delivery diventa “In consegna,” e una scansione di consegna più conferma fotografica diventa “Consegnato.”
Questo strato di mapping è anche la tua rete di sicurezza. Se cambi il backend in seguito (nuovo corriere, nuovo centro di evasione, nuova logica di retry), la timeline dello stato dell'ordine non dovrebbe saltare in giro o improvvisamente aggiungere nuovi step. I clienti costruiscono fiducia quando la timeline rimane coerente da un ordine all'altro.
Rendi ogni stato rivolto al cliente leggibile e accessibile. Usa prima etichette in testo semplice, poi supportale con icone e colori. Il colore non deve mai essere l'unico indicatore. Uno stato in ritardo deve dire “In ritardo” a parole. Mantieni alto il contrasto, usa un marcatore chiaro per lo “step corrente” e scrivi brevi testi di supporto come “Stiamo preparando il tuo ordine (di solito 1-2 giorni).” Questo riduce i ticket “cosa significa?” prima che nascano.
Un semplice modello di eventi backend per aggiornare lo stato
Una buona timeline dello stato dell'ordine parte da un'idea semplice: conserva eventi, non solo l'ultimo stato. Un evento è un fatto accaduto in un momento specifico, come “etichetta creata” o “pacco consegnato.” I fatti non cambiano dopo, quindi la tua timeline rimane coerente.
Se sovrascrivi solo un campo di stato singolo (per esempio status = shipped), perdi la storia. Quando un cliente chiede “Quando è stato spedito?” o “Perché è tornato indietro?”, non hai una risposta pulita. Con gli eventi ottieni una cronologia chiara e una traccia di audit affidabile.
Il record di evento più piccolo utile
Mantieni il record piccolo e noioso. Puoi sempre aggiungere altro dopo.
order_id: a quale ordine appartiene questo eventoevent_type: cosa è successo (picked_up, out_for_delivery, delivered)happened_at: quando è successo (l'ora dell'azione nel mondo reale)actor: chi l'ha causato (system, warehouse, carrier, support)details: piccoli dati extra (numero di tracciamento, posizione, nota)
Quando la UI rende la timeline, ordina gli eventi per happened_at e li mostra. Se in seguito cambi come etichetti gli stati rivolti al cliente, puoi rimappare gli event_type senza riscrivere la storia.
Idempotenza (nessun fatto duplicato)
I sistemi di consegna spesso reinviano lo stesso aggiornamento. Idempotenza significa: se lo stesso evento arriva due volte, non deve creare due voci nella timeline.
L'approccio più semplice è dare a ogni evento in ingresso una chiave unica stabile (per esempio, un ID evento del corriere, o un hash di order_id + event_type + happened_at + tracking_number) e salvarla. Se arriva di nuovo, la ignori.
Scegliere gli eventi giusti e mapparli nella timeline
Una timeline funziona meglio quando rispecchia momenti reali che i clienti riconoscono, non i tuoi task interni. Inizia elencando i punti in cui qualcosa cambia davvero per l'acquirente: pagamento addebitato, esistenza di un pacco, il corriere lo ha in carico, è arrivato.
Scegli eventi dai momenti del mondo reale
Un piccolo set è di solito sufficiente per rispondere alla maggior parte dei messaggi “Dov'è il mio ordine?”:
- Pagamento confermato
- Etichetta creata
- Consegnato al corriere (prima scansione del corriere, se possibile)
- In consegna
- Consegnato
Mantieni i nomi coerenti e specifici. “Imballato” e “Pronto” suonano simili, ma significano cose diverse per i clienti. Scegli un significato per ogni evento e non riutilizzare un'etichetta per un momento diverso.
Decidi cosa vedere per i clienti
Non tutti gli eventi backend appartengono all'UI. Alcuni sono solo per il team (revisione antifrode, pick iniziato in magazzino, validazione indirizzo). Una buona regola: se mostrarlo creerebbe più domande che risposte, tienilo interno.
Mappa i passaggi interni in stati cliente più ridotti. Potresti avere cinque passaggi di magazzino, ma la timeline mostra solo “In preparazione” fino a “Consegnato al corriere.” Questo mantiene l'UI calma e prevedibile.
Il tempo conta quanto l'etichetta. Conserva due timestamp quando puoi: quando l'evento è accaduto e quando l'hai registrato. Mostra il tempo di occorrenza nell'UI (ora della scansione del corriere, ora di conferma consegna). Se mostri solo il tempo di processo, un'importazione tardiva può far sembrare che il pacco sia tornato indietro.
I dati del corriere a volte mancheranno. Pensa a questo caso. Se non ricevi mai una scansione “Consegnato al corriere”, retrocedi a “Etichetta creata” con un messaggio chiaro come “In attesa della scansione del corriere.” Evita di inventare progresso.
Un esempio concreto: il magazzino stampa un'etichetta alle 10:05, ma il corriere non scansiona fino alle 18:40. Il tuo modello di eventi backend dovrebbe memorizzare entrambi gli eventi, ma la timeline non dovrebbe implicare movimento durante il gap. Questa scelta da sola previene molti ticket “Dice spedito ma non si è mosso”.
Passo dopo passo: costruisci la UI della timeline e mantienila sincronizzata
Passo 1: scrivi prima la timeline per il cliente. Elenca 5-8 passaggi che un acquirente può capire (per esempio: Ordine effettuato, Pagamento confermato, Imballato, Spedito, In consegna, Consegnato). Scrivi la frase esatta che mostrerai per ogni step. Mantienila calma e specifica.
Passo 2: definisci i tipi di evento e il mapping. I tuoi sistemi possono avere dozzine di stati interni, ma i clienti dovrebbero vedere un set più piccolo. Crea una semplice tabella di mapping tipo warehouse.picked -> Imballato e carrier.in_transit -> Spedito.
Passo 3: conserva eventi, poi calcola la vista. Salva ogni evento come record append-only con order_id, type, occurred_at e dati opzionali (come codice corriere o motivo). L'UI dovrebbe essere generata dagli eventi, non da un singolo campo di stato mutabile.
Passo 4: ritorna un'API pronta per la timeline. La risposta dovrebbe essere facile per il frontend: steps (con etichette), l'indice dello step corrente, i timestamp che conosci e un breve messaggio.
{
"order_id": "123",
"current_step": 3,
"steps": [
{"key":"placed","label":"Order placed","at":"2026-01-09T10:11:00Z"},
{"key":"paid","label":"Payment confirmed","at":"2026-01-09T10:12:00Z"},
{"key":"packed","label":"Packed","at":"2026-01-09T14:40:00Z"},
{"key":"shipped","label":"Shipped","at":null,"message":"Waiting for carrier scan"}
],
"last_update_at": "2026-01-09T14:40:00Z"
}
Passo 5: mantieni l'UI aggiornata senza essere rumorosa. Per una timeline di stato, fare polling ogni 30-120 secondi è spesso sufficiente durante la fase attiva di spedizione, e molto meno frequente quando non cambia nulla.
Passo 6: aggiungi fallback per dati ritardati. Se la scansione del corriere è in ritardo, mostra l'ultimo aggiornamento noto e un'azione successiva chiara: “Se non ci sono aggiornamenti entro domani, contatta il supporto con l'ordine 123.”
Un esempio pratico: il cliente vede “Imballato” con un timestamp, poi “Spedito: In attesa della scansione del corriere” fino a quando non arriva carrier.accepted. Nessuna risposta personalizzata necessaria, solo stato onesto.
Scenario d'esempio: un ordine normale con un ritardo reale
Un cliente acquista una felpa. Il pagamento è immediato, ma l'imballaggio prende due giorni lavorativi. Poi la spedizione subisce un ritardo del corriere. Il cliente dovrebbe comunque sentirsi informato senza dover contattare il supporto.
Ecco la timeline che il cliente vede, giorno per giorno (stessa UI, semplicemente si aggiungono nuove voci):
| Giorno e ora | Stato mostrato | Messaggio in linguaggio semplice |
|---|---|---|
| Lun 09:12 | Ordine effettuato | “Abbiamo ricevuto il tuo ordine. Riceverai aggiornamenti man mano che si muove.” |
| Lun 09:13 | Pagamento confermato | “Pagamento approvato. Prossimo: prepareremo il tuo pacco.” |
| Mar 16:40 | In preparazione | “Stiamo imballando i tuoi articoli. Data di spedizione prevista: Mer.” |
| Mer 14:05 | Spedito | “Consegnato al corriere. Il tracciamento si aggiornerà quando il corriere effettuerà le scansioni.” |
| Gio 08:30 | In transito | “In viaggio. Stima corrente: consegna Ven.” |
| Ven 10:10 | Consegna ritardata | “Il corriere ha segnalato un ritardo dovuto all'elevato volume. Nuova stima: Sab. Nessuna azione necessaria al momento.” |
| Sab 12:22 | In consegna | “Con il tuo autista locale. Di solito arriva oggi.” |
| Sab 18:05 | Consegnato | “Consegnato. Se non lo trovi, controlla l'ingresso e dai un'occhiata ai vicini.” |
Nota cosa è cambiato venerdì: non hai creato un flusso completamente nuovo. Hai aggiunto un evento (per esempio, shipment_delayed) e l'hai mappato a un messaggio cliente chiaro. I passi precedenti restano gli stessi e l'UI rimane stabile.
L'opzione di contatto dovrebbe apparire solo dopo una soglia chiara, così le persone non la cliccano solo perché sono ansiose. Una regola semplice funziona bene: mostra “Contattaci” se l'ordine è passato di 24 ore oltre l'ultima stima di consegna, o se lo stato non cambia per 72 ore mentre è “In transito.” Prima di questo, mostra rassicurazioni e la stima corrente per evitare clic ansiosi.
Errori comuni che peggiorano il tracciamento
Una buona timeline riduce i messaggi “dov'è il mio ordine?”. Una cattiva timeline crea nuove domande perché l'UI e i dati dietro non corrispondono a ciò che le persone vivono.
Errore 1: rendere la timeline troppo dettagliata
Se esponi ogni passaggio interno, i clienti si perdono. Quindici micro-stati come “picked”, “sorted”, “labeled”, “staged” e “queued” appaiono affollati ma non rispondono alle due vere domande: “Quando arriverà?” e “C'è qualcosa che non va?” Mantieni la timeline pubblica su un piccolo set di milestone chiare e tieni il resto interno.
Errore 2: perdere la storia e cambiare il passato
Sovrascrivere lo stato corrente senza salvare gli eventi è un modo rapido per creare contraddizioni. Un cliente vede “Spedito”, aggiorna la pagina più tardi e improvvisamente dice “In preparazione” perché c'è stato un retry o una modifica manuale. Conserva una cronologia degli eventi con timestamp e costruisci lo stato corrente da quella storia.
I problemi più comuni sono facili da individuare:
- Etichette che suonano ufficiali ma non significano nulla (per esempio, “Processing” senza spiegazione)
- Stime di consegna che non riesci a rispettare, seguite dal silenzio quando le manchi
- Nessun percorso chiaro per cancellazioni, resi o rimborsi, così la timeline si interrompe a metà storia
- Spedizioni parziali mostrate come un'unica spedizione, il che fa sembrare “Consegnato” una menzogna
- Eccezioni del corriere nascoste o minimizzate, così i clienti apprendono dei ritardi prima dal corriere
Ecco perché conta. Un articolo parte oggi e il secondo è in backorder. Se mostri solo “Spedito”, il cliente si aspetta tutto. Se mostri “Parzialmente spedito (1 di 2)” e tieni “Consegnato” legato a ogni pacco, la timeline rimane credibile.
Tratta le etichette della timeline come copy di prodotto, non come campi del database. Scrivile per gli esseri umani, poi mappa i tuoi eventi interni a quei pochi stati amichevoli per il cliente.
Checklist rapida prima del rilascio
Prima di rilasciare la timeline a tutti i clienti, fai un rapido controllo dal punto di vista del cliente: “Se vedessi questo alle 23:00, aprirei comunque un ticket?” L'obiettivo è chiarezza senza far sembrare che qualcosa sia andato storto.
Inizia dal tempo e dalle aspettative. Ogni ordine dovrebbe mostrare l'ora dell'ultimo aggiornamento e suggerire cosa succede di solito dopo. “Ultimo aggiornamento 2 ore fa” più “Prossimo: ritiro del corriere” riduce la sensazione di blocco.
Mantieni la checklist pre-lancio breve:
- Ogni ordine mostra un chiaro “Ultimo aggiornamento” e un prossimo passo in parole semplici (anche “Prossimo: in attesa della scansione del corriere”).
- Un gap di 48 ore è spiegato in linguaggio normale (per esempio: “Nessuna nuova scansione del corriere. Questo può succedere tra il ritiro e il primo centro di smistamento.”).
- Le eccezioni sono visibili e comprensibili. Ritardo, problema di indirizzo, pagamento fallito, tentativo di consegna o “trattenuto al punto di ritiro” non devono essere nascosti dietro codici.
- Lo stato corrente è derivato da eventi (pagamenti, magazzino, corriere, consegna), non da modifiche manuali in uno schermo admin.
- Esiste un unico posto per cambiare come gli eventi si mappano agli step della timeline, così non fai patch logiche in tre servizi diversi e nell'UI.
Dopo questo, testa alcuni ordini "sporchi" intenzionalmente. Scegline uno con spedizione parziale, uno con corriere che scansiona in ritardo e uno con tentativo di consegna fallito. Se la timeline sembra un mistero, i clienti chiederanno a un umano di interpretarla.
Infine, conferma che il tuo team di supporto vede la stessa vista che vede il cliente, inclusi timestamp e messaggi di eccezione. Quando entrambe le parti leggono la stessa storia, le risposte si accorciano e molti ticket non vengono scritti.
Prossimi passi: distribuisci in sicurezza e continua a migliorare
Inizia in piccolo. Una timeline minima che risponde alle domande principali (Avete ricevuto il mio ordine? Quando verrà spedito? Dove è adesso?) batte un tracker complicato pieno di casi limite. Pubblica prima gli stati core, poi aggiungi più dettaglio solo quando il feedback reale dei clienti dimostra che aiuta.
Pianifica un rollout attento così puoi imparare senza rompere la fiducia. Scegli una piccola fetta di ordini (per esempio, un magazzino, un metodo di spedizione o un paese) e osserva come cambia il volume di supporto e il comportamento dei clienti prima di espandere.
Misura ciò che effettivamente riduce i ticket
Non indovinare. Strumenta la timeline così puoi vedere se funziona. Confronta le domande più comuni “Dov'è il mio ordine?” prima e dopo il rilascio e monitora quali schermate di stato i clienti vedono subito prima di contattare il supporto.
Un set di metriche iniziale semplice:
- Tasso di ticket per 1.000 ordini (totale e per corriere)
- Motivi principali dei ticket (prima vs dopo)
- Visualizzazioni della timeline entro 24 ore dalla creazione del ticket
- Tempo trascorso sulla pagina di tracciamento e tasso di uscita
- Percentuale di ordini con eventi mancanti o in ritardo
Rendi le eccezioni coerenti, non improvvisate
La maggior parte del carico di supporto viene dalle eccezioni: etichetta creata ma nessuna scansione, ritardo dovuto al meteo, problema di indirizzo, spedizione parziale. Prepara template di messaggio per questi casi così il tuo team fornisce la stessa risposta ogni volta. Mantienili brevi, chiari e orientati all'azione: cosa è successo, cosa stai facendo, cosa deve aspettarsi il cliente.
Se stai prototipando l'UI e l'API basata su eventi, una piattaforma di vibe-coding come Koder.ai (koder.ai) può essere un modo pratico per generare una prima versione da una breve chat, poi affinare i copy e i mapping man mano che impari dai ticket reali.
Allarga la copertura a tappe. Una volta che il rollout parziale mostra meno ticket (e nessuna nuova confusione), espandi a più tipi di ordine e corrieri. Mantieni una cadenza di revisione regolare: ogni poche settimane, analizza i nuovi temi dei ticket e decidi se la correzione è un wording migliore, un nuovo template per le eccezioni o un nuovo evento che alimenti la timeline.
Domande frequenti
Qual è l'obiettivo principale di una timeline dello stato dell'ordine?
Default a una timeline piccola e leggibile che risponda a tre domande: cosa sta succedendo ora, quando è cambiato l'ultimo aggiornamento e cosa succede dopo. La maggior parte dei ticket nasce dall'incertezza, quindi la timeline dovrebbe ridurre il tentativo di indovinare (per esempio, “In attesa della scansione del corriere” invece di un vago “In elaborazione”).
Quali passaggi di stato dovrei mostrare ai clienti?
Usa un set stabile che la maggior parte degli acquirenti capisce:
- Effettuato
- Pagamento confermato
- In preparazione (o Imballato)
- Spedito
- In consegna
- Consegnato
Includi anche finali chiari come Annullato e Restituito. Tieni i passaggi interni (pick/pack/batch/retry) fuori dalla vista del cliente.
Ho davvero bisogno dei timestamp su ogni step di tracciamento?
Mostra il timestamp per ogni passaggio e un chiaro "Ultimo aggiornamento". Se vendi a livello internazionale, includi il fuso orario (o rendilo univoco). Un timestamp trasforma “non sta succedendo nulla” in “questo è successo di recente”, il che evita ulteriori richieste.
Come gestisco “Etichetta creata” senza scansione del corriere?
Consideralo come una sua eccezione visibile, non come progresso normale. Un buon messaggio predefinito è:
- Cosa sai: “Il corriere non ha ancora scannerizzato il pacco.”
- Cosa succede dopo: “Prossimo aggiornamento previsto dopo il ritiro.”
- Quando intervenire: “Se non c'è alcuna scansione entro domani alle 17:00, indagheremo.”
Non suggerire movimenti che non puoi provare.
Come evito di esporre passaggi interni disordinati?
Separa i fatti (eventi) dalla timeline cliente (stati). Conserva eventi interni dettagliati, poi mappali in pochi stati pensati per il cliente. Questo mantiene l'UI coerente anche se cambia il workflow del magazzino.
Qual è il modello backend più semplice per supportare una timeline?
Conserva eventi come fatti append-only (per esempio: label_created, picked_up, out_for_delivery, delivered) con:
order_idevent_typehappened_atactor(system/warehouse/carrier/support)- opzionale
details
Poi genera la timeline dalla cronologia degli eventi invece che da un singolo campo di stato modificabile.
Come evito che eventi di tracciamento duplicati compaiano?
Usa idempotenza. Dai a ogni aggiornamento in ingresso una chiave unica stabile (ID evento del corriere, o un hash dei campi chiave) e ignora i duplicati. Questo evita voci ripetute come “In consegna” apparse due volte quando il corriere reinvia l'aggiornamento.
Dovrei mostrare una data di consegna stimata se non sono sicuro?
Mostra la migliore stima disponibile e sii onesto su ciò che stai aspettando. Se non hai ancora una ETA, dillo chiaramente (per esempio, “Mostreremo una ETA dopo la prima scansione del corriere”). L'accuratezza batte promesse ottimistiche che poi rompono la fiducia.
Come dovrebbero apparire nell'UI eccezioni come ritardi o tentativi di consegna falliti?
Rendi le eccezioni evidenti e operative. Le più comuni:
- Ritardo (con nuova stima, se nota)
- Problema di indirizzo (con “Conferma indirizzo”)
- Tentativo di consegna fallito (con info sul prossimo tentativo)
Le eccezioni devono essere più evidenti del progresso normale e dire al cliente cosa fare, se necessario.
Quando la pagina di tracciamento dovrebbe dire al cliente di contattare il supporto?
Una regola pratica è mostrare l'opzione di contatto solo dopo una soglia chiara, come:
- 24 ore oltre l'ultima data di consegna promessa, oppure
- 72 ore senza cambiamento mentre è “In transito”
Prima di questo, mostra rassicurazioni, l'ultimo aggiornamento e il prossimo passo previsto per evitare clic ansiosi.