PeakLab
Retour au glossaire

Webhook

Mécanisme de notification HTTP permettant à une application d'envoyer des données en temps réel vers une URL définie lors d'événements spécifiques.

Mis à jour le 27 janvier 2026

Un webhook est un patron de communication événementielle qui permet à une application d'envoyer automatiquement des données vers une URL configurée lorsqu'un événement particulier se produit. Contrairement aux API traditionnelles où le client interroge régulièrement le serveur (polling), les webhooks inversent ce flux en poussant les informations instantanément vers le destinataire. Ce mécanisme de notification HTTP en temps réel est devenu un standard pour l'intégration moderne entre services et applications cloud.

Fondements techniques

  • Architecture push-based qui élimine le besoin de polling répétitif et réduit la latence de notification
  • Requêtes HTTP POST envoyées vers une URL de callback prédéfinie avec un payload JSON ou XML
  • Mécanisme de signature cryptographique (HMAC) pour authentifier la source et garantir l'intégrité des données
  • Gestion des réessais automatiques avec backoff exponentiel en cas d'échec de livraison

Avantages stratégiques

  • Réduction drastique de la charge serveur en éliminant les requêtes de polling inutiles
  • Notifications en temps réel permettant des workflows automatisés instantanés
  • Scalabilité améliorée grâce à une architecture événementielle découplée
  • Économie de ressources et de bande passante avec des communications uniquement sur événement
  • Intégrations simplifiées entre systèmes hétérogènes sans logique de synchronisation complexe

Exemple concret d'implémentation

Voici un exemple de serveur Express.js recevant et validant un webhook de paiement Stripe :

webhook-handler.ts
import express from 'express';
import crypto from 'crypto';

const app = express();
const WEBHOOK_SECRET = process.env.STRIPE_WEBHOOK_SECRET!;

// Middleware pour recevoir le body brut (nécessaire pour la signature)
app.post('/webhooks/stripe',
  express.raw({ type: 'application/json' }),
  (req, res) => {
    const signature = req.headers['stripe-signature'] as string;
    
    try {
      // Vérification de la signature HMAC
      const expectedSignature = crypto
        .createHmac('sha256', WEBHOOK_SECRET)
        .update(req.body)
        .digest('hex');
      
      if (signature !== expectedSignature) {
        return res.status(401).send('Invalid signature');
      }
      
      const event = JSON.parse(req.body.toString());
      
      // Traitement selon le type d'événement
      switch (event.type) {
        case 'payment_intent.succeeded':
          await handlePaymentSuccess(event.data.object);
          break;
        case 'payment_intent.failed':
          await handlePaymentFailure(event.data.object);
          break;
        default:
          console.log(`Unhandled event: ${event.type}`);
      }
      
      // Réponse rapide pour éviter les timeouts
      res.status(200).json({ received: true });
      
    } catch (error) {
      console.error('Webhook error:', error);
      res.status(400).send('Webhook processing failed');
    }
  }
);

async function handlePaymentSuccess(paymentIntent: any) {
  // Logique métier : mise à jour commande, envoi email, etc.
  console.log('Payment succeeded:', paymentIntent.id);
}

async function handlePaymentFailure(paymentIntent: any) {
  // Logique métier : notification client, retry logic
  console.log('Payment failed:', paymentIntent.id);
}

Mise en œuvre recommandée

  1. Définir une URL publique HTTPS dédiée aux webhooks avec un endpoint sécurisé
  2. Implémenter la validation de signature cryptographique pour authentifier chaque requête
  3. Traiter les webhooks de manière asynchrone avec une file de messages pour éviter les timeouts
  4. Répondre rapidement (< 5 secondes) avec un code 200 avant tout traitement métier lourd
  5. Implémenter l'idempotence pour gérer les doublons potentiels lors des réessais automatiques
  6. Logger tous les événements reçus pour le debugging et l'audit
  7. Configurer un système de monitoring pour détecter les échecs de livraison

Conseil de production

Utilisez un système de queue (Redis, RabbitMQ, AWS SQS) pour traiter les webhooks de manière asynchrone. Répondez immédiatement avec un 200 OK et traitez le payload en arrière-plan. Cela évite les timeouts du fournisseur qui pourrait considérer votre endpoint comme défaillant et arrêter les livraisons. Implémentez également un système de déduplication basé sur l'ID d'événement pour gérer l'idempotence.

Outils et services associés

  • Ngrok ou LocalTunnel pour exposer localement vos endpoints pendant le développement
  • Webhook.site pour tester et inspecter les payloads sans code
  • Svix pour gérer l'infrastructure complète d'envoi de webhooks (retry, logging, portail client)
  • Hookdeck pour router, transformer et debugger les webhooks entrants
  • AWS EventBridge ou Google Cloud Pub/Sub pour architectures événementielles distribuées

Les webhooks constituent le fondement des architectures événementielles modernes et des intégrations SaaS. Leur adoption permet de réduire significativement les coûts d'infrastructure tout en améliorant la réactivité des systèmes. Dans un contexte d'automatisation croissante et d'écosystèmes applicatifs interconnectés, maîtriser les webhooks est devenu une compétence essentielle pour construire des applications scalables et réactives qui répondent aux attentes d'instantanéité des utilisateurs.

L'argentestdéjàsurlatable.

En 1 heure, découvrez exactement combien vous perdez et comment le récupérer.

Agence de développement web, automatisation & IA

contact@peaklab.fr
Newsletter

Recevez nos conseils tech et business directement dans votre boîte mail.

Suivez-nous
Crédit d'Impôt Innovation - PeakLab agréé CII