🪝
developpement

Webhook

Mecanisme de notification HTTP automatique declenche par un evenement.

Definition

Un webhook est un mecanisme de notification HTTP ou un serveur envoie automatiquement une requete POST a une URL que vous avez configuree, quand un evenement specifique se produit. C'est le modele "push" par opposition au "pull" (polling) des API classiques.

Au lieu de demander regulierement "y a-t-il du nouveau ?", le webhook vous previent immediatement quand quelque chose se passe.

Comment ca fonctionne

  1. Vous configurez une URL de webhook dans un service (Stripe, GitHub, Slack)
  2. Un evenement se produit (paiement recu, push Git, message envoye)
  3. Le service envoie un POST HTTP a votre URL avec les details de l'evenement
  4. Votre serveur traite l'evenement et retourne un 200 OK

Exemple : webhook Stripe

// endpoint /api/webhooks/stripe
app.post('/api/webhooks/stripe', express.raw({ type: 'application/json' }), (req, res) => {
  const sig = req.headers['stripe-signature'];
  const event = stripe.webhooks.constructEvent(req.body, sig, webhookSecret);

  switch (event.type) {
    case 'payment_intent.succeeded':
      await confirmOrder(event.data.object);
      break;
    case 'customer.subscription.deleted':
      await cancelSubscription(event.data.object);
      break;
  }

  res.status(200).json({ received: true });
});

Bonnes pratiques essentielles

1. Verifier la signature

Chaque service signe ses webhooks avec un secret. Verifiez TOUJOURS la signature pour eviter les requetes falsifiees.

2. Repondre rapidement (< 5s)

Retournez 200 immediatement, puis traitez l'evenement en arriere-plan (queue, job async). Si votre endpoint met trop de temps, le service retentera.

3. Idempotence

Les webhooks peuvent etre envoyes plusieurs fois (retries). Votre code doit gerer les doublons :

// Verifier si l'evenement a deja ete traite
const exists = await db.query('SELECT 1 FROM processed_events WHERE event_id = $1', [event.id]);
if (exists) return res.status(200).send('Already processed');

4. Logging et monitoring

Loguez chaque webhook recu pour le debugging. Configurez des alertes si le taux d'erreur augmente.

Webhook vs Polling vs WebSocket

Webhook Polling WebSocket
Direction Serveur → Votre serveur Votre serveur → Serveur Bidirectionnel
Temps reel Quasi instantane Depends de l'intervalle Instantane
Complexite Faible Faible Elevee
Ressources Efficace Gaspillage (requetes vides) Connexion persistante
Cas d'usage Events ponctuels Legacy, fallback Chat, jeux, live

Besoin d'aide technique ?

Decrivez votre projet pour des conseils personnalises par nos experts.

Recevoir des conseils

Questions frequentes

Comment tester les webhooks en local ?
Utilisez un tunnel comme ngrok (ngrok http 3000) ou Cloudflare Tunnel pour exposer votre serveur local. Stripe CLI (stripe listen) est ideal pour les webhooks Stripe.
Que faire si un webhook echoue ?
La plupart des services retentent automatiquement (exponential backoff). Implementez un dead letter queue pour les webhooks echoues, et un dashboard pour les monitorer et les rejouer.
Faut-il securiser l'endpoint webhook ?
Oui : verifiez la signature (HMAC), limitez les IP sources si possible, utilisez HTTPS, et ne faites confiance qu'aux evenements verifies. Un endpoint webhook non securise est une porte d'entree pour les attaques.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.