Skip to main content
AccueilBlogGuidesStatut de livraison de l’API d’expédition : codes d’état, webhooks et alertes d’exception

Statut de livraison de l’API d’expédition : codes d’état, webhooks et alertes d’exception

17TRACK

Un statut de livraison d’une API d’expédition décrit la progression d’un colis, et non la réussite d’une requête API. Pour créer un suivi fiable, séparez les codes de réponse HTTP des statuts d’expédition, traitez les webhooks sans supposer qu’ils arrivent une seule fois ou dans l’ordre, et transformez les exceptions nécessitant une action en alertes avec des responsables clairement désignés. Pour les équipes d’ingénierie et d’exploitation e-commerce, l’objectif est de disposer d’un enregistrement d’expédition qui reste fiable lorsque les mises à jour du transporteur sont retardées, dupliquées ou corrigées.

Statut de livraison de l’API d’expédition, codes de statut, webhooks et alertes d’exception

Ce guide explique comment structurer cet enregistrement, traiter les événements de suivi entrants et distinguer un problème de livraison d’un problème d’intégration du suivi.

Séparer les codes HTTP, les résultats de l’API et les statuts d’expédition

L’expression « code de statut » peut désigner trois niveaux différents. Les mélanger crée des tableaux de bord trompeurs et des notifications client inutiles.

NiveauCe qu’il vous indiqueExemple d’interprétation
Réponse HTTPLe résultat de la requête HTTPUne réponse 200 indique une réussite au niveau HTTP ; cela ne signifie pas que le colis a été livré.
Résultat métier de l’APILa réussite ou non de l’opération demandée selon les règles applicatives du fournisseurLe corps de la réponse peut indiquer qu’une inscription de suivi a été rejetée, y compris dans une réponse HTTP réussie si l’API est conçue ainsi.
Statut d’expéditionL’état physique ou opérationnel signalé du colisEn transit, en attente de retrait ou livré.

La norme sur la sémantique HTTP définit la signification des réponses HTTP. Par exemple, 202 Accepted signifie qu’une requête a été acceptée pour traitement, mais que celui-ci n’est pas nécessairement terminé. Cela ne prouve pas qu’un transporteur a accepté un colis.

De même, l’échec d’une requête de suivi ne prouve pas qu’une expédition a cessé d’avancer. Votre application peut temporairement perdre sa visibilité alors que la livraison physique se poursuit normalement. Surveillez ces niveaux indépendamment.

Créer un modèle de statut sans supprimer les détails du transporteur

Il n’existe pas de code numérique universel de statut de livraison partagé par toutes les API d’expédition et tous les transporteurs. Une valeur issue d’une intégration ne doit pas être interprétée à l’aide de la correspondance d’un autre fournisseur. Utilisez la documentation de la version spécifique de l’API que vous implémentez.

Un modèle interne pratique combine un petit ensemble de statuts normalisés avec l’événement original du transporteur. La normalisation permet d’obtenir des rapports cohérents ; l’événement original conserve les détails nécessaires à l’analyse.

Statut interne indicatifSignificationPrécaution opérationnelle
Informations reçuesDes informations électroniques sur l’expédition existent.Ne considérez pas la création de l’étiquette comme une remise physique confirmée.
En transitL’enregistrement de suivi indique un déplacement dans le réseau de livraison.Cette catégorie générale peut inclure différentes étapes du transport.
En cours de livraisonLe colis est signalé sur une tournée de livraison.Ne transformez pas cela en garantie de livraison inconditionnelle.
En attente de retraitLe destinataire est censé retirer le colis.N’incluez des instructions ou des délais de retrait que lorsque la source les confirme.
LivréLa source de suivi signale la livraison.Un scan de livraison ne suffit pas, à lui seul, à résoudre une réclamation de non-réception du client.
ExceptionUn événement peut nécessiter une intervention ou interrompre la progression normale.Conservez la raison au lieu de considérer chaque exception comme une perte.
Retour en cours ou retournéLe colis revient ou son retour est signalé comme terminé.Distinguez l’avancement du retour de la livraison au destinataire initial.
InconnuLes informations disponibles ne peuvent pas être associées avec certitude.Analysez la correspondance ou le manque de données au lieu d’inventer un état de livraison.

Ces libellés constituent un modèle applicatif suggéré, et non une liste officielle de codes 17TRACK. Conservez le code de statut du fournisseur, le sous-statut, la description, l’heure de l’événement, les informations de fuseau horaire, le lieu et l’heure de réception lorsque ces données sont disponibles. Conservez également la version de la correspondance afin de pouvoir auditer les modifications ultérieures.

Pour une implémentation multi-transporteurs, 17TRACK Tracking API est une option d’intégration pertinente. Utilisez sa documentation officielle de l’API pour établir le contrat d’implémentation au lieu de copier des libellés indicatifs dans des champs propres à un fournisseur. Confirmez les définitions de statut applicables, la configuration des webhooks, les exigences d’authentification et la sémantique des réponses avant de créer l’adaptateur.

Construire le traitement des webhooks autour d’une réception durable

Un webhook est une requête HTTP envoyée à votre endpoint pour signaler un événement. Il peut réduire le besoin d’interrogations répétées, mais ne doit pas être considéré comme une garantie de livraison immédiate, ordonnée ou exactement une fois. Concevez le récepteur pour tolérer les nouvelles tentatives, les interruptions et les charges utiles inattendues, sauf garantie explicite contraire du fournisseur.

  1. Authentifiez la requête. Appliquez la méthode de vérification documentée par le fournisseur. Si des signatures sont prises en charge, validez-les à l’aide de l’algorithme spécifié et des octets bruts de la requête. N’inventez pas d’en-tête de signature et ne supposez pas que tous les services utilisent HMAC.
  2. Validez la charge utile. Vérifiez les champs obligatoires, les types, la taille de la charge utile et l’association avec une expédition gérée par votre compte. Gérez les champs facultatifs inconnus sans compromettre inutilement la compatibilité future.
  3. Persistez avant d’accuser réception. Stockez l’événement accepté ou placez-le dans une file durable avant d’envoyer la réponse de succès documentée. Si la persistance échoue, n’accusez pas réception de l’événement comme s’il avait été reçu en toute sécurité.
  4. Traitez de manière asynchrone. Effectuez, lorsque cela est pratique, la correspondance des statuts, les mises à jour de commandes et les décisions de notification en dehors du gestionnaire de requêtes.
  5. Rendez les effets secondaires idempotents. Un événement répété ne doit pas créer un autre ticket d’assistance ni envoyer une nouvelle copie du même message client.

Le code d’accusé de réception exact, le délai d’attente, le calendrier des nouvelles tentatives et le comportement de rejeu dépendent du fournisseur. Vérifiez explicitement ces détails. Une instruction générique consistant à « retourner 200 » ne remplace pas le contrat du webhook.

Utilisez HTTPS et gardez les identifiants hors des URL et des journaux courants. Appliquez des contrôles d’accès aux charges utiles stockées, car les données de suivi peuvent contenir des informations personnelles. L’OWASP REST Security Cheat Sheet fournit des recommandations pertinentes sur la protection du transport, la validation des entrées et la sécurité des endpoints.

Dédupliquer les événements sans supprimer les véritables mises à jour

Privilégiez un identifiant d’événement documenté et stable lorsqu’il est disponible. Sinon, dérivez une clé de déduplication à partir d’une combinaison soigneusement sélectionnée de l’identité de l’expédition, de l’horodatage de l’événement, du code de l’événement et du lieu. Testez cette approche avec des charges utiles réelles : deux événements légitimes peuvent partager un horodatage, et le même événement peut arriver avec un texte descriptif légèrement différent.

Utilisez des contrôles de déduplication distincts pour l’ingestion des événements et les actions en aval. Une mise à jour de statut peut devoir être stockée à nouveau en tant que correction, tandis que sa notification client doit rester supprimée. Donnez à chaque notification ou action de ticket sa propre identité durable.

Séparer l’heure de l’événement de l’heure de réception

Supposons qu’un événement « en transit » atteigne votre système après un événement « en cours de livraison », mais que son horodatage du transporteur soit antérieur. Stockez-le dans l’historique sans ramener automatiquement le statut actuel à « en transit ».

L’ordre des horodatages ne suffit pas dans tous les cas. Les fuseaux horaires manquants, les scans corrigés et les sources contradictoires nécessitent des règles explicites. Conservez la précision et les décalages des horodatages, enregistrez le moment où votre système a reçu chaque événement et utilisez, lorsque ces informations sont disponibles, les données de séquence documentées du fournisseur. N’imposez pas une progression rigide uniquement vers l’avant : les tentatives de livraison, les réorientations, les retours et les corrections peuvent créer des transitions légitimes qui semblent revenir en arrière.

Transformer les exceptions en actions attribuées

Une alerte d’exception doit expliquer ce qui s’est passé, quelle action est nécessaire et qui est responsable de l’étape suivante. Un message générique d’« exception d’expédition » oblige le personnel opérationnel à répéter la même analyse et peut inquiéter les clients sans les aider.

Commencez par une petite politique de routage :

  • Problème d’adresse ou d’accès : transmettez-le au support client afin de vérifier le problème et d’examiner le processus de correction disponible auprès du transporteur. Ne promettez pas une modification d’adresse avant d’avoir confirmé qu’elle est possible.
  • Retrait requis : informez le destinataire lorsque la source fournit une instruction de retrait exploitable. Conservez toute échéance vérifiée.
  • Action douanière requise : attribuez le dossier selon la personne qui doit fournir les documents ou informations demandés. Un événement lié aux douanes n’établit pas à lui seul qu’un paiement est dû.
  • Tentative de livraison infructueuse : vérifiez l’étape suivante signalée avant de conseiller une nouvelle livraison ou un retrait.
  • Retour à l’expéditeur : ouvrez une analyse opérationnelle. N’émettez pas automatiquement un remboursement uniquement sur la base d’un libellé général de suivi, sauf si votre politique l’autorise explicitement.
  • Perte ou dommage signalé par le transporteur : transmettez le dossier au responsable des réclamations et conservez les preuves de l’événement. Séparez les décisions relatives aux réclamations de la détection générale des retards.

Chaque alerte doit contenir un identifiant d’expédition, une référence de commande, la raison de l’événement, l’horodatage source, le dernier état connu, le responsable désigné et l’action suivante. Incluez un lien vers l’enregistrement interne pertinent au lieu d’exposer des informations client inutiles dans les canaux de messagerie partagés.

Traiter l’absence de mise à jour comme une condition distincte

Une expédition sans scan récent n’est pas automatiquement perdue. Elle peut se trouver entre deux points de contrôle, attendre son premier scan physique ou être touchée par une perte de visibilité.

Définissez les seuils d’inactivité selon le service, l’itinéraire, l’étape d’expédition et l’engagement commercial, plutôt que d’appliquer un délai universel. Distinguez un colis qui n’a jamais reçu de scan d’acceptation d’un colis dont les mises à jour se sont arrêtées après son entrée dans le réseau. Si les données historiques sont limitées, utilisez le seuil pour déclencher une analyse, et non pour déclarer une perte.

Supprimez les alertes répétées tant qu’un dossier inchangé reste ouvert. Faites remonter le dossier lorsqu’une nouvelle preuve apparaît, qu’un suivi convenu est manqué ou que l’engagement de livraison au client exige une intervention.

Surveiller séparément la santé de l’intégration et les performances de livraison

La surveillance de l’API indique si votre intégration de suivi fonctionne. La surveillance des livraisons indique ce qui arrive aux expéditions. Un endpoint sain peut recevoir des données obsolètes du transporteur, tandis qu’un endpoint indisponible peut manquer des mises à jour pour des colis qui se déplacent normalement.

  • Santé des requêtes : suivez les échecs d’authentification, les délais d’attente, les réponses de limitation de débit, les erreurs serveur et les rejets au niveau applicatif.
  • Santé des webhooks : suivez les échecs de vérification, la latence des accusés de réception, les échecs de persistance, les livraisons en double et les erreurs de traitement.
  • Santé du traitement : surveillez l’ancienneté de la file, les événements non traités, les échecs de correspondance et les échecs de notification.
  • Fraîcheur du suivi : mesurez séparément le temps écoulé depuis le dernier événement source et celui écoulé depuis votre dernière ingestion réussie.
  • Résultats opérationnels : suivez les exceptions non résolues, le délai avant attribution et les suivis en retard.

Pour les nouvelles tentatives de requêtes, suivez les recommandations du fournisseur concernant les limites de débit et les nouvelles tentatives. Évitez de répéter aveuglément des opérations susceptibles de créer des inscriptions en double ou d’autres effets secondaires ; utilisez les mécanismes d’idempotence documentés lorsqu’ils sont disponibles.

Lorsque cela est pris en charge, utilisez un processus de rapprochement pour récupérer le dernier enregistrement de suivi après des pannes ou des événements probablement manqués. Définissez sa fréquence dans les limites contractuelles et de débit. Les webhooks et le rapprochement ont des objectifs différents : l’un transmet les changements, tandis que l’autre aide à détecter et réparer les lacunes.

Tester les cas d’échec avant d’activer les notifications client

Commencez par un traitement réservé à l’interne et examinez des expéditions représentatives avant d’autoriser les changements de statut à envoyer des messages aux clients. Testez davantage que la progression normale d’« en transit » à « livré ».

  • Un webhook en double crée une seule notification client prévue.
  • Un événement plus ancien reçu tardivement ne remplace pas incorrectement l’état actuel.
  • Un statut inconnu est conservé et signalé au lieu d’être associé silencieusement à « livré ».
  • Un échec d’écriture durable ne produit pas d’accusé de réception réussi.
  • Une panne temporaire en aval laisse les événements disponibles pour une nouvelle tentative.
  • Un événement de livraison suivi d’une correction reste auditable.
  • Une commande comportant plusieurs colis ne devient pas entièrement livrée lorsqu’un seul colis l’est.
  • Une panne d’API alerte l’ingénierie sans informer automatiquement les clients que leurs colis sont retardés.

Le critère de mise en production doit être la cohérence opérationnelle : l’enregistrement d’expédition, le message client et l’action du support doivent concorder avec les mêmes éléments de preuve sous-jacents. Une réponse réussie au webhook ne démontre pas à elle seule que l’expérience de livraison fonctionne.

FAQ

HTTP 200 signifie-t-il que le colis a été livré ?

Non. Cela indique la réussite de la requête au niveau HTTP. Lisez séparément le résultat métier de l’API et les champs de statut d’expédition. Pour un webhook, un accusé de réception réussi concerne la réception de la notification, et non la livraison physique du colis.

Dois-je utiliser des webhooks ou l’interrogation pour les mises à jour de suivi ?

Utilisez les webhooks pour les mises à jour événementielles lorsque le fournisseur les prend en charge. Lorsque cela est possible et justifié sur le plan opérationnel, ajoutez une interrogation de rapprochement limitée afin de récupérer les lacunes. L’interrogation seule peut convenir lorsque les webhooks ne sont pas disponibles, mais sa fréquence doit respecter les limites du fournisseur et vos exigences de fraîcheur.

Pourquoi le statut de suivi peut-il changer après « livré » ?

Une source peut corriger un événement, ou votre intégration peut recevoir des informations retardées ou contradictoires. Conservez l’historique et évaluez les nouvelles preuves au lieu de considérer « livré » comme techniquement immuable. Une livraison signalée et la confirmation de réception par le client sont également deux faits différents.

À quelle vitesse une alerte d’exception doit-elle être envoyée ?

Fondez l’urgence sur l’action requise et sur tout délai vérifié. Un problème nécessitant une action du destinataire doit être traité différemment d’un retard informatif. La vitesse de traitement ne peut pas compenser un événement du transporteur publié tardivement ; conservez donc les horodatages source et de réception.

Les clients doivent-ils voir le statut brut du transporteur ?

En général, les clients bénéficient davantage d’une explication claire et d’une prochaine étape prise en charge que d’un code inexpliqué. Conservez les détails bruts à des fins de support et d’audit. Ne simplifiez jamais un statut en une promesse plus forte que ce que permet l’événement sous-jacent.

Sources

  • RFC 9110: HTTP Semantics — référence pour la signification des codes de statut HTTP, notamment 200 et 202.
  • OWASP REST Security Cheat Sheet — recommandations de sécurité pertinentes pour les endpoints d’API et de webhooks.
  • 17TRACK Tracking API — référence produit officielle pour l’option d’intégration de suivi présentée.
  • 17TRACK API Documentation — référence officielle pour les exigences d’intégration propres au fournisseur ; les schémas indicatifs et recommandations de flux de travail de ce guide ne remplacent pas ce contrat.
Loading