Auftragsverarbeitung bei WordPress: Hoster, Plugins und externe Dienste prüfen
Welche Dienste erhalten über Ihre WordPress-Website personenbezogene Daten? So erfassen Sie ausgehende Verbindungen technisch, ordnen Hoster, Plugins und Einbettungen ein und prüfen die Verträge nach Art. 28 DSGVO.
Mit KI erstellt – redaktionelle Prüfung ausstehend
WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Mehr dazu

Eine WordPress-Website verarbeitet personenbezogene Daten selten allein. Der Hoster speichert Server-Logs und die Datenbank, ein Backup-Plugin schiebt Kopien in eine Cloud, ein Spamfilter prüft Kommentare auf fremden Servern, und eingebettete Videos laden Inhalte von Dritten. Für jeden dieser Dienste müssen Sie klären, in welcher Rolle er Daten erhält und ob Sie dafür einen Vertrag zur Auftragsverarbeitung nach Art. 28 DSGVO brauchen. Diese Anleitung zeigt ein technisches Vorgehen: Sie ermitteln im ersten Schritt, welche Dienste Ihre Website tatsächlich anspricht, und ordnen jeden Dienst dann mit einer festen Prüfliste ein. Die Bestandsaufnahme wurde im Labor mit einer frischen WordPress-Installation durchgeführt. Sie ersetzt keine Rechtsberatung, liefert aber die Fakten, die Ihr Datenschutzbeauftragter oder Anwalt braucht.
Voraussetzungen
- WordPress: getestet mit WordPress 7.1.2, das Vorgehen gilt für alle aktuellen Versionen.
- PHP: mindestens 7.4.
- Zugriff: Backend-Konto mit der Rolle Administrator, für Schritt 2 zusätzlich FTP oder SSH, um eine Datei in
wp-content/mu-pluginsabzulegen. - Verträge und Kundenkonten: Zugang zu den Kundenbereichen von Hoster, E-Mail-Anbieter und Cloud-Speicher, dort liegen die Verträge zur Auftragsverarbeitung meist zum Download.
- Backup: eine aktuelle Sicherung, bevor Sie Plugins oder Einstellungen ändern.
- Zuständigkeit: Klären Sie, wer im Unternehmen für den Datenschutz zuständig ist. Rechtliche Bewertungen im Einzelfall gehören zu dieser Person oder zu einem Anwalt.
Schritt 1: Rollen verstehen
Die DSGVO unterscheidet drei Rollen, die für eine Website wichtig sind. Welche Rolle ein Dienst hat, entscheidet darüber, welcher Vertrag nötig ist.
| Rolle | Rechtsgrundlage | Typische Beispiele bei WordPress | Was Sie brauchen |
|---|---|---|---|
| Auftragsverarbeiter | Art. 4 Nr. 8, Art. 28 DSGVO | Webhoster, externer Backup-Speicher, SMTP-Dienst für den Mailversand, Wartungsdienstleister mit Zugang zum Backend | Vertrag zur Auftragsverarbeitung |
| Gemeinsam Verantwortliche | Art. 26 DSGVO | Fälle, in denen Sie und ein Anbieter gemeinsam über Zwecke und Mittel entscheiden | Vereinbarung nach Art. 26 |
| Eigenständig Verantwortliche | Art. 4 Nr. 7 DSGVO | Dienste, die Daten für eigene Zwecke nutzen | Rechtsgrundlage für die Weitergabe, Information in der Datenschutzerklärung |
Art. 4 Nr. 8 DSGVO beschreibt einen Auftragsverarbeiter als Stelle, die personenbezogene Daten im Auftrag des Verantwortlichen verarbeitet. Der Hoster, auf dessen Server Ihre Datenbank mit Kommentaren, Bestellungen und Benutzerkonten liegt, ist das typische Beispiel. Bei eingebetteten Inhalten von Plattformen wie YouTube ist die Einordnung schwieriger. Solche Fälle sollten Sie nicht selbst entscheiden, sondern mit Ihrem Datenschutzbeauftragten klären.
Verifizieren: Sie können für Ihren Hoster begründen, warum er Auftragsverarbeiter ist, und haben eine Ansprechperson für unklare Fälle.
Schritt 2: Externe Verbindungen der Website erfassen
Die Liste der Plugins verrät nicht, welche davon Daten nach außen senden. WordPress bietet aber einen Haken, über den jede Anfrage der eigenen HTTP-Schnittstelle läuft: http_api_debug. Ein kleines Must-Use-Plugin protokolliert damit Methode, Zielhost und Statuscode jeder ausgehenden Anfrage. Legen Sie die Datei wp-content/mu-plugins/http-log.php an:
<?php
/* Protokolliert ausgehende HTTP-Anfragen von WordPress (nur zur Analyse) */
add_action( 'http_api_debug', function ( $response, $context, $class, $args, $url ) {
$code = is_wp_error( $response ) ? $response->get_error_code() : wp_remote_retrieve_response_code( $response );
error_log( sprintf( '[http-log] %s %s %s', $args['method'] ?? 'GET', wp_parse_url( $url, PHP_URL_HOST ), $code ) );
}, 10, 5 );
Die Einträge landen im PHP-Fehlerprotokoll bzw. bei aktivem WP_DEBUG_LOG in wp-content/debug.log, siehe WordPress Debug-Modus aktivieren und Error-Logs analysieren. Das Protokoll enthält nur Hostnamen, keine Inhalte. Lassen Sie es einige Tage laufen, damit auch zeitgesteuerte Aufgaben wie Backups und Update-Prüfungen erfasst werden. Die Auswertung per SSH:
grep http-log wp-content/debug.log | cut -c 26- | sort | uniq -c
Im Labor mit Akismet, einem eingebetteten YouTube-Video und einem Kommentar ergab sich:
4 ] [http-log] GET api.wordpress.org 200
2 ] [http-log] GET www.youtube.com 200
2 ] [http-log] HEAD www.youtube.com 200
1 ] [http-log] POST 127.0.0.1
6 ] [http-log] POST api.wordpress.org 200
1 ] [http-log] POST rpc.pingomatic.com 200
Auffällig: Die Update-Prüfung spricht api.wordpress.org an, beim Einbetten des Videos holt WordPress serverseitig Daten von www.youtube.com, und beim Veröffentlichen eines Beitrags meldet WordPress ihn an den Update-Dienst rpc.pingomatic.com. Der Eintrag 127.0.0.1 ist der interne Aufruf von WP-Cron. Entfernen Sie die Datei nach der Analyse wieder.
Verifizieren: Sie haben eine Liste aller Zielhosts mit Häufigkeit, und das Protokoll-Plugin ist wieder gelöscht.
Schritt 3: Verbindungen im Browser erfassen
Schritt 2 zeigt nur, was der Server sendet. Viel häufiger lädt der Browser des Besuchers Inhalte direkt von Dritten, und dabei erhält der Dritte die IP-Adresse des Besuchers. Öffnen Sie die wichtigsten Seitentypen (Startseite, Beitrag mit Kommentaren, Kontaktseite, Seite mit Video) in einem privaten Browserfenster, drücken Sie F12 und prüfen Sie im Reiter „Netzwerk“ die Spalte „Domain“. Per Kommandozeile finden Sie fremde Adressen im Quelltext:
curl -s https://www.example.de/ https://www.example.de/beispielbeitrag/ \
| grep -oE '(src|href|srcset)="https?://[^/"]+' | sort | uniq -c
Im Labor fanden sich neben der eigenen Adresse www.youtube.com (das eingebettete Video als iframe) und secure.gravatar.com (Profilbilder neben Kommentaren). Der Link auf gravatar.com im Kommentarformular ist dagegen nur ein Verweis und lädt nichts. Das Theme Twenty Twenty-Five lud im Test keine externen Schriften. Andere Themes und Seitenbaukästen binden häufig Schriften, Skripte oder Karten von fremden Servern ein.
Verifizieren: Ihre Liste enthält für jeden Seitentyp alle fremden Domains, die der Browser lädt.
Schritt 4: Jeden Dienst einordnen
Führen Sie die Ergebnisse aus den Schritten 2 und 3 mit den Diensten zusammen, die gar nicht im Protokoll auftauchen, weil sie außerhalb von WordPress laufen: Hoster, E-Mail-Postfächer, DNS, Wartungsdienstleister. Beantworten Sie für jeden Eintrag dieselben Fragen:
- Welche personenbezogenen Daten erhält der Dienst (IP-Adresse, Kommentare, Bestellungen, Kontaktanfragen, komplette Datenbank im Backup)?
- Verarbeitet er sie nur nach Ihrer Weisung oder auch für eigene Zwecke?
- Wo sitzt der Anbieter, und wo stehen die Server?
- Brauchen Sie den Dienst wirklich?
Die vierte Frage spart oft die meiste Arbeit. Die folgende Tabelle zeigt die Einträge aus dem Labor und was Sie dort selbst in der Hand haben:
| Dienst | Daten | Einstellung in WordPress |
|---|---|---|
| api.wordpress.org | Server-IP, Adresse der Website, Versionen von WordPress, PHP, Plugins und Themes | für Sicherheitsupdates nötig |
| rpc.pingomatic.com | Adresse der Website bei jedem neuen Beitrag | „Einstellungen > Schreiben > Update-Dienste“, Feld leeren |
| secure.gravatar.com | IP-Adresse der Besucher, Hash der E-Mail-Adresse der Kommentierenden | „Einstellungen > Diskussion > Avataranzeige“, „Avatare anzeigen“ abwählen |
| Akismet | laut Datenschutzhinweis des Plugins typischerweise IP-Adresse, User-Agent, Referrer, Name, E-Mail und Kommentartext | Plugin nur mit geklärter Grundlage nutzen oder durch lokale Lösung ersetzen |
| www.youtube.com | IP-Adresse der Besucher beim Laden des Videos | Zwei-Klick-Lösung oder Vorschaubild mit Einwilligung |
Im Labor verschwand das Gravatar-Bild nach dem Abwählen von „Avatare anzeigen“ aus dem Quelltext, und nach dem Leeren der Update-Dienste gab es keine weitere Meldung an rpc.pingomatic.com. Die Angaben zu Akismet stammen aus dem Text, den das Plugin selbst unter „Einstellungen > Datenschutz > Richtlinien-Leitfaden“ für die Datenschutzerklärung vorschlägt. Dort finden Sie auch die Hinweise anderer Plugins, die diese Funktion nutzen. Lokale Alternativen zum Spamschutz beschreibt die Anleitung Spam in Kommentaren und Formularen abwehren.
Verifizieren: Jeder Dienst in Ihrer Liste hat eine Rolle, eine Angabe zu den Daten und eine Entscheidung: behalten, abschalten oder ersetzen.
Schritt 5: Verträge zur Auftragsverarbeitung prüfen
Für jeden Auftragsverarbeiter brauchen Sie einen Vertrag. Art. 28 Abs. 3 DSGVO legt fest, was er enthalten muss: Gegenstand und Dauer, Art und Zweck der Verarbeitung, Art der Daten, Kategorien betroffener Personen sowie Pflichten und Rechte des Verantwortlichen. Nach Art. 28 Abs. 9 muss er schriftlich abgefasst sein, was auch elektronisch möglich ist. Die meisten Hoster und Cloud-Anbieter stellen einen Standardvertrag im Kundenbereich zum Abschluss per Klick bereit.
Prüfen Sie bei jedem Vertrag mindestens diese Punkte:
- Vertragspartner und Leistung: Stimmen Firma und gebuchter Tarif mit Ihrem Konto überein?
- Weisungsbindung: Verarbeitet der Anbieter die Daten nur auf Ihre dokumentierte Weisung (Art. 28 Abs. 3 Buchst. a)?
- Technische und organisatorische Maßnahmen: Liegt eine Beschreibung bei? Wie Sie diese Maßnahmen bewerten und dokumentieren, zeigt die Anleitung DSGVO-Praxis: TOMs dokumentieren und Auftragsverarbeitung regeln.
- Unterauftragsverarbeiter: Nach Art. 28 Abs. 2 darf der Anbieter weitere Dienstleister nur mit Ihrer Genehmigung einsetzen und muss Sie bei allgemeiner Genehmigung über Änderungen informieren. Speichern Sie die aktuelle Liste.
- Serverstandort und Drittländer: Werden Daten außerhalb der EU oder des EWR verarbeitet, brauchen Sie eine Grundlage nach Art. 44 ff. DSGVO, etwa einen Angemessenheitsbeschluss der EU-Kommission nach Art. 45.
- Ende des Vertrags: Werden die Daten nach Vertragsende gelöscht oder zurückgegeben?
Denken Sie an Dienste mit vollem Zugriff: Ein externer Backup-Speicher enthält die komplette Datenbank, siehe Backup-Speicher für WordPress einrichten. Auch eine Agentur oder ein Freelancer mit Administratorzugang kann Auftragsverarbeiter sein.
Verifizieren: Für jeden Auftragsverarbeiter liegt ein abgeschlossener Vertrag mit Datum als PDF in Ihrer Dokumentation, samt Liste der Unterauftragsverarbeiter.
Schritt 6: Ergebnis dokumentieren und aktuell halten
Halten Sie die Liste aus Schritt 4 als Tabelle mit Dienst, Rolle, Daten, Vertragsstand, Serverstandort und Datum der letzten Prüfung fest. Sie ist die Grundlage für Ihr Verzeichnis von Verarbeitungstätigkeiten nach Art. 30 DSGVO und für die Datenschutzerklärung. Die Datenschutzerklärung muss zur Liste passen: Jeder Dienst, der Daten erhält, gehört hinein, und jeder abgeschaltete Dienst heraus.
Die Liste veraltet mit jedem neuen Plugin und jedem Update. Ein Plugin, das nach einem Update zusätzlich einen externen Dienst anspricht, fällt nur auf, wenn jemand nachsieht. Wiederholen Sie die Schritte 2 und 3 deshalb nach dem Installieren neuer Plugins und mindestens einmal im Jahr. Wer die technische Pflege der Website nicht selbst im Kalender halten möchte, kann sie abgeben: Die WordPress-Wartung von wordpressupdate.de übernimmt Updates von WordPress, Plugins und Themes mit Kompatibilitätsprüfung und wöchentliche Backups auf externen Speicher. Auch ein solcher Wartungsdienst gehört mit Vertrag zur Auftragsverarbeitung auf Ihre Liste.
Verifizieren: Die Tabelle ist vollständig, datiert und stimmt mit der Datenschutzerklärung überein.
Typische Fehler
- Nur den Hoster betrachtet: Backup-Speicher, SMTP-Dienst, Formular- und Newsletter-Plugins verarbeiten oft mehr Daten als der Webserver selbst. Nehmen Sie alle Dienste aus den Schritten 2 bis 4 auf.
- Browser-Verbindungen übersehen: Das Server-Protokoll zeigt keine Gravatar-Bilder, Schriften oder Videos, die der Browser lädt. Prüfen Sie beide Wege.
- Vertrag nicht abgeschlossen, nur verlinkt: Ein Muster auf der Website des Anbieters ist noch kein Vertrag. Viele Anbieter verlangen einen Abschluss im Kundenbereich. Speichern Sie die Bestätigung.
- Protokoll zu kurz: Backups, Update-Prüfungen und Lizenzabfragen laufen zeitgesteuert. Ein Protokoll über wenige Minuten erfasst sie nicht.
- Protokoll-Plugin vergessen:
http-log.phpschreibt bei jeder Anfrage ins Log. Entfernen Sie es nach der Analyse. - Datenschutzerklärung nicht angepasst: Nach dem Abschalten oder Hinzufügen eines Dienstes stimmt die Erklärung nicht mehr. Passen Sie sie im selben Arbeitsgang an.
Häufige Fragen
Brauche ich mit meinem Webhoster einen Vertrag zur Auftragsverarbeitung?
Ja, sobald auf dem Server personenbezogene Daten liegen, etwa Benutzerkonten, Kommentare, Bestellungen oder Server-Logs mit IP-Adressen. Das ist bei praktisch jeder Unternehmenswebsite der Fall.
Gilt das auch für kostenlose Plugins?
Das Plugin selbst ist Software auf Ihrem Server. Entscheidend ist, ob es Daten an einen externen Dienst sendet. Ein Formular-Plugin, das nur in Ihre Datenbank schreibt, braucht keinen eigenen Vertrag. Ein Plugin, das Daten an die Server des Herstellers übermittelt, muss eingeordnet werden, unabhängig vom Preis.
Ist WordPress.org selbst ein Auftragsverarbeiter?
Laut Quellcode (wp-includes/update.php) sendet die Update-Prüfung Versionsangaben und die Adresse der Website an api.wordpress.org, aber keine Daten von Besuchern. Wie das rechtlich zu bewerten ist, klären Sie mit Ihrem Datenschutzbeauftragten. Abschalten sollten Sie die Update-Prüfung nicht, denn sie ist die Grundlage für Sicherheitsupdates.
Testumfang
Wir haben das Vorgehen auf einer Testseite mit WordPress 7.1.2, einem eingebetteten YouTube-Video und einem Kommentar ausprobiert. Dabei haben wir die ausgehenden Anfragen mit http_api_debug mitgeschnitten und das Abschalten von Avataren und Update-Diensten geprüft.
Seitenbaukästen sowie Formular- und Newsletter-Plugins haben wir nicht getestet. Wenn Sie solche Erweiterungen nutzen, probieren Sie die Schritte am besten zuerst auf einer Kopie Ihrer Seite aus.
Fazit
Auftragsverarbeitung bei WordPress beginnt mit einer ehrlichen Bestandsaufnahme: Server-Protokoll und Quelltext zeigen, welche Dienste wirklich Daten erhalten. Danach ordnen Sie jeden Dienst ein, schalten Unnötiges ab und schließen für die übrigen Auftragsverarbeiter Verträge nach Art. 28 DSGVO. Wer die laufende technische Pflege der Website abgeben möchte, findet sie bei der WordPress-Wartung von Marcel Schönfelder.


