Suivi des expéditions par webhook : comment fonctionnent les webhooks de suivi par rapport au polling (charges utiles, nouvelles tentatives et configuration)
Les webhooks de suivi des expéditions envoient une requête HTTP à votre application lorsqu'un service de suivi dispose d'une mise à jour à signaler. Le polling fonctionne dans le sens inverse : votre application demande régulièrement les dernières informations de suivi. Pour les développeurs qui connectent les données d'expédition à un système de gestion des commandes, à une boutique ou à un service de notification client, les webhooks constituent généralement le meilleur mécanisme principal de mise à jour lorsqu'ils sont pris en charge ; un polling ciblé peut aider à récupérer les mises à jour manquées et à rapprocher les enregistrements.

Aucune de ces méthodes ne fait scanner un colis plus tôt par le transporteur. Toutes deux dépendent du moment où la source de suivi reçoit et expose de nouvelles informations. La différence pratique réside dans la manière dont votre application prend connaissance de ces informations, dans le volume de requêtes qu'elle génère et dans ce qui se produit en cas d'échec de livraison.
Webhooks de suivi ou polling : la différence opérationnelle
Il s'agit de modèles d'intégration, et non de bases de données de suivi concurrentes. Un transporteur ou une plateforme de suivi peut proposer l'un ou l'autre modèle, ou les deux, avec des conditions d'accès différentes. Comparez le comportement de l'API spécifique que vous prévoyez d'utiliser plutôt que de supposer que tous les services de webhook offrent les mêmes garanties.
| Point de décision | Webhooks | Polling |
|---|---|---|
| Qui démarre la requête ? | Le service de suivi appelle votre endpoint. | Votre application appelle l'API de suivi. |
| Délai de mise à jour | Dépend de la fraîcheur de la source, de la génération de l'événement, de la livraison et du traitement. | Dépend également du moment où votre prochaine requête planifiée est exécutée. |
| Volume de requêtes | Dépend des mises à jour émises, du regroupement et des nouvelles tentatives de livraison. | Dépend du volume d'expéditions, de la fréquence du polling et du regroupement. |
| Infrastructure | Nécessite un récepteur accessible et une gestion sécurisée des requêtes entrantes. | Nécessite un planificateur, un accès sortant à l'API et une gestion des limites de débit. |
| Récupération après échec | Dépend des nouvelles tentatives du fournisseur ainsi que de votre propre processus de rapprochement. | Dépend des requêtes ultérieures et de la conservation ou non de l'historique nécessaire par l'API. |
Choisissez d'abord les webhooks lorsque les mises à jour rapides sont importantes et que votre équipe peut exploiter un récepteur fiable. Choisissez d'abord le polling lorsque les endpoints entrants sont impraticables, que le volume d'expéditions est modéré ou que la source ne fournit pas de webhooks adaptés. Utilisez une conception hybride lorsque des mises à jour manquées perturberaient les communications avec les clients ou les opérations et que l'API prend en charge le rapprochement.
Ne supposez pas que les webhooks sont moins coûteux. Les frais d'abonnement, l'enregistrement du suivi, les appels d'API, la livraison des événements et l'infrastructure peuvent être facturés différemment. Comparez les conditions commerciales réelles et la charge de travail prévue plutôt que de considérer un nombre réduit de requêtes comme la preuve d'une facture moins élevée.
Que se passe-t-il entre le scan du transporteur et votre application ?
- Identifier l'expédition. Associez le numéro de suivi, les informations du transporteur lorsque nécessaire et une référence d'expédition interne. Certains services exigent un enregistrement avant le début de la surveillance.
- Configurer la livraison des événements. Fournissez une URL de callback HTTPS et sélectionnez les abonnements aux événements pris en charge.
- La source reçoit les informations de suivi. Un scan du transporteur ou un changement de statut devient disponible pour le service de suivi.
- Le service envoie un webhook. La requête peut contenir un instantané complet du suivi, un seul point de contrôle ou uniquement une référence nécessitant une consultation de l'API.
- Votre récepteur le valide et l'enregistre. Authentifiez la requête, vérifiez sa structure et enregistrez durablement l'événement ou placez-le dans une file.
- Un processus de travail met à jour les systèmes métier. Normalisez les statuts, mettez à jour les enregistrements d'expédition et ne déclenchez que les actions qui restent appropriées.
La livraison d'un webhook n'est pas la même chose que la livraison physique. Il s'agit d'un message concernant les informations d'expédition. De même, une réponse positive à un webhook ne prouve pas qu'un e-mail a été envoyé ou qu'un enregistrement de commande a été mis à jour ; il s'agit de résultats de traitement en aval qui nécessitent leur propre surveillance.
Lire le contenu d'un webhook de suivi
Le JSON suivant est une conception d'intégration illustrative, et non un contenu de webhook 17TRACK ni un schéma universel. Les noms de champs, codes de statut, formats d'horodatage et identifiants d'événements réels doivent provenir de la documentation du fournisseur sélectionné.
{
"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"
}
}
}Séparez trois horloges dans votre modèle de données : le moment où l'événement d'expédition s'est produit, celui où le fournisseur a généré le message et celui où votre application l'a reçu. Un point de contrôle retardé peut arriver après un point plus récent. Un horodatage sans décalage nécessite également une interprétation explicite ; ne traitez pas silencieusement chaque horodatage local du transporteur comme étant en UTC.
Conservez votre référence d'expédition interne avec les identifiants du fournisseur. Un numéro de suivi seul peut ne pas suffire comme identifiant global permanent, notamment dans différents contextes de transporteurs. Pour les commandes fractionnées, conservez des enregistrements au niveau de l'expédition plutôt que de laisser le statut livré d'un colis marquer toute la commande comme terminée.
Conservez le statut et la description d'origine en parallèle de votre statut métier normalisé. Votre application peut associer plusieurs messages de transporteurs à « en transit », mais le personnel d'assistance peut toujours avoir besoin du point de contrôle d'origine pour comprendre un retard. Considérez les dates de livraison estimées comme des estimations et distinguez un champ manquant d'une instruction explicite visant à effacer une valeur existante.
Nouvelles tentatives, accusés de réception et événements en double
La livraison d'un webhook peut échouer en raison de délais d'attente, d'interruptions réseau, d'erreurs d'authentification ou de l'indisponibilité du récepteur. Un fournisseur peut effectuer de nouvelles tentatives, mais il n'existe pas de calendrier universel, de durée de conservation ni de nombre maximal de tentatives. Vérifiez quelles réponses déclenchent une nouvelle tentative, comment les redirections sont gérées et si une nouvelle livraison manuelle est disponible.
Accuser réception après une acceptation durable
Gardez le chemin de requête court : validez la requête, rendez le travail accepté persistant et renvoyez la réponse de succès exigée par le fournisseur. Envoyez les e-mails et effectuez les opérations métier plus lentes de manière asynchrone. La spécification HTTP définit 202 Accepted comme une acceptation pour traitement plutôt qu'un traitement terminé, mais votre fournisseur peut exiger une autre réponse de succès. Suivez son contrat de webhook.
Renvoyer un succès avant d'avoir enregistré quoi que ce soit risque de faire perdre la mise à jour si votre processus tombe en panne. Attendre chaque action en aval risque de provoquer un délai d'attente et une nouvelle tentative de livraison. Une boîte de réception ou une file durable fournit une frontière entre la réception et le traitement.
Rendre le traitement idempotent
L'idempotence signifie que le retraitement du même événement ne répète pas ses effets métier. Un émetteur peut effectuer une nouvelle tentative après que votre serveur a accepté un événement mais que son accusé de réception a été perdu. La livraison en double doit donc constituer un cas de test courant.
- Utilisez un identifiant d'événement documenté comme clé de déduplication lorsqu'il est disponible, en le rattachant au fournisseur ou au compte approprié.
- Si aucun identifiant n'existe, concevez une clé composite à partir de champs d'événement stables et testez les risques de collision.
- Imposez l'unicité de manière atomique dans le stockage ; une séquence distincte « vérifier puis insérer » peut subir une concurrence lors de livraisons simultanées.
- Protégez également les actions en aval. Un événement en double ne doit pas envoyer une autre notification de livraison ni répéter une opération financière.
- Définissez la durée de conservation selon le comportement de rejeu du fournisseur et vos exigences de récupération, plutôt que de supprimer immédiatement les enregistrements de déduplication.
Ne supposez pas une arrivée chronologique
Ne remplacez pas l'état actuel de l'expédition simplement parce qu'une requête est arrivée en dernier. Comparez la signification de l'événement, les horodatages et toute information de séquence documentée. Conservez les points de contrôle tardifs dans l'historique sans faire automatiquement revenir le statut affiché en arrière. En même temps, autorisez les corrections documentées : une règle rigide selon laquelle les expéditions livrées ne peuvent jamais changer peut masquer des exceptions légitimes ou des informations corrigées.
Liste de contrôle pratique pour la configuration
1. Confirmer le contrat du fournisseur
Avant la mise en œuvre, confirmez les exigences d'enregistrement, les événements pris en charge, la structure du contenu, l'authentification, les réponses attendues, les délais d'attente, le comportement des nouvelles tentatives et les limites de l'API. Vérifiez si une notification représente un instantané ou une modification incrémentielle, si les livraisons peuvent contenir plusieurs enregistrements et si l'abonnement envoie un état initial.
Pour une intégration 17TRACK, commencez par la page officielle de l'API de suivi et la documentation de l'API. Utilisez la documentation spécifique au fournisseur pour établir les champs de requête et les exigences relatives au callback ; le contenu générique ci-dessus ne la remplace pas. Confirmez les conditions d'accès et les limites opérationnelles de l'intégration que vous prévoyez de déployer.
2. Sécuriser l'endpoint de réception
Utilisez HTTPS et le mécanisme d'authentification documenté par le fournisseur. S'il utilise une signature HMAC, validez exactement les données signées qu'il spécifie. Lorsque des octets bruts de la requête sont signés, analyser et sérialiser à nouveau le JSON avant la vérification peut modifier ces octets et invalider la signature. Utilisez une comparaison en temps constant pour les valeurs de signature dérivées d'un secret.
Si des horodatages signés ou des identifiants de livraison sont disponibles, appliquez les contrôles de rejeu documentés. Une signature valide authentifie un message mais n'établit pas à elle seule qu'il est récent. Gardez les secrets hors des URL et des journaux de l'application, prévoyez la rotation des secrets et limitez la taille des requêtes. La liste blanche d'adresses IP peut constituer un contrôle supplémentaire lorsque des plages d'adresses maintenues existent, mais elle ne remplace pas l'authentification des messages.
3. Séparer la réception du traitement métier
Stockez suffisamment d'informations pour retracer et rejouer en toute sécurité un événement accepté. Les processus de travail de la file doivent normaliser la mise à jour, appliquer les règles de transition d'état et enregistrer les résultats des actions. Placez les tâches qui échouent à répétition dans un processus de lettres mortes pouvant être examiné plutôt que de les réessayer indéfiniment. Limitez l'accès et la conservation, car les contenus de suivi peuvent contenir des informations liées aux clients.
4. Tester les chemins d'échec avant le lancement
- Envoyez deux fois le même événement, y compris lors de livraisons simultanées.
- Livrez un point de contrôle plus ancien après un point plus récent.
- Simulez une interruption de file et le crash d'un processus de travail après la réception.
- Testez une authentification invalide, un JSON mal formé et des requêtes trop volumineuses.
- Testez les expéditions inconnues, les champs facultatifs manquants et les champs ajoutés.
- Vérifiez qu'un colis livré ne termine pas une commande fractionnée.
- Rejouez un événement après récupération et confirmez que les notifications restent dédupliquées.
Acceptez les champs ajoutés lorsque cela est sûr, mais ne réinterprétez pas silencieusement les valeurs de statut inconnues. Conservez la valeur brute et dirigez les cas non reconnus vers un processus de secours ou d'examen défini.
Quand le polling conserve son utilité
Le polling est utile pour la synchronisation initiale, la récupération après une interruption et la vérification des expéditions dont les mises à jour attendues ne sont pas arrivées. Toutefois, le silence seul ne prouve pas un échec du webhook : un colis peut réellement ne présenter aucun nouveau scan. Effectuez le rapprochement avec l'état ou l'historique actuels de l'API au lieu de supposer que toute expédition silencieuse nécessite une alerte.
Pour planifier la montée en charge, un modèle simplifié de polling est requests per hour ≈ active shipments × polls per shipment per hour, en supposant une expédition par requête. Les endpoints par lots modifient ce calcul. À titre d'illustration, 1 000 expéditions vérifiées quatre fois par heure génèrent 4 000 requêtes par heure avant les nouvelles tentatives ; il s'agit d'un calcul arithmétique, et non d'une estimation de quota ou de tarification du fournisseur.
Planifiez les vérifications en fonction de l'activité des expéditions et du risque métier, respectez les limites de débit et ajoutez une temporisation aléatoire afin que les tâches ne démarrent pas toutes en même temps. Pour les échecs susceptibles d'être réessayés, utilisez un backoff limité et respectez les indications applicables du serveur. Ne réessayez pas continuellement les erreurs permanentes d'identifiants ou de validation sans les corriger.
Un système hybride pratique utilise les webhooks pour les mises à jour courantes et des lectures d'API ciblées pour les lacunes suspectées. Surveillez séparément les échecs de réception, l'ancienneté de la file, les échecs de traitement, les taux de doublons et les écarts de rapprochement. Lorsque les horodatages sont fiables, distinguez le délai des données sources du délai de livraison du webhook et du délai de traitement interne.
FAQ
Les webhooks de suivi sont-ils en temps réel ?
Ils peuvent réduire le délai causé par l'attente du prochain cycle de polling. Ils ne garantissent pas des scans immédiats du transporteur ni des mises à jour instantanées de la source. La fraîcheur de bout en bout comprend le signalement du transporteur, le traitement du fournisseur, la livraison de la requête et votre propre application.
Puis-je arrêter complètement le polling après avoir activé les webhooks ?
C'est possible si les fonctions de récupération du fournisseur et vos exigences métier le permettent. Pour les enregistrements d'expédition importants sur le plan opérationnel, conservez une méthode de rapprochement. Elle peut être ciblée plutôt qu'un polling continu de chaque expédition.
Que se passe-t-il si mon endpoint webhook est hors ligne ?
La récupération dépend de la politique de nouvelles tentatives documentée par l'émetteur. Ne supposez pas que les tentatives se poursuivent indéfiniment. Après avoir restauré l'endpoint, examinez les livraisons échouées, utilisez les outils de nouvelle livraison pris en charge et rapprochez les expéditions concernées via l'API lorsque cela est possible.
Chaque webhook doit-il déclencher une notification client ?
Non. Un événement peut être un doublon, un point de contrôle historique ou une mise à jour qui ne modifie pas le statut visible par le client. Déclenchez les notifications à partir de transitions métier dédupliquées, avec des règles pour les exceptions et les corrections.
Une réponse HTTP positive signifie-t-elle que la mise à jour de l'expédition est terminée ?
Pas nécessairement. Dans une conception asynchrone, elle signifie que le récepteur a accepté l'événement conformément au contrat convenu. Suivez séparément l'achèvement du traitement et les résultats des notifications en aval afin qu'une requête acceptée ne puisse pas masquer un flux de travail échoué.
Sources
- RFC 9110: Sémantique HTTP — sémantique des réponses HTTP, y compris l'acceptation pour traitement et Retry-After.
- RFC 2104: HMAC — Hachage avec clé pour l'authentification des messages — construction HMAC mentionnée dans les recommandations relatives à la vérification des signatures.
- Documentation GitHub : bonnes pratiques pour l'utilisation des webhooks — recommandations générales d'ingénierie concernant HTTPS, les secrets, le traitement asynchrone et l'identification des livraisons ; ses règles spécifiques au service ne définissent pas le comportement des fournisseurs de suivi.
- API de suivi 17TRACK — point d'entrée officiel pour évaluer une intégration de suivi 17TRACK.
- Documentation de l'API 17TRACK — référence spécifique au fournisseur concernant les exigences de mise en œuvre.


