Zuletzt aktualisiert am 04.12.2025 5 Minuten Lesezeit

Webhook

Webhook ist ein Mechanismus, bei dem eine Anwendung automatisch eine andere Anwendung ueber ein Ereignis benachrichtigt. Statt regelmaessig nachzufragen, ob es Neuigkeiten gibt (Polling), sendet das Quellsystem aktiv eine HTTP-Anfrage an eine vordefinierte URL. Diese Art der Kommunikation wird auch als HTTP Callback oder Reverse API bezeichnet und bildet die Grundlage fuer moderne Event-Driven Architectures.

Wie funktionieren Webhooks?

Die Funktionsweise von Webhooks laesst sich in vier Schritte unterteilen. Im Kern geht es darum, dass ein Quellsystem bei bestimmten Ereignissen automatisch Daten an ein Zielsystem uebertraegt.

1. Registrierung

Zuerst registrierst du beim Anbieter (dem Quellsystem) eine URL - den sogenannten Webhook-Endpunkt. Dieser Endpunkt ist ein HTTP-Server auf deiner Seite, der eingehende Anfragen entgegennimmt. Zusaetzlich legst du fest, bei welchen Ereignissen der Webhook ausgeloest werden soll. Bei GitHub koenntest du beispielsweise festlegen, dass du bei jedem Push-Event benachrichtigt werden moechtest.

2. Ereignis tritt ein

Sobald das konfigurierte Ereignis im Quellsystem eintritt - etwa eine erfolgreiche Zahlung bei einem Payment-Provider oder ein neuer Commit in einem Repository - erkennt das System dies automatisch und bereitet die Benachrichtigung vor.

3. HTTP-POST-Request

Das Quellsystem sendet eine HTTP-POST-Anfrage an deine registrierte URL. Die Ereignisdaten werden als Payload im Request-Body uebertragen, typischerweise im JSON-Format. Der Request enthaelt auch Header-Informationen wie Content-Type, Zeitstempel und oft eine kryptografische Signatur zur Verifizierung.

4. Verarbeitung und Bestaetigung

Dein Webhook-Endpunkt empfaengt die Anfrage, verarbeitet die Daten und antwortet mit einem HTTP-Statuscode. Ein 200 OK signalisiert dem Quellsystem, dass die Nachricht erfolgreich empfangen wurde. Die meisten Webhook-Systeme erwarten diese Bestaetigung innerhalb von 5 Sekunden - laengere Verarbeitungen solltest du daher asynchron ausfuehren.

// Beispiel: Einfacher Webhook-Endpunkt mit Express.js
const express = require('express');
const app = express();

app.use(express.json());

app.post('/webhook', (req, res) => {
  const event = req.body;
  
  console.log('Webhook empfangen:', event.type);
  
  // Ereignis verarbeiten
  switch (event.type) {
    case 'payment.completed':
      // Bestellung als bezahlt markieren
      break;
    case 'user.created':
      // Willkommens-E-Mail senden
      break;
  }
  
  // Schnelle Bestaetigung senden
  res.status(200).json({ received: true });
});

app.listen(3000);

Webhook vs. Polling vs. API

Um die Vorteile von Webhooks zu verstehen, lohnt sich ein Vergleich mit alternativen Ansaetzen zur Datenuebertragung zwischen Systemen. Jeder Ansatz hat seine Berechtigung - die Wahl haengt vom konkreten Anwendungsfall ab.

Aspekt Webhook (Push) Polling (Pull) Klassische API
Kommunikationsrichtung Server sendet aktiv Client fragt regelmaessig Client fragt bei Bedarf
Latenz Echtzeit (Sekunden) Abhaengig vom Intervall Abhaengig vom Aufruf
Ressourcenverbrauch Minimal (nur bei Events) Hoch (viele leere Anfragen) Variabel
Komplexitaet Client Muss HTTP-Server bereitstellen Einfache HTTP-Requests Einfache HTTP-Requests
Zuverlaessigkeit Erfordert Retry-Logik Sehr zuverlaessig Sehr zuverlaessig
Skalierbarkeit Sehr gut Schlecht bei vielen Clients Gut

Webhooks eignen sich besonders, wenn Ereignisse selten auftreten, aber schnell verarbeitet werden muessen. Polling ist sinnvoll, wenn du keinen eigenen Server betreiben kannst oder die Datenquelle keine Webhooks unterstuetzt. Klassische API-Aufrufe sind die beste Wahl, wenn du Daten gezielt und auf Anfrage abrufen moechtest - etwa um den aktuellen Status einer Bestellung anzuzeigen.

Typische Anwendungsfaelle

Webhooks sind aus modernen Softwarearchitekturen nicht mehr wegzudenken. Sie verbinden unterschiedliche Systeme und ermoeglichen automatisierte Workflows ohne manuellen Eingriff.

CI/CD-Pipelines

Versionskontrollsysteme wie GitHub, GitLab oder Bitbucket nutzen Webhooks, um Build-Server ueber neue Commits zu informieren. Sobald du Code pushst, triggert ein Webhook automatisch die CI/CD-Pipeline - Tests laufen, Code wird kompiliert und bei Erfolg automatisch deployed.

Payment-Services

Zahlungsdienstleister wie Stripe, PayPal oder Klarna senden Webhooks bei Zahlungsereignissen. Dein Shop-System erfaehrt sofort, wenn eine Zahlung erfolgreich war, fehlgeschlagen ist oder zurueckgebucht wurde - ohne dass du staendig den Status abfragen musst.

Chat-Bots und Messaging

Plattformen wie Slack, Discord oder Telegram nutzen Webhooks fuer Bot-Integrationen. Wenn jemand eine Nachricht an deinen Bot sendet, erhaelt dein Server einen Webhook mit dem Nachrichteninhalt und kann entsprechend reagieren.

Monitoring und Alerting

Monitoring-Tools wie Grafana, Datadog oder PagerDuty senden Webhooks, wenn bestimmte Schwellwerte ueberschritten werden. So kannst du bei einem Serverausfall automatisch Benachrichtigungen an Slack schicken oder Incident-Tickets erstellen.

E-Commerce und CRM

Online-Shops nutzen Webhooks, um Bestellungen an Lagersysteme weiterzuleiten, Versanddienstleister zu benachrichtigen oder CRM-Systeme mit Kundendaten zu synchronisieren. Jede neue Bestellung triggert eine Kette von automatisierten Aktionen.

Sicherheit bei Webhooks

Da Webhook-Endpunkte oeffentlich erreichbar sein muessen, sind sie ein potenzielles Angriffsziel. Ein Angreifer koennte gefaelschte Requests senden, um dein System zu manipulieren. Deshalb sind mehrere Sicherheitsmassnahmen erforderlich.

HMAC-Signaturpruefung

Die wichtigste Sicherheitsmassnahme ist die Signaturverifizierung. Der Webhook-Anbieter signiert jeden Request mit einem geheimen Schluessel (Shared Secret) unter Verwendung von HMAC-SHA256. Du berechnest die Signatur auf deiner Seite erneut und vergleichst sie mit der im Header uebermittelten Signatur. Stimmen beide ueberein, ist der Request authentisch.

const crypto = require('crypto');

function verifyWebhookSignature(payload, signature, secret) {
  const expectedSignature = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  
  // Timing-safe Vergleich gegen Timing-Attacken
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expectedSignature)
  );
}

// Verwendung im Express-Handler
app.post('/webhook', (req, res) => {
  const signature = req.headers['x-webhook-signature'];
  const isValid = verifyWebhookSignature(
    JSON.stringify(req.body),
    signature,
    process.env.WEBHOOK_SECRET
  );
  
  if (!isValid) {
    return res.status(401).json({ error: 'Invalid signature' });
  }
  
  // Webhook verarbeiten...
});

Weitere Sicherheitsmassnahmen

Neben der Signaturpruefung gibt es weitere Best Practices, die du beachten solltest:

  • HTTPS verwenden: Webhooks sollten ausschliesslich ueber TLS-verschluesselte Verbindungen empfangen werden
  • Zeitstempel validieren: Pruefe, ob der Request nicht aelter als wenige Minuten ist (Replay-Schutz)
  • IP-Whitelist: Manche Anbieter veroeffentlichen ihre IP-Bereiche, die du per Firewall erlauben kannst
  • Idempotenz: Stelle sicher, dass mehrfache Zustellung desselben Events keine Probleme verursacht
  • Rate Limiting: Begrenze die Anzahl eingehender Requests, um DoS-Angriffe abzuwehren

Vor- und Nachteile von Webhooks

Webhooks bieten viele Vorteile, bringen aber auch Herausforderungen mit sich. Die Entscheidung fuer oder gegen Webhooks haengt von deinen Anforderungen und deiner Infrastruktur ab.

Vorteile

  • Echtzeit-Benachrichtigungen: Ereignisse werden sofort uebermittelt, ohne Verzoegerung
  • Ressourceneffizienz: Keine verschwendeten Anfragen bei ausbleibendem Event
  • Einfache Integration: Standardisiertes HTTP-Protokoll, keine speziellen Bibliotheken noetig
  • Lose Kopplung: Sender und Empfaenger sind unabhaengig voneinander
  • Skalierbarkeit: Gut geeignet fuer Event-Driven Architectures und Microservices

Nachteile

  • Erreichbarkeit erforderlich: Dein Endpunkt muss oeffentlich erreichbar und hochverfuegbar sein
  • Fehlerbehandlung komplex: Bei Ausfaellen musst du Retry-Logik und Dead-Letter-Queues implementieren
  • Debugging schwieriger: Eingehende Requests sind schwerer nachzuvollziehen als ausgehende API-Calls
  • Sicherheitsrisiko: Oeffentliche Endpunkte erfordern sorgfaeltige Absicherung
  • Keine Garantie: "At-least-once"-Semantik bedeutet, dass Events mehrfach ankommen koennen

Webhooks in der IT-Praxis

Webhooks begegnen dir in nahezu jeder modernen Entwicklungsumgebung. Als Fachinformatiker fuer Anwendungsentwicklung wirst du Webhooks implementieren, wenn du Integrationen zwischen verschiedenen Services baust - etwa um Bestellungen aus einem Shop-System an ein Lagerverwaltungssystem weiterzuleiten.

Auch als Fachinformatiker fuer Systemintegration sind Webhooks relevant: Du konfigurierst sie in CI/CD-Systemen, richtest Monitoring-Alerts ein oder verbindest verschiedene Cloud-Services miteinander. Das Verstaendnis von HTTP, JSON und grundlegenden Sicherheitskonzepten ist dabei essenziell.

Quellen und weiterfuehrende Links