Webhooks Shopify : vérifier la signature et enregistrer chaque réception
À la réception d’un webhook Shopify en HTTPS, vérifiez sa signature sur le corps brut avant traitement et enregistrez son identifiant de livraison. Une URL difficile à deviner ne suffit pas à prouver l’origine du message.
Que prouve la signature ?
La documentation Shopify sur la vérification des webhooks décrit la signature HMAC et son calcul à partir du corps brut. Une transformation du JSON avant vérification peut modifier les octets et invalider le contrôle.
Utilisez les bibliothèques officielles ou une implémentation revue. Le secret reste côté serveur, hors des journaux et du navigateur. Une signature valide ne remplace pas la validation métier de l’événement reçu.
Qu’enregistrer avant le traitement ?
Conservez l’identifiant de livraison, le sujet, la boutique attendue, la date de réception et l’état du traitement. Prévoyez la détection d’une nouvelle livraison du même message. Ne confondez pas identifiant d’événement et identifiant de commande.
| Étape | Question de recette |
|---|---|
| Réception | La boutique et le sujet sont-ils attendus ? |
| Signature | Le corps brut est-il vérifié avant utilisation ? |
| Enregistrement | La réception peut-elle être retrouvée ? |
| Doublon | Une nouvelle livraison répète-t-elle l’action ? |
| Traitement | Le résultat et l’erreur éventuelle sont-ils tracés ? |
Comment réagir à un traitement long ?
Séparez réception et travail métier lorsque nécessaire : enregistrez de façon fiable, puis traitez avec une file et des statuts. L’accusé de réception ne doit pas être envoyé avant que le système ait réellement conservé ce qu’il promet de traiter.
Le guide sur les commandes en double dans une intégration traite les effets métier. Une vérification de signature correcte n’empêche pas une seconde création de commande si l’idempotence manque.
Comment tester la reprise ?
Préparez un message valide, une signature invalide, une livraison répétée et une erreur du système destinataire. Vérifiez que seul le bon message est accepté et que la reprise ne duplique pas l’action. Testez aussi le comportement lorsque des événements arrivent dans un ordre différent.
Gardez les réponses, statuts et identifiants utiles dans une preuve sans secret. Une mention « webhook reçu » ne prouve pas que le stock, la facture ou la commande a été correctement mis à jour dans l’outil métier.
Sources
Documentation consultée le 24 octobre 2026.
Questions fréquentes
Peut-on vérifier après avoir reformatté le JSON ?
La vérification documentée s’appuie sur le corps brut reçu. Conservez ces octets avant toute transformation.
Faut-il journaliser le secret pour diagnostiquer ?
Non. Conservez le résultat du contrôle et les identifiants nécessaires, sans exposer le secret.
Une signature valide garantit-elle un traitement unique ?
Non. La détection des doublons et les règles métier doivent être prévues séparément.
Que faire d’un événement inconnu ?
Refusez ou isolez les sujets non prévus selon votre conception, plutôt que de les traiter comme une commande par défaut.
Comment prouver la fin du traitement ?
Rapprochez la livraison reçue, l’action métier effectuée et le statut final, avec une erreur explicite si le traitement reste en attente.