Musterbefund. Damit du siehst, was du bekommst. Shopname, Produkte und Domain sind erfunden. Die Fundtypen, die Struktur und die Art der Messwerte stammen aus echten Prüfungen. In einem echten Befund liegt zu jedem Fund zusätzlich ein Screenshot der Fundstelle bei.

Technische Bestandsaufnahme · Stichtag 18.08.2026

beispielshop.de

Einwilligung und Tracking, Pflichtangaben, Preisauszeichnung, Werbeaussagen, Produktkennzeichnung, Rechtstexte, Theme-Code

Funde
24
jeder mit Fundstelle, Messwert und Fix
Prüfpunkte
78
Position für Position
Messdurchgänge
3
zu verschiedenen Tageszeiten
In Ordnung
14
geprüft, nichts zu tun
Verteilung der Funde
13 Weicht ab 9 Fehlt 2 Nachweis oder Klärung nötig
Umfang und Methode

Geprüft wurden zehn Seiten: Startseite, zwei Produktseiten, Kollektionsübersicht, Warenkorb, Impressum, Datenschutzerklärung, AGB, Widerrufsbelehrung und Versandbedingungen. Gemessen wurde in drei Durchgängen mit einem echten Browser: um 14:12 Uhr ohne Interaktion, unmittelbar danach nach einem Klick auf "Ablehnen", und um 20:41 Uhr als Wiederholung. Jeder Durchgang mit geleerten Cookies, geleertem localStorage und geleertem sessionStorage, sechs Sekunden Wartezeit vor der Messung.

Ich bin kein Anwalt. Das ist eine technische Bestandsaufnahme, keine Rechtsberatung. Ich beschreibe, was der Shop technisch tut und wo das von den geltenden Vorgaben abweicht, jeweils mit Fundstelle und Quelle. Die rechtliche Bewertung im Einzelfall gehört zu einem Anwalt. Die Prüfung erhebt keinen Anspruch auf Vollständigkeit.

Kurzfassung

Der Shop ist handwerklich ordentlich gebaut. Es gibt ein Einwilligungsbanner beim Erstaufruf, mit "Ablehnen" gleichwertig auf der ersten Ebene. Alle sechs Rechtstexte sind angelegt und erreichbar. Im Checkout ist die Newsletter-Zustimmung nicht vorangekreuzt, im Warenkorb ist keine Zusatzleistung vorausgewählt.

Drei Dinge fallen auf, weil sie mit kleinem Aufwand großen Unterschied machen. Das Analyse-Skript lädt 214 Millisekunden nach dem Seitenaufruf und überträgt ab 1.980 Millisekunden, während die Einwilligungs-Schnittstelle zum selben Zeitpunkt analyticsProcessingAllowed: false meldet. Nach einem Klick auf "Ablehnen" wiederholt sich das. Die Datenschutzerklärung nennt keinen der tatsächlich geladenen Dienste. Und die Produktseite zeigt eine Stückzahl an, die weder im Server-HTML variiert noch aus einem geführten Bestand stammt.

Der zweite Block sind Angaben, die sich an verschiedenen Stellen des Shops widersprechen. Die Versandkosten stehen an fünf Stellen, zwei davon schließen einander aus. Die Lieferzeit steht auf der Produktseite anders als in den Versandbedingungen. Solche Punkte lassen sich ohne Messwerkzeug nachvollziehen, sie stehen auf der Seite.

NrFundStatusAufwand
01Analyse-Dienst lädt und überträgt vor der EinwilligungWeicht abklein
02Analyse-Dienst lädt und überträgt auch nach "Ablehnen"Weicht abklein
03Schriftarten werden von fremden Servern nachgeladenWeicht abklein
04Datenschutzerklärung nennt keinen der geladenen DiensteFehltmittel
05Link "Cookie-Einstellungen" zeigt auf eine 404-SeiteWeicht abklein
06Newsletter-Popup ohne Hinweis auf die DatenverarbeitungFehltklein
07Kontaktformular ohne DatenschutzhinweisFehltklein
08Umsatzsteuer-Identifikationsnummer im Impressum nicht auffindbarKlärung nötigklein
09Muster-Widerrufsformular enthält unausgefüllte PlatzhalterFehltklein
10Zwei verschiedene Widerrufsfristen im selben ShopWeicht abklein
11Widerrufsbelehrung nennt die Adresse der Online-Funktion nichtFehltklein
12Streichpreis ohne Angabe des niedrigsten Preises der letzten 30 TageFehltklein
13Kollektionsseite ohne Steuer- und VersandkostenhinweisFehltklein
14Versandkostenangaben widersprechen sich an fünf StellenWeicht abklein
15Lieferzeit auf Produktseite und Versandseite weicht voneinander abWeicht abklein
16Rabattangabe ohne den Preis, auf den sie sich beziehtWeicht abklein
17Lagerhinweis unabhängig vom tatsächlichen BestandWeicht abklein
18Besucherhinweis ohne veränderlichen WertWeicht abklein
19Garantieaussagen ohne Bedingungen und mit zwei DauernWeicht abmittel
20Kein Hinweis, ob und wie die Echtheit der Bewertungen geprüft wirdFehltklein
21Zwei verschiedene Durchschnittsnoten auf derselben SeiteWeicht abklein
22Kundenzahl im Fließtext ohne FundstelleNachweis nötigklein
23Hersteller- und Kontaktangaben im Angebot nicht auffindbarFehltmittel
24Englische Platzhaltertexte aus der Theme-VorlageWeicht abklein
OK14 Punkte in Ordnung, Liste am Ende des BerichtsIn Ordnungentfällt

Fünf Funde im Detail

5 von 24

Im vollständigen Bericht steht jeder der 24 Funde in dieser Form.

Analyse-Dienst lädt und überträgt vor der Einwilligung

FUND 01
Fundstelle
Alle geprüften Seiten. Inline-Skript im <head> des vom Server ausgelieferten HTML, zwischen den Kommentaren BEGIN app block und END app block.
Gemessen
Erstaufruf der Startseite mit geleerten Cookies, ohne jede Interaktion, sechs Sekunden Wartezeit. Die Einwilligungs-Schnittstelle meldet zu diesem Zeitpunkt:
currentVisitorConsent      {marketing:"", analytics:""}
shouldShowBanner           true
analyticsProcessingAllowed false
marketingAllowed           false
Ladezeitpunkte im selben Seitenaufruf
Einwilligung zu keinem Zeitpunkt erteilt 0 1.100 ms 2.200 ms Skript, 214 ms erste Übertragung, 1.980 ms Drei Aufrufe an den Anbieter, alle vor jeder Interaktion. Werte im Einzelnen in der Tabelle darunter.
ZeitArtAufruf
214 msscriptanalyse-anbieter.example/tag/xxxxx
338 msscriptscripts.analyse-anbieter.example/0.8.69/lib.js
1.980 msxhrt.analyse-anbieter.example/collect
63.902 msxhrt.analyse-anbieter.example/collect

Auf dem Endgerät liegen nach dem Erstaufruf ohne Interaktion sechs Schlüssel im localStorage, darunter eine Besucherkennung.

Vorgabe
§ 25 Abs. 1 TDDDG. Die Speicherung von Informationen in der Endeinrichtung des Endnutzers und der Zugriff auf dort gespeicherte Informationen setzen die Einwilligung des Endnutzers voraus. Art. 6 Abs. 1 lit. a DSGVO setzt für eine Verarbeitung auf Grundlage einer Einwilligung voraus, dass diese vorher erteilt wurde. Zum Messzeitpunkt lag keine Einwilligung vor.
Fix
Der App-Block liegt im Theme-Editor unter den App-Einbettungen. Der Anbieter kennt einen Consent-Modus, in dem das Skript erst nach der Zustimmung lädt. Diesen Umbau mache ich nicht selbst, das ist Tracking-Verdrahtung. Ich schreibe auf, was wo hinter die Einwilligung muss, und messe danach nach.
Aufwand
klein, wenn die App-Einbettung abgeschaltet wird. Mittel, wenn der Dienst nach der Einwilligung weiterlaufen soll.
Im echten Bericht liegt hier Abbildung 1: Netzwerkmitschnitt der ersten zwei Sekunden, herangezoomt auf die Zeitspalte.

Analyse-Dienst lädt und überträgt auch nach "Ablehnen"

FUND 02
Fundstelle
Startseite, nach Klick auf "Ablehnen" im Einwilligungsbanner und anschließendem Neuladen.
Gemessen
Nach dem Klick meldet die Schnittstelle:
currentVisitorConsent      {marketing:"no", analytics:"no"}
analyticsProcessingAllowed false
Auf der neu geladenen Seite: Skript bei 402 ms, Bibliothek bei 610 ms, erste Übertragung bei 1.744 ms. Die sechs localStorage-Schlüssel bleiben gesetzt.
Vorgabe
§ 25 Abs. 1 TDDDG verlangt eine Einwilligung für Speichern und Auslesen auf der Endeinrichtung. Der gemessene Zustand war "no" für Analyse und Marketing, eine Einwilligung lag also zu keinem Zeitpunkt vor. Art. 6 Abs. 1 lit. a DSGVO setzt für eine Verarbeitung auf dieser Grundlage voraus, dass die Einwilligung vorher erteilt wurde.
Fix
Derselbe Eingriff wie bei Fund 01. Nach dem Umbau lohnt eine Kontrollmessung in drei Durchgängen: nichts angeklickt, abgelehnt, zugestimmt. Der dritte Durchgang zeigt, ob die Messung nach der Zustimmung überhaupt noch funktioniert.
Aufwand
klein, gleicher Handgriff wie Fund 01

Lagerhinweis unabhängig vom tatsächlichen Bestand

FUND 17
Fundstelle
Produktseite, Element über der Warenkorb-Schaltfläche.
Gemessen
Wortlaut: "Nur noch 8 Stück auf Lager". Drei unabhängige Messungen, die zusammen ergeben, dass die Zahl nicht aus dem Bestand kommt.
NrMessungErgebnis
1Server, vier Abrufe mit cache: no-storejeweils "8"
2Browser, nach 6 Stunden 29 Minuten und zwei geleerten Sitzungenwieder "8"
3Shopdaten, inventory_managementnull

Für das Produkt wird im Shopsystem kein Bestand geführt. Der angezeigte Wert verändert sich über beide Durchgänge nicht.

Vorgabe
§ 5 Abs. 1 und Abs. 2 Nr. 1 UWG, Angaben über die Verfügbarkeit der Ware. Zur Einordnung: Nr. 7 des Anhangs zu § 3 Abs. 3 UWG betrifft die Verfügbarkeit für einen sehr begrenzten Zeitraum und passt auf eine Mengenangabe nicht.
Fix
Die Angabe an den tatsächlichen Bestand koppeln, dafür müsste im Shopsystem die Bestandsverwaltung aktiviert sein. Alternativ den Text so ändern, dass er keine Stückzahl mehr nennt, oder das Element entfernen.
Aufwand
klein
Im echten Bericht liegt hier Abbildung 9: Ausschnitt der Produktseite mit sichtbarer Uhrzeit, aus beiden Durchgängen nebeneinander.

Streichpreis ohne Angabe des niedrigsten Preises der letzten 30 Tage

FUND 12
Fundstelle
Produktseite und Kollektionsübersicht.
Gemessen
Angezeigt "79,90 €" neben durchgestrichenem "129,90 €", dazu ein Badge "minus 38 %". Auf der Kollektionskachel derselbe Streichpreis mit Badge "Sale". In beiden Durchgängen identisch.

Suche nach einem Bezugswert im gerenderten Seiteninhalt mit geöffneten Akkordeons, in den eingebetteten Rahmen, in den Shadow Roots und in allen sechs Produktbildern einzeln: Treffer für "niedrigst" 0, "Bestpreis" 0, "letzten 30 Tage" 0, "30 Tagen" 0.

Nachgerechnet: 129,90 minus 79,90 ergibt 50,00. 50,00 geteilt durch 129,90 ergibt 38,49 Prozent, kaufmännisch gerundet die angezeigten 38 Prozent. Die Prozentangabe passt damit zu den beiden angezeigten Preisen.

Vorgabe
§ 11 Abs. 1 PAngV verlangt bei jeder Bekanntgabe einer Preisermäßigung für eine Ware die Angabe des niedrigsten Gesamtpreises, den der Händler innerhalb der letzten 30 Tage vor der Anwendung der Preisermäßigung angewendet hat. Ein entsprechender Hinweis ist auf der Seite nicht auffindbar. Der EuGH hat am 26.09.2024 in der Rechtssache C-330/23 entschieden, dass dieser Preis die Berechnungsgrundlage des beworbenen Vorteils sein muss.
Fix
Eine Zeile mit dem Bestpreis unter den Preis setzen, auf der Produktseite und auf der Kollektionskachel. Voraussetzung ist eine Preishistorie der letzten 30 Tage, die sich über den Produktexport ziehen lässt.
Aufwand
klein

Versandkostenangaben widersprechen sich an fünf Stellen

FUND 14
Fundstelle
Ankündigungsleiste, Produktseite, Vertrauenszeile unter der Kaufschaltfläche, Warenkorb, Versandbedingungen.
Gemessen
FundstelleAngabe
Ankündigungsleiste, alle Seiten"Gratis-Versand ab 60 €"
Produktseite, Akkordeon"gratis ab 60 € (sonst 4,90 €)"
Vertrauenszeile unter dem Kaufbereich"Kostenloser Versand" ohne Bedingung
Warenkorb"Versandkosten werden an der Kasse berechnet."
Versandbedingungen"Der Versand innerhalb Deutschlands ist kostenlos."

Im Warenkorb mit einem Artikel zu 39,90 €, also unterhalb der Schwelle, stehen zwei Aussagen direkt untereinander: "Versandkosten werden an der Kasse berechnet." und "Kostenloser Versand". Damit stehen zwei einander ausschließende Aussagen im Shop.

Vorgabe
§ 6 Abs. 1 Nr. 2 PAngV verlangt die Angabe, ob zusätzlich Fracht-, Liefer- oder Versandkosten anfallen. § 6 Abs. 2 PAngV verlangt die Höhe, soweit sie vorab berechenbar ist. Art. 246a § 1 Abs. 1 Satz 1 Nr. 7 EGBGB verlangt die Angabe zusätzlicher Fracht-, Liefer- und Versandkosten, der Gesamtpreis steht in Nr. 5. § 5 Abs. 2 Nr. 2 UWG betrifft Angaben über den Preis und die Art seiner Berechnung.
Fix
Zuerst festlegen, was gilt. Dann alle fünf Stellen angleichen. Die Vertrauenszeile ist ein Theme-Baustein, der an mehreren Stellen eingebunden ist, das ist eine Änderung an einer Datei.
Aufwand
klein

Was in Ordnung ist

5 von 14

Das ist kein Füller. Es zeigt, wo der Shop schon steht, und gehört genauso in den Bericht wie die Funde.

PunktGemessen
Einwilligungsbanner beim Erstaufruferscheint mit geleerten Cookies, shouldShowBanner: true
Ablehnen auf der ersten Ebenegleiche Größe und Gestaltung wie "Akzeptieren"
Keine doppelten oder toten Trackerkein zweites Pixel desselben Anbieters, keine Hosts ohne Auflösung
Newsletter im Checkout nicht vorangekreuztKästchen ist beim Aufruf leer
Keine vorausgewählten ZusatzleistungenWarenkorb ohne vorausgewählte Kästchen, § 312a Abs. 3 Satz 2 BGB

Empfohlene Reihenfolge

Sortiert nach Aufwand gegen Sichtbarkeit, nicht nach einer Einschätzung. Was oben steht, ist schnell gemacht und fällt auf jeder Seite auf.

Schritt 1 · eine Sitzung
Texte und Einstellungen
Funde 05, 09, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24. Reines Angleichen und Ergänzen im Theme.
Schritt 2 · Angaben einsammeln
Erst klären, dann bauen
Funde 08, 19, 20, 22, 23. Hier braucht es Angaben aus dem Shop. Die Fragen dazu liegen als eigene Datei bei.
Schritt 3 · Consent
Umbau und Nachmessung
Funde 01, 02, 03, 04, 06, 07. Schriften und Formularhinweise mache ich, den Consent-Umbau der Entwickler. Danach messe ich nach.

Nicht geprüft

Damit klar ist, wo die Grenzen dieser Bestandsaufnahme liegen. Im vollständigen Bericht steht zu jedem Punkt zusätzlich, was von außen stattdessen belegbar ist.

  • Die letzte Stufe der Bestellstrecke. Sie ist ohne Eingabe echter Zahlungsdaten nicht erreichbar, und es wurde keine Bestellung ausgelöst.
  • Ob nach einem Widerruf eine Bestätigungsmail versendet wird. Das ließe sich nur durch Absenden des Formulars prüfen.
  • Die doppelte Bestätigung beim Newsletter. Nur durch Eintragen einer echten Adresse messbar.
  • Die Lizenzlage der Produktfotos. Von außen ist nur sichtbar, welche Datei von welchem Host ausgeliefert wird, nicht, welche Rechte daran bestehen.
  • Registrierung im Verpackungsregister LUCID. Von außen nicht abschließend feststellbar.
  • Ob die Anforderungen des BFSG für diesen Shop gelten. Die Abgrenzung hängt an Beschäftigtenzahl und Jahresumsatz, beides liegt von außen nicht vor. Der technische Zustand selbst wurde gemessen und beschrieben.
Technische Bestandsaufnahme beispielshop.de, Stichtag 18.08.2026. Erstellt von Eric Walther, Shopbefund, eric@shopbefund.de. Gemessen mit einem echten Browser in drei Durchgängen.

Ich bin kein Anwalt. Das ist eine technische Bestandsaufnahme, keine Rechtsberatung. Ich beschreibe, was der Shop technisch tut und wo das von den geltenden Vorgaben abweicht, jeweils mit Fundstelle und Quelle. Die rechtliche Bewertung im Einzelfall gehört zu einem Anwalt. Die Prüfung erhebt keinen Anspruch auf Vollständigkeit.

Das war ein Musterbefund

Ein echter Befund für deinen Shop enthält dasselbe, nur mit deinen Werten: jeder Fund mit Fundstelle, wörtlichem Zitat, Norm, Screenshot und einem konkreten Fix. Dazu ein Beleg-Paket mit den Rohdaten, das du deinem Entwickler oder deiner Kanzlei direkt weiterreichen kannst. Alles schriftlich, ohne Call.

Zu den Paketen
Shopbefund von Eric Walther · Startseite · Impressum · Datenschutz