S'ouvre dans un nouvel onglet
Graphique de titre décoratif pour le suivi des webhooks

Webhook de suivi : Explications pour les développeurs et les détaillants en ligne

Un webhook de suivi est un message HTTP push automatisé qui transmet en temps réel le statut d'un envoi à un autre système dès que ce statut change. Au lieu d'interroger constamment une interface, le service de livraison de colis ou la plateforme d'expédition envoie directement le nouveau statut à une URL fournie par le destinataire. Cela allège la charge du serveur, réduit considérablement la latence par rapport à l'interrogation régulière et constitue la base technique des tableaux de bord de suivi, des notifications clients et des processus douaniers automatisés. Les sections suivantes expliquent la technologie sous-jacente, les mesures de sécurité nécessaires et fournissent un exemple de code concret.


En bref:

  • Les webhooks de suivi signalent les changements d'état en temps réel et réduisent la charge du serveur grâce à des notifications push, contrairement à l'interrogation périodique.
  • La vérification de la signature est effectuée à l'aide du corps de la requête non modifié avec HMAC-SHA256 afin de garantir l'authenticité et l'intégrité.
  • Les événements webhook reçus sont immédiatement placés dans une file d'attente afin d'éviter les délais d'expiration et les retards de traitement.
  • Le système doit mettre en cache les identifiants d'événements et les traiter de manière idempotente afin d'éviter de manière fiable les livraisons en double.
  • Paket International simplifie l'intégration des webhooks grâce à une interface centrale qui regroupe les événements d'expédition dans un tableau de bord.

Colis international
Gérez plus facilement vos expéditions internationales
Paket International regroupe les informations relatives aux expéditions, les services douaniers et le suivi des envois sur un tableau de bord transparent.

Découvrez le forfait international

Table des matières

Qu'est-ce qu'un webhook de suivi ? Définition et événements de suivi typiques

Un webhook fonctionne à l'inverse d'une API traditionnelle. Avec une API classique, votre système interroge régulièrement le service de messagerie pour vérifier les mises à jour. Un webhook inverse ce processus : l'expéditeur vous notifie dès qu'un événement se produit, d'où l'appellation d'API inversée. Au lieu de consulter le service de messagerie toutes les minutes pour vérifier la disponibilité de nouveaux produits, votre système enregistre une adresse de réception une seule fois, et l'expéditeur ne fournit de mises à jour qu'en cas de besoin.

Dans le contexte du transport maritime, pratiquement chaque changement de statut déclenche un événement distinct. Voici quelques exemples d'événements de suivi :

  • L'étiquette d'expédition a été créée.
  • Le colis a été pris en charge par le service de livraison.
  • Le colis a été scanné dans un centre de tri.
  • L'envoi est en cours de livraison.
  • La livraison a été effectuée avec succès.

L'avantage est évident : mises à jour en temps réel sans requêtes répétées, charge de traitement réduite de part et d'autre et base idéale pour l'automatisation. L'inconvénient n'apparaît qu'en cours d'exploitation : votre système doit être accessible en permanence, absorber les interruptions et gérer les messages dupliqués ou retardés. C'est précisément ce que traitent les sections suivantes.

Comment est structuré le message d'un webhook de suivi ?

Techniquement, un webhook de suivi est simplement une requête HTTP POST envoyée à une URL que vous définissez. La charge utile reçue suit presque toujours un modèle en quatre parties : un identifiant d’événement unique, un type d’événement, un horodatage et un objet de données contenant les informations d’expédition. Ce format est si répandu qu’il est devenu synonyme de… Norme de facto pour les charges utiles des webhooks a établi.

Création d'une charge utile de webhook de suivi

Outre le corps du message, les en-têtes HTTP contiennent d'importantes informations supplémentaires. Content‑Type: application/json Cela inclut un en-tête de signature (souvent) X‑Signature ou X‑Hub‑Signature‑256) et un identifiant de livraison, qui permet de distinguer les différentes tentatives de livraison.

Un point est souvent négligé en pratique : la signature doit être placée au-dessus du corps brut, non modifié Le hachage doit être calculé avant toute analyse JSON par une bibliothèque. Même une modification de formatage, comme la présence d'espaces différents, entraîne un hachage différent et donc le rejet injustifié du message.

Comment sécuriser un récepteur de webhook ?

Un destinataire n'est prêt pour la production que lorsqu'il répond de manière fiable à trois questions : le message provient-il réellement de l'expéditeur indiqué ? A-t-il déjà été traité ? Que se passe-t-il en cas d'échec du traitement ? Quiconque ignore ces trois questions recevra tôt ou tard des confirmations de commande en double ou des déclarations en douane manquantes.

La vérification de la signature à l'aide de HMAC-SHA256 sur le corps brut est la première étape. Le secret partagé entre l'expéditeur et le destinataire génère un hachage, que le destinataire recalcule et compare. Le type de comparaison est crucial : une comparaison de chaînes de caractères classique avec === Il est manifestement vulnérable car il s'interrompt immédiatement à chaque caractère incorrect, révélant ainsi une faille de synchronisation exploitable par les attaquants. Dans Node.js, ce problème est géré par… crypto.timingSafeEqual Cette tâche est constante dans le temps ; en Python, la fonction correspondante compare_digest-Fonction.

  • Vérifiez toujours la signature en utilisant le texte brut non modifié, jamais l'objet déjà analysé.
  • Vérifiez l'horodatage de la charge utile par rapport à une fenêtre temporelle d'environ cinq minutes afin d'empêcher les attaques par rejeu avec des messages anciens mais validement signés.
  • Mettre en cache les identifiants d'événements précédemment traités afin d'éviter le traitement en double des livraisons répétées.
  • Pour garantir techniquement l'idempotence, par exemple via une insertion atomique dans une base de données avec une contrainte UNIQUE ou une SET NX dans Redis
  • Les événements qui ont finalement échoué après plusieurs tentatives devraient être déplacés vers une file d'attente de messages non distribuables au lieu d'être ignorés silencieusement.

Cette combinaison d'horodatages signés et de mise en cache des identifiants pour se protéger contre les attaques par rejeu est également utilisée couramment Guides de sécurité pour les webhooks recommandé.

Important pour la gestion des attentes : La quasi-totalité des expéditeurs de webhooks fonctionnent selon le principe « au moins une fois », ce qui signifie qu’ils effectuent au moins une livraison. En pratique, cela implique que les livraisons en double sont la norme, et non une erreur. Un système qui ne traite pas les requêtes de manière idempotente finira tôt ou tard par générer des notifications d’expédition en double ou des statuts douaniers incorrects.

Conseil de pro : Ne supprimez pas les identifiants d'événements mis en cache immédiatement après leur traitement, mais seulement après l'expiration du délai de nouvelle tentative de l'expéditeur. De nombreux fournisseurs répètent les échecs de livraison pendant plusieurs heures, voire plusieurs jours ; un identifiant supprimé trop tôt crée précisément la faille que le contrôle d'idempotence est censé combler.

Comment traiter les événements webhook sans risquer de dépassement de délai ?

Le principal risque opérationnel lié aux webhooks n'est pas la sécurité, mais le temps de réponse. Les services de livraison de colis et les plateformes d'expédition imposent des délais stricts : certains fournisseurs exigent une réponse 2xx en quelques secondes, tandis que d'autres autorisent jusqu'à 30 secondes, comme le précise GitHub dans ses recommandations. Si ce délai est dépassé, l'expéditeur considère la livraison comme un échec et la renvoie, ce qui sature votre base de données de doublons.

La solution réside dans une séparation stricte entre la réception et le traitement :

  1. Vérifiez instantanément les données brutes et les signatures sans logique métier complexe.
  2. Enregistrez l'événement dans une file d'attente, par exemple en utilisant BullMQ, Amazon SQS ou pg-boss.
  3. Immédiatement avec 200 OK répondre avant le début du traitement proprement dit.
  4. Un processus en arrière-plan distinct récupère la tâche dans la file d'attente et exécute la logique proprement dite.
  5. L'identifiant de la tâche dans la file d'attente correspond à l'identifiant de l'événement, la file d'attente elle-même est donc également dédupliquée.

Toute personne gérant le traitement des webhooks de manière bloquante au sein même de la requête se heurtera tôt ou tard à un conflit avec le délai d'expiration de l'expéditeur. Les événements doivent être immédiatement mis en file d'attente ; le traitement proprement dit s'effectue de manière asynchrone en arrière-plan.

La durée de vie d'idempotence (TTL), c'est-à-dire le temps pendant lequel un identifiant d'événement reste en cache, doit être basée sur la fenêtre de nouvelle tentative réelle de l'expéditeur, et non sur une valeur arbitraire. Pour la planification de la capacité, il est important de tenir compte de la profondeur de la file d'attente : si celle-ci augmente continuellement, le processus traite les événements plus lentement qu'ils ne arrivent, et des mécanismes de gestion de la pression doivent être mis en place avant que la mémoire ne soit saturée. Une alerte concernant la file d'attente des messages non distribuables (DLQ) doit être implémentée dès le départ, car une DLQ croissante est généralement le premier signe avant-coureur d'un problème plus grave.

À quoi ressemble un exemple de code pour recevoir un webhook ?

Un gestionnaire propre suit toujours le même ordre : vérification, stockage, puis traitement. Le flux suivant est basé sur des modèles Node.js courants et peut être adapté à tout langage prenant en charge HMAC et les opérations atomiques sur les bases de données.

  1. Lire le corps de la requête au format brut non modifié, sans l'analyser au préalable.
  2. Extraire la signature envoyée depuis l'en-tête.
  3. À l'aide du secret partagé, calculez la signature HMAC-SHA256 attendue à partir du texte brut.
  4. Comparez les deux signatures à l'aide d'une fonction constante dans le temps, sans jamais utiliser un simple opérateur d'égalité.
  5. N'analysez le corps au format JSON qu'après une vérification réussie.
  6. Inscrivez l'identifiant de l'événement de manière atomique dans la base de données, par exemple en utilisant une contrainte UNIQUE qui rejette automatiquement les doublons.
  7. Placez l'événement dans la file d'attente de traitement.
  8. Immédiatement avec 200 OK répondre.

L'ordre de l'étape 5 s'explique simplement : quiconque analyse du JSON avant d'en vérifier la signature traite des données potentiellement manipulées, même si le traitement lui-même semble inoffensif. Il faut d'abord valider, puis interpréter.

En cas d'erreur, une sémantique HTTP correcte est cruciale. 4xx-L'état signale à l'expéditeur « ce message est fondamentalement erroné, ne le répétez pas », par exemple en cas de signature incorrecte. 5xx-Statut signifie « quelque chose ne fonctionne pas de mon côté, veuillez réessayer plus tard », par exemple en cas de panne de base de données.

Conseil de pro : Consignez chaque signature rejetée avec un horodatage et l'adresse IP source. Une augmentation soudaine du nombre de vérifications de signatures échouées est souvent le premier signe d'une configuration incorrecte du secret après une rotation, et non d'une attaque.

À quoi servent précisément les webhooks de suivi dans le domaine de l'expédition ?

Dans le cadre des opérations quotidiennes d'une boutique en ligne, les webhooks de suivi prennent en charge des tâches qui nécessitaient auparavant un suivi manuel. Dès qu'un service de livraison de colis signale un nouveau scan, le webhook met automatiquement à jour la page de suivi publique, envoie une notification aux clients ou déclenche une étape de traitement interne, comme l'approbation d'une facture après la livraison.

  • Les pages de suivi affichent l'état actuel sans délai dû aux vérifications manuelles.
  • Des notifications clients par e-mail ou SMS sont automatiquement envoyées pour chaque changement de statut pertinent.
  • Les systèmes internes tels que les systèmes de gestion de boutique, les ERP ou les CRM reçoivent le nouveau statut via une charge utile simplifiée, sans que personne n'ait à saisir manuellement de données.
  • Les demandes de renseignements via WISMO (« Où est ma commande ? ») diminuent considérablement car les clients peuvent vérifier eux-mêmes le statut de leur commande.
  • Les changements de statut ayant une incidence sur les formalités douanières peuvent être automatiquement transmis aux systèmes douaniers, sans procédure papier.

Important : Le webhook lui-même ne fournit généralement que des informations essentielles telles que le numéro de suivi et le statut actuel. Pour des informations plus détaillées, certains services de livraison de colis font également appel à une API de suivi distincte, interrogée au besoin. Ceux qui gèrent leur boutique via WooCommerce ou se connecte à un système comparable ; ces événements sont généralement intégrés directement au système de gestion des commandes existant.

Comment détecter les défaillances des webhooks avant les clients ?

Un système de webhook sans surveillance fonctionne à l'aveugle. Les indicateurs clés de performance (KPI) les plus importants sont le taux de réussite de la livraison (DSR), c'est-à-dire le pourcentage de livraisons traitées avec succès, le taux de nouvelle tentative, le niveau de qualité de la livraison (DLQ) et la latence de traitement entre la réception et la finalisation.

  • Un taux de réussite de livraison inférieur au niveau habituel indique un problème de vérification ou d'accessibilité de la signature.
  • Une profondeur DLQ croissante indique que les événements finissent par échouer, et ne sont pas seulement retardés.
  • Une alerte déclenchée après environ cinq défaillances consécutives sur un point de terminaison empêche qu'une défaillance ne passe inaperçue pendant des heures.
  • L'augmentation de la latence de traitement est souvent le premier signe d'une file d'attente surchargée.

Le niveau de rigueur du seuil d'alerte dépend du type d'événement : pour les événements liés aux paiements, une alerte est justifiée dès la première tentative infructueuse, tandis que pour les événements purement analytiques, une tolérance plus élevée est suffisante. Avant la mise en production, il est impératif d'inclure dans chaque liste de vérification des cas de test pour les envois répétés, les données mal formatées et le ralentissement artificiel du traitement.

Conseil de pro : Simulez une panne complète de votre terminal pendant cinq minutes et observez le comportement de la file d'attente de nouvelles tentatives de l'expéditeur. Cela vous permettra de vérifier, avant la mise en production, le bon fonctionnement de votre file d'attente de messages non distribués et de vos alertes.

Liste de vérification : Mise en service d’un point de terminaison webhook en dix étapes

  1. Définissez les événements pertinents dont votre système a réellement besoin.
  2. Réduisez au minimum la charge utile ; ne vous abonnez pas aux champs inutiles.
  3. Forcer l'utilisation du protocole HTTPS et générer un secret pour la vérification de la signature.
  4. Rendre disponible le corps brut de la requête sans analyse préalable.
  5. Vérifier la signature HMAC par comparaison avec une constante de temps.
  6. Inscrivez l'identifiant de l'événement de manière atomique dans la base de données afin d'éviter les doublons.
  7. Placer l'événement dans une file d'attente de traitement.
  8. Dans le délai fixé par l'expéditeur avec 200 OK répondre.
  9. Mettre en place une file d'attente pour les messages non distribuables et un système d'alerte pour les événements ayant échoué.
  10. Documentez vos propres attentes concernant les événements, les champs et le comportement de nouvelle tentative.
Groupe de marche Cible Outil typique
Sécurité garantir l'authenticité du message HMAC-SHA256, HTTPS
traitement Évitez les délais d'attente BullMQ, SQS, pg-boss
Opération Détecter les défaillances au plus tôt File d'attente des lettres non distribuées, alerte

Comment une plateforme de transport utilise concrètement les webhooks

Quiconque développe ses propres webhooks de suivi se rend vite compte de l'ampleur du travail opérationnel nécessaire à la vérification des signatures, à la gestion des files d'attente et au suivi douanier avant que la première mise à jour de statut ne parvienne au client. Paket International prend en charge précisément cette partie de la chaîne d'expédition et automatise les mises à jour de statut, les déclenchements douaniers et le suivi centralisé des envois. Ainsi, les e-commerçants n'ont plus besoin de créer leur propre récepteur de webhook pour chaque service de livraison.

La plateforme connecte les services de livraison de colis tels que DHL, UPS, FedEx, DPD et DB Schenker via une interface commune et centralise leurs opérations d'expédition. Tableau de bord de suiviL'intégration d'API et de plugins, par exemple pour WooCommerce ou des systèmes de commerce électronique similaires, permet d'intégrer directement ces événements aux processus existants, sans avoir à connecter chaque fournisseur individuellement. Cela réduit non seulement les efforts de développement, mais aussi les coûts. laut Selon Paket International, les coûts d'expédition sont considérablement réduits grâce à l'automatisation du dédouanement et de la création des documents, qui ne sont plus effectués manuellement. Toute personne confiant son expédition internationale, y compris le dédouanement, à Paket International bénéficie ainsi d'une réduction significative des coûts. Plateforme d'expédition qui souhaite céder peut trouver sous le tarifs d'expédition actuels le point de départ idéal pour votre propre volume d'expédition.

QFP

Qu'est-ce qu'un webhook, expliqué simplement ?

Un webhook est un message automatisé qu'un système envoie à un autre dès qu'un événement spécifique se produit, comme une modification du statut d'un envoi. Contrairement à une requête classique, le destinataire n'a pas besoin de vérifier constamment, mais est notifié automatiquement dès qu'une information nouvelle est disponible.

Comment programmer un webhook ?

Pour recevoir l'événement, vous configurez un point de terminaison HTTPS qui lit le corps brut de la requête, vérifie la signature associée par comparaison temporelle, puis traite l'événement au format JSON. Vous enregistrez ensuite atomiquement l'identifiant de l'événement dans une base de données, placez la tâche dans une file d'attente et répondez immédiatement. 200 OK, afin que l'expéditeur ne répète pas la livraison.

Qu'est-ce qui distingue un webhook d'une requête API classique ?

Avec une API traditionnelle, votre système demande activement de nouvelles données, souvent à intervalles réguliers, même si rien n'a changé. Un webhook inverse ce comportement : l'expéditeur n'envoie une requête que lorsqu'un événement s'est réellement produit, ce qui réduit la charge du serveur et la latence.

Comment se protéger contre les livraisons de webhook en double ?

Les envois en double sont courants pour la plupart des expéditeurs de webhooks, car de nombreux fournisseurs appliquent le principe « envoyer au moins une fois ». Une insertion atomique dans une base de données avec une contrainte UNIQUE sur l'ID d'événement ou un SET NX Dans Redis, cela empêche qu'un événement déjà traité soit exécuté à nouveau.

Paket International propose-t-il sa propre intégration de webhook ?

Paket International centralise les informations d'expédition de plusieurs transporteurs de colis sur un tableau de bord de suivi unique et les met à disposition des systèmes de vente en ligne via des API et des plugins. Pour plus de détails sur les options d'intégration technique et les conditions générales d'utilisation, veuillez consulter le [nom du site web/de la plateforme]. Page de la plateforme.

Suggestions

Demande d'analyse des exportations

Contactez-nous maintenant!

+49 (0) 341 -249 691 84

Les données du formulaire publié ne peuvent pas être lues.

Contactez-nous maintenant!

+49 (0) 341 -249 691 84