# Webhook

> Requête HTTP envoyée automatiquement par un service dès qu'un événement précis se produit chez lui, permettant à une application tierce d'être notifiée sans avoir à interroger sans cesse ce service.

- Auteur : Clément Hadrot
- Publié le : 2026-09-25
- Mis à jour le : 2026-09-25
- URL : https://wpmoderne.dev.wordpress-developpement.fr/lexique/webhook/

Pour savoir si un paiement vient d'être validé, deux stratégies existent : interroger le service de paiement toutes les minutes en espérant tomber au bon moment, ou lui demander de prévenir directement dès que l'événement survient. Le webhook, c'est cette deuxième approche : le service tiers envoie de lui-même une requête HTTP (généralement `POST`) vers une URL définie à l'avance, dès qu'un événement précis se produit chez lui.

## Webhooks côté WordPress

WooCommerce expose un système de webhooks natif (réglages « WooCommerce > Réglages > Avancé > Webhooks ») qui peut notifier une URL externe à chaque commande créée, payée ou remboursée. Dans l'autre sens, un thème ou une extension crée une route dédiée pour recevoir les webhooks d'un service externe (Stripe, un CRM) via `register_rest_route()` ou une simple action liée à `init` qui écoute une URL spécifique.

## Exemple

```
POST /wp-json/mon-app/v1/webhook-stripe HTTP/1.1
Content-Type: application/json

{"type":"payment_intent.succeeded","data":{...}}
```

## Pièges fréquents

- Ne pas vérifier la signature du webhook (souvent fournie dans un en-tête dédié) : sans cette vérification, n'importe qui connaissant l'URL peut envoyer de fausses notifications.
- Traiter un webhook de façon trop lente : la plupart des services annulent l'appel après quelques secondes sans réponse et considèrent l'envoi en échec, provoquant des doublons de tentative.
- Confondre webhook et API classique : un webhook est initié par le service distant, pas par le site qui le reçoit, ce qui inverse le sens habituel de l'appel.
