WordPress: vom Einstieg bis zur Entwicklung · Modul 6: REST API und Headless

Lektion 5 von 5Übung 14 Min.

Webhooks und Automatisierung

Lernziele
  • Webhooks von Abfragen im Zeittakt unterscheiden
  • in WordPress eigene Webhooks auslösen und empfangen
  • eingehende Aufrufe absichern
  • Automatisierungen verlässlich und nachvollziehbar betreiben

Eine Schnittstelle abzufragen ist die eine Richtung; von sich aus Bescheid zu geben die andere. Genau das tun Webhooks: Sobald auf der Website etwas passiert – ein Beitrag wird veröffentlicht, ein Formular abgeschickt, eine Bestellung bezahlt –, schickt WordPress eine Nachricht an eine andere Adresse. Damit lassen sich Abläufe verknüpfen, die sonst jemand von Hand erledigen müsste. Diese Lektion zeigt, wie Sie Webhooks senden und empfangen, wie Sie sie absichern und wie Automatisierungen aussehen, die auch nach Monaten noch zuverlässig laufen.

1. Webhook oder Abfrage?

Definition 5.1
Webhook
Ein HTTP-Aufruf, den ein System bei einem Ereignis von sich aus an eine hinterlegte Adresse sendet, meist mit den Daten des Ereignisses im Rumpf. Der Gegensatz ist das Abfragen im Zeittakt, bei dem ein System regelmäßig nachfragt, ob es etwas Neues gibt.

Webhooks sind sparsam und schnell: keine Anfragen ins Leere, Reaktion in Sekunden. Sie haben aber eine Schwäche – geht ein Aufruf verloren, weil der Empfänger gerade nicht erreichbar war, ist das Ereignis weg. Verlässliche Abläufe brauchen deshalb Wiederholungen und ein Protokoll. Abfragen im Zeittakt sind umgekehrt robuster, aber träge und verschwenderisch. Häufig ist die Kombination am besten: Webhook für die schnelle Reaktion, ein nächtlicher Abgleich als Netz darunter.

AblaufWas ein Webhook auslöst
Schritt 1 von 5: Anfrage wird abgeschickt. Jeder Schritt kann scheitern – ein guter Ablauf protokolliert und wiederholt automatisch.

2. Webhooks aus WordPress senden

Technisch ist ein Webhook nur eine POST-Anfrage aus einem Hook heraus. Wichtig ist, dass der Versand den Seitenaufruf nicht ausbremst und dass Fehler nicht untergehen – deshalb gehört er in eine Hintergrundaufgabe, wie sie Modul 4 beschreibt.

includes/Webhook.php
1<?php
2add_action( 'transition_post_status', function ( $neu, $alt, $beitrag ) {
3 if ( 'publish' !== $neu || 'publish' === $alt || 'post' !== $beitrag->post_type ) {
4 return; // nur echte Neuveröffentlichungen
5 }
6 wp_schedule_single_event( time() + 5, 'radwerk_webhook_senden', [ $beitrag->ID ] );
7}, 10, 3 );
8
9add_action( 'radwerk_webhook_senden', function ( int $id ) {
10 $rumpf = wp_json_encode( [
11 'id' => $id,
12 'titel' => get_the_title( $id ),
13 'link' => get_permalink( $id ),
14 'zeit' => get_post_time( 'c', true, $id ),
15 ] );
16
17 $antwort = wp_remote_post( WEBHOOK_URL, [
18 'timeout' => 10,
19 'headers' => [
20 'Content-Type' => 'application/json',
21 'X-Radwerk-Signatur' => hash_hmac( 'sha256', $rumpf, WEBHOOK_GEHEIMNIS ),
22 ],
23 'body' => $rumpf,
24 ] );
25
26 if ( is_wp_error( $antwort ) || wp_remote_retrieve_response_code( $antwort ) >= 300 ) {
27 error_log( 'Webhook fehlgeschlagen für Beitrag ' . $id );
28 }
29} );

Die Signatur ist entscheidend: Der Empfänger kann damit prüfen, dass die Nachricht wirklich von Ihrer Website stammt und unterwegs nicht verändert wurde. Sie entsteht aus dem Rumpf und einem gemeinsamen Geheimnis, das beide Seiten kennen – und das nicht im Code, sondern in einer Konstante oder Umgebungsvariable liegt.

3. Webhooks empfangen

In der anderen Richtung nimmt WordPress Nachrichten entgegen, etwa von einem Zahlungsdienst oder einem Formularanbieter. Dafür entsteht ein eigener Endpunkt, wie in Lektion 3 gezeigt – mit einer Besonderheit: Der Aufrufer ist kein angemeldeter Benutzer. Die Rechteprüfung muss deshalb die Signatur prüfen, nicht eine Rolle. Und die Antwort sollte schnell kommen: erst bestätigen, dann in einer Hintergrundaufgabe verarbeiten. Viele Dienste wiederholen sonst den Aufruf, weil sie ihn für gescheitert halten.

Klick-GrafikEinen eingehenden Webhook sicher verarbeiten
EingangSignatur prüfenDoppelte erkennenSofort bestätigen
Schritt 1/4 · Eingang: Der Dienst ruft eine eigene Route auf, etwa /wp-json/radwerk/v1/zahlung.
Signatur prüfen, Doppelte abfangen, sofort bestätigen, im Hintergrund arbeiten – und alles protokollieren. Ein Webhook ohne Protokoll ist im Fehlerfall nicht zu retten.

4. Automatisierung mit Diensten

Für viele Abläufe braucht es keinen eigenen Code. Dienste wie n8n, Make oder Zapier verbinden WordPress mit Hunderten anderer Systeme: Sie empfangen Webhooks, rufen die REST API auf und erledigen Schritte dazwischen. n8n lässt sich zudem selbst betreiben, was bei personenbezogenen Daten ein Vorteil ist. Sinnvolle Abläufe sind etwa: Formularanfragen ins CRM und ins Team-Chat, neue Beiträge in soziale Netzwerke, bezahlte Bestellungen in die Buchhaltung, wöchentliche Berichte aus Website-Daten per Mail.

Tab. 5.1Vier Regeln für verlässliche Automatisierung
RegelWarum
Jeder Schritt protokolliertOhne Protokoll ist nicht nachvollziehbar, was wann geschah
Fehler melden, nicht schluckenEin stillschweigend gescheiterter Ablauf fällt erst Wochen später auf
Mehrfachausführung unschädlich machenAufrufe kommen doppelt – das darf keine zwei Rechnungen erzeugen
Zugänge mit minimalen RechtenEin Automatisierungskonto sollte nie Administrator sein

5. Ein Beispiel

Ein Café nimmt Vorbestellungen über ein Formular entgegen. Beim Absenden geht ein Webhook an einen selbst betriebenen n8n-Dienst. Der legt die Bestellung im Kassensystem an, schickt der Kundschaft eine Bestätigung mit Abholzeit und stellt die Bestellung als Nachricht in den Team-Chat der Küche. Schlägt ein Schritt fehl, wiederholt n8n ihn dreimal und meldet sich danach per Mail beim Inhaber. Zusätzlich gleicht eine nächtliche Aufgabe alle Bestellungen des Tages mit dem Kassensystem ab – falls doch einmal ein Webhook verloren geht. Seit der Einführung spart das Team täglich rund eine Stunde Abtipparbeit, und seit dem nächtlichen Abgleich gab es keine verlorene Bestellung mehr.

6. Häufige Fragen

Wie teste ich einen Webhook? Mit einem Dienst wie webhook.site oder einem lokalen Tunnel, der eine öffentlich erreichbare Adresse für den eigenen Rechner bereitstellt. So sehen Sie, was genau gesendet wird, bevor der Empfänger steht.

Was ist mit dem Datenschutz? Sobald personenbezogene Daten an einen Dienst gehen, braucht es eine Rechtsgrundlage, einen Vertrag zur Auftragsverarbeitung und einen Eintrag in der Datenschutzerklärung. Selbst betriebene Werkzeuge vermeiden diese Fragen weitgehend.

Wie verhindere ich Endlosschleifen? Wenn ein Ablauf zurück in WordPress schreibt und der Schreibvorgang wieder einen Webhook auslöst, entsteht eine Schleife. Entweder das Ereignis genau eingrenzen, wie oben bei transition_post_status, oder Änderungen aus der Automatisierung markieren und beim Senden überspringen.

7. Übung zum Selbermachen

Erzeugen Sie auf webhook.site eine Testadresse. Schreiben Sie ein kleines Must-Use-Plugin, das beim Veröffentlichen eines Beitrags Titel und Link als JSON dorthin sendet, und beobachten Sie den Eingang. Ergänzen Sie danach eine Signatur im Kopf und prüfen Sie, dass sie ankommt. Überlegen Sie zum Schluss für eine Website, die Sie betreuen, welcher wiederkehrende Handgriff sich als Ablauf abbilden ließe – und was passieren müsste, wenn ein Schritt darin scheitert.

Quellen und weiterführende Literatur
  1. [1]WordPress.org (2026): Code Reference – wp_remote_post(), transition_post_status.
  2. [2]WordPress.org (2026): REST API Handbook – Adding Custom Endpoints.
  3. [3]n8n (2026): Webhook Node – Dokumentation. docs.n8n.io.

Stand: September 2026, WordPress 7.1, PHP 8.3. Kursmaterial der Klarwerk Akademie. WordPress entwickelt sich schnell – maßgeblich ist die aktuelle Dokumentation auf developer.wordpress.org.

Abschlussquiz

Drei Fragen – dann ist die Lektion geschafft.

Frage 1 von 3

Was ist ein Webhook?