Skip to main content
AccueilBlogGuidesNormalisation des statuts de suivi des transporteurs : comment mapper les événements des transporteurs dans un modèle de statut unique

Normalisation des statuts de suivi des transporteurs : comment mapper les événements des transporteurs dans un modèle de statut unique

17TRACK

La normalisation des statuts de suivi des transporteurs consiste à traduire les codes et messages de scan propres à chaque transporteur en un modèle d’expédition cohérent, tout en préservant les éléments de preuve d’origine. Pour la mettre en œuvre de manière fiable, associez chaque événement à un statut et à un motif canoniques, puis calculez l’état actuel de l’expédition à partir de la chronologie des événements, du contexte de l’expédition et de règles de transition explicites. Ne considérez pas automatiquement le message reçu le plus récent comme le statut actuel de l’expédition.

Carrier Tracking Status Normalization How to Map Carrier Events into

Ce guide s’adresse aux développeurs, aux équipes des opérations logistiques et aux responsables produit qui intègrent le suivi à un système de gestion des commandes, à un tableau de bord d’assistance ou à un workflow de notifications clients. Le modèle ci-dessous constitue un modèle d’implémentation proposé, et non une norme officielle des transporteurs ni une reproduction de la taxonomie des statuts d’un fournisseur de suivi.

Séparer l’événement du transporteur de l’état de l’expédition

Un événement de suivi décrit quelque chose qui a été signalé au sujet d’une expédition : une étiquette a été créée, un colis a atteint un centre ou une tentative de livraison a échoué. Un état d’expédition correspond à l’interprétation, par votre application, des éléments de preuve pertinents à un moment donné. Ces concepts doivent être stockés séparément.

Par exemple, un colis peut présenter un événement de tentative de livraison, suivi d’un événement d’arrivée dans un centre. L’arrivée constitue un historique opérationnel utile, mais elle ne signifie pas nécessairement que la condition liée à l’échec de la tentative a été résolue. À l’inverse, un scan retardé reçu après une confirmation de livraison ne doit pas automatiquement faire repasser le colis en transit.

Une architecture pratique comporte trois couches :

  1. Éléments de preuve bruts : la charge utile originale du transporteur ou du fournisseur, y compris les codes, les textes, les horodatages et les identifiants.
  2. Événements normalisés : votre interprétation de chaque événement individuel à l’aide d’une règle de correspondance versionnée.
  3. Projection actuelle de l’expédition : l’état sélectionné à partir de l’historique des événements, ainsi que les conditions actives et les actions destinées au client.

Cette séparation vous permet de corriger les correspondances et de reconstruire les états d’expédition sans supprimer l’enregistrement d’origine.

Définir un modèle de statuts compact avec des conditions distinctes

Un champ de statut unique devient difficile à gérer lorsqu’il doit représenter simultanément le déplacement physique, le traitement douanier, les problèmes de livraison et les retours. Utilisez un modèle de cycle de vie réduit, puis ajoutez des conditions et des motifs plus précis.

Statut canoniqueSignification recommandéeLimite à préserver
UNKNOWNLes éléments de preuve ne peuvent pas être associés avec suffisamment de certitude.N’est pas équivalent à perdu ou retardé.
PRE_TRANSITDes informations électroniques sur l’expédition existent, sans acceptation physique confirmée.La création d’une étiquette ne prouve pas que le transporteur est en possession du colis.
IN_TRANSITL’expédition se déplace dans le réseau de livraison ou y est en cours de traitement.N’implique pas que la livraison aura lieu le jour même.
OUT_FOR_DELIVERYLa source signale explicitement un départ pour une tentative de livraison.L’arrivée dans un centre local ne suffit pas.
READY_FOR_PICKUPL’expédition est explicitement disponible pour être récupérée par le destinataire.L’arrivée dans un point de retrait ne suffit pas à elle seule à établir que le colis est prêt.
DELIVEREDLa livraison est explicitement confirmée pour le trajet concerné de l’expédition.Un transfert entre transporteurs ne constitue pas nécessairement une livraison au destinataire.
CANCELEDLa source confirme explicitement l’annulation de l’enregistrement de l’expédition.L’annulation d’une commande ne prouve pas qu’un colis a cessé de se déplacer.

Conservez les conditions telles que CUSTOMS_PROCESSING, DELIVERY_ATTEMPT_FAILED, ADDRESS_ISSUE ou DELAY_REPORTED en dehors du champ principal du cycle de vie. Une expédition peut rester IN_TRANSIT alors qu’un problème d’adresse nécessite une intervention. Ne qualifiez pas le traitement douanier habituel d’exception, sauf si la source signale une retenue, un problème ou une action requise.

Représentez séparément la direction à l’aide d’un champ tel que journey_type. Un retour peut avoir ses propres états en transit et livré. Cela évite d’interpréter la livraison au vendeur comme une livraison réussie à l’acheteur.

Construire l’enregistrement de l’événement avant d’écrire les règles de correspondance

L’enregistrement normalisé doit contenir suffisamment de contexte pour expliquer la correspondance et reproduire le résultat. Un schéma de départ utile comprend :

  • Identité : identifiant interne de l’expédition, identifiant du transporteur, numéro de suivi, source et trajet de l’expédition.
  • Éléments de preuve d’origine : code d’événement brut, description brute, identifiant de l’événement source lorsqu’il est fourni et référence à la charge utile d’origine.
  • Chronologie : heure de survenue de l’événement, informations de fuseau horaire, heure de réception et précision de l’horodatage.
  • Interprétation : statut canonique, condition, code motif, type de trajet et exigence d’action.
  • Traçabilité : identifiant de la règle de correspondance, version de la correspondance et catégorie de confiance.

Conservez séparément l’heure de survenue de l’événement et l’heure à laquelle votre système a reçu la mise à jour. Un webhook reçu dans l’après-midi peut décrire un scan effectué le matin. Une réponse de sondage peut également contenir plusieurs événements historiques plutôt qu’un seul nouvel événement.

Utilisez un format d’horodatage documenté tel que RFC 3339 lorsqu’une heure et un décalage sont connus. Si la source fournit une heure locale sans décalage fiable, préservez cette limitation au lieu d’ajouter une fausse indication UTC. Stockez les événements comportant uniquement une date comme des éléments de preuve datés uniquement, sans inventer une heure de scan précise.

Stockez les charges utiles brutes avec des contrôles d’accès et des règles de conservation appropriés. Elles peuvent contenir des informations sur le destinataire ou d’autres données qui n’ont pas leur place dans une table d’analyse largement accessible.

Associer d’abord les codes des transporteurs, puis utiliser le texte avec prudence

Commencez par des règles limitées à une source et à un transporteur spécifiques. Un code tel que 01 n’a aucune signification fiable en dehors de son contexte documenté. Lorsqu’une source distingue les services, les régions ou les trajets, incluez ces dimensions lorsqu’elles influencent l’interprétation.

Utilisez l’ordre de correspondance suivant comme valeur par défaut d’implémentation :

  1. Faites correspondre un code d’événement structuré documenté ainsi que les qualificatifs requis.
  2. Utilisez un statut ou un sous-statut source documenté lorsqu’il décrit clairement l’événement traité.
  3. Appliquez des règles textuelles à portée étroite pour les messages connus qui ne disposent pas de champs structurés suffisants.
  4. Laissez les événements non résolus sans correspondance et envoyez les cas récurrents en revue.

Déterminez d’abord si le champ de statut d’un fournisseur décrit un événement individuel ou le résumé actuel de l’expédition. Copier un résumé au niveau de l’expédition sur chaque événement historique peut faire apparaître les scans antérieurs comme des confirmations de livraison.

Évitez les règles globales fondées sur des mots-clés telles que « contient delivered ». L’expression « not delivered » correspondrait également, tout comme un message décrivant une livraison à un partenaire logistique. Les règles textuelles nécessitent une gestion de la négation, du contexte linguistique et des exclusions. La traduction automatique peut aider un réviseur à comprendre un message, mais le texte traduit ne doit pas devenir silencieusement la définition officielle de l’événement.

Exemples de correspondances et leurs limites

Les exemples ci-dessous utilisent des messages inventés pour illustrer la conception des règles. Il ne s’agit pas de codes de transporteurs vérifiés ni de messages exacts provenant d’un transporteur particulier.

  • « Shipment details submitted » : associez à PRE_TRANSIT lorsque la définition de la source indique que seules des informations électroniques sont disponibles.
  • « Accepted at origin facility » : associez à IN_TRANSIT lorsque l’événement confirme l’acceptation physique.
  • « Recipient unavailable; attempt unsuccessful » : enregistrez DELIVERY_ATTEMPT_FAILED et évaluez le cycle de vie à partir des éléments de preuve environnants. N’en déduisez pas que le retrait est disponible.
  • « Available for collection » : associez à READY_FOR_PICKUP lorsque la source confirme que le colis est prêt à être récupéré par le destinataire.
  • « Transferred to delivery partner » : enregistrez un transfert et conservez un état de transit approprié, plutôt que de marquer la livraison au destinataire comme terminée.

Chaque règle doit comporter une brève justification et un responsable. Lorsqu’un spécialiste des opérations conteste une correspondance, l’équipe doit pouvoir identifier la règle exacte plutôt que de reconstituer un libellé destiné au client.

Calculer l’état actuel avec un réducteur déterministe

Le réducteur est la fonction qui évalue les événements normalisés et produit la projection actuelle de l’expédition. Il doit renvoyer le même résultat pour les mêmes éléments de preuve et la même version des règles, quel que soit le nombre de fois où l’entrée est rejouée.

Dédupliquer sans supprimer les scans pertinents

Privilégiez un identifiant d’événement source stable lorsqu’il existe. Dans le cas contraire, construisez une clé de déduplication à partir des attributs disponibles tels que l’identité de l’expédition, le transporteur, le code, l’heure de survenue et le lieu. Tenez compte de la précision des horodatages et du comportement de la source. Deux scans présentant des descriptions identiques ne sont pas nécessairement des doublons, notamment si le colis repasse par un centre.

Ordonner les événements sans supposer que les horloges sont parfaites

Utilisez les heures de survenue fiables et les informations de séquence documentées lorsqu’elles sont disponibles. L’heure de réception peut aider à départager des événements, mais elle ne doit pas systématiquement remplacer une heure de survenue antérieure. Si les horodatages sont contradictoires ou ne peuvent pas être comparés de manière fiable, préservez l’ambiguïté au lieu de fabriquer une certitude.

Valider les transitions au lieu d’attribuer un rang universel

Un classement numérique simple des statuts ne peut pas représenter tous les parcours d’expédition. Un colis peut passer du statut en cours de livraison au statut en transit après une tentative infructueuse. La disponibilité pour retrait peut expirer. Une correction explicite peut invalider une confirmation de livraison.

Définissez les transitions autorisées et les éléments de preuve requis pour chacune. Considérez le statut livré comme protégé contre les scans anciens ordinaires, mais autorisez une correction documentée ou une dérogation opérationnelle autorisée. Enregistrez le motif et la source de toute dérogation.

Suivre séparément les conditions actives

Un scan de déplacement ultérieur peut montrer une progression sans prouver qu’un problème de paiement ou d’adresse a été résolu. Définissez des règles de résolution propres à chaque condition : résolution explicite, événement permettant logiquement la résolution ou action manuelle autorisée. N’effacez pas toutes les conditions simplement parce qu’un autre événement est arrivé.

Distinguez également le retard signalé par le transporteur de votre propre alerte d’inactivité. L’absence de nouveaux scans est une observation sur l’actualisation des données, et non la preuve que le colis est perdu.

Gérer les transferts entre transporteurs et les retours comme des trajets liés

Le suivi transfrontalier peut impliquer plusieurs transporteurs et identifiants. Conservez une identité interne de l’expédition et associez les références de suivi propres à chaque transporteur aux trajets concernés. Reliez les références à l’aide des relations fournies par la source ou de données opérationnelles vérifiées, et non simplement sur la base de destinations similaires ou d’horodatages proches.

Un événement de livraison au niveau d’un trajet doit être interprété dans son contexte. Une livraison à un centre de consolidation ou à un réseau partenaire peut terminer ce trajet sans terminer la livraison à l’acheteur. Votre projection de l’expédition doit savoir quelle destination l’événement représente.

De même, séparez « retour demandé », « début du transport retour » et « retourné à l’expéditeur ». Ces expressions décrivent des étapes différentes. Une demande de retour ne prouve pas que le colis est physiquement en train de repartir, et la confirmation de livraison d’un trajet inverse doit identifier la destination du retour.

Utiliser une API de suivi sans renoncer à vos règles métier

Une intégration multitransporteurs peut fournir un point d’ingestion commun, mais un format de réponse partagé ne supprime pas la nécessité d’un contrat interne clair. Lorsque vous évaluez l’API de suivi 17TRACK, utilisez sa documentation officielle pour vérifier la signification des champs et des interfaces pertinents pour votre implémentation. Ne supposez pas que les statuts proposés dans ce guide correspondent à sa taxonomie native.

Avant de connecter une API à des notifications clients ou à une automatisation opérationnelle, établissez :

  • Quels champs décrivent des événements individuels et lesquels décrivent le résumé actuel de l’expédition.
  • Quels détails du transporteur d’origine sont exposés et peuvent être conservés.
  • Comment sont représentés les horodatages, les valeurs manquantes, les corrections et les mises à jour répétées.
  • Comment distinguer les trajets de retour et les livraisons à des partenaires intermédiaires.
  • Comment votre intégration réagira aux codes inconnus ou aux futures modifications de schéma.

Conservez un adaptateur léger entre la réponse externe et votre modèle canonique. Le reste de votre application pourra ainsi utiliser un contrat unique de statut de suivi sans dépendre du nom de chaque champ en amont. Traitez les règles de notification comme une couche supplémentaire : un nouvel événement normalisé ne doit pas automatiquement déclencher un message client.

Tester les historiques d’événements, et pas seulement les correspondances individuelles

Une correspondance peut être correcte prise isolément tout en produisant un état d’expédition erroné. Testez des historiques complets, y compris les mises à jour reçues dans un ordre différent de celui de leurs heures de survenue.

  • Historique retardé : la confirmation de livraison arrive avant un ancien scan de transit. L’expédition reste livrée.
  • Ingestion répétée : le même événement est traité à nouveau. Aucune notification client en double n’est envoyée.
  • Tentative échouée : une tentative infructueuse survient après le statut en cours de livraison. La projection ne promet plus une tournée de livraison active sans éléments de preuve justificatifs.
  • Prêt pour retrait : un colis atteint un centre de retrait avant que sa disponibilité soit confirmée. Aucune instruction de retrait prématurée n’est envoyée.
  • Événement inconnu : un nouveau code apparaît. L’enregistrement brut est conservé et un état d’expédition précédemment établi n’est pas automatiquement remplacé par le statut inconnu.
  • Transport retour : un trajet inverse se termine chez l’expéditeur. La livraison initiale à l’acheteur n’est pas marquée comme réussie.
  • Correction : une correction explicite de la source modifie le résultat au moyen d’une transition auditable.

Surveillez les événements sans correspondance, le recours aux solutions de repli textuelles, les transitions invalides et les tentatives de notification en double par transporteur et par source. Distinguez l’exhaustivité des correspondances de leur exactitude : reconnaître chaque code n’est pas utile si son interprétation est erronée.

Avant de déployer une modification de correspondance, rejouez des historiques représentatifs et comparez les projections anciennes et nouvelles. Examinez les différences qui affectent la confirmation de livraison, les instructions de retrait, la clôture du retour ou l’action du client. Versionnez les règles afin qu’un agent d’assistance puisse expliquer pourquoi le système a produit un résultat particulier.

FAQ

Chaque événement de suivi doit-il avoir exactement un statut ?

Chaque événement peut avoir une interprétation normalisée principale, mais il peut également nécessiter une condition, un motif et un contexte de trajet. Forcer toute la signification dans une seule liste plate de statuts rend le modèle plus difficile à utiliser et à maintenir.

Un événement inconnu doit-il remplacer le statut actuel de l’expédition ?

Généralement, non. Laissez la correspondance de l’événement non résolue tout en conservant le dernier état d’expédition pris en charge. Affichez séparément la fraîcheur des données afin que les utilisateurs ne prennent pas un ancien état confirmé pour une mise à jour récente.

Une expédition livrée peut-elle repasser en transit ?

Un ancien scan de transit ne doit pas provoquer ce changement. Une correction vérifiée peut le justifier, tandis qu’un nouveau trajet de retour devrait normalement être représenté séparément. La transition nécessite un motif explicite, et non un simple horodatage de réception ultérieur.

Comment représenter les mises à jour de suivi manquantes ?

Utilisez un indicateur interne de fraîcheur ou une alerte d’inactivité. Conservez-le séparément des statuts de retard, de perte ou d’exception signalés par le transporteur. Tout seuil d’escalade doit refléter vos engagements de service et votre politique opérationnelle plutôt qu’une hypothèse universelle.

Qui doit approuver les modifications de correspondance ?

L’ingénierie doit être responsable de l’implémentation et des tests de rejeu ; les opérations logistiques doivent valider la signification liée à l’expédition ; et le responsable de l’expérience client doit approuver les conséquences sur les messages. Désignez un responsable décisionnel identifié afin que les événements ambigus ne restent pas indéfiniment sans résolution.

Sources

  • RFC 3339: Date and Time on the Internet: Timestamps — référence pour la représentation des horodatages et des décalages numériques.
  • 17TRACK Tracking API — point d’entrée officiel pour l’intégration de l’API de suivi évoquée ci-dessus.
  • 17TRACK API documentation — référence d’implémentation pour vérifier le contrat du fournisseur ; le modèle canonique et les exemples de correspondance de cet article sont des modèles de conception proposés, et non des définitions propres au fournisseur.
Loading