TL;DR
- Der 30-Tage-Tiefstpreis muss pro SKU und Variante einzeln berechnet werden — nicht nur auf Basis-Produktebene
- Drei Umsetzungswege: manuell (max 50 SKUs, seltene Aktionen), Custom-Code (50-500 SKUs, 20-40 Dev-Stunden Initial), Compliance-App (kein Code, 5 min Setup)
- Häufiger Fehler: Referenzpreis nur einmal beim Sale-Start berechnen — korrekt ist kontinuierliche Berechnung
- Banner-Werbung mit prozentualer Reduktion ("bis zu 50%") braucht ebenfalls den Tiefstpreis-Hinweis (BGH 2024)
- Nach einem 30%-Sale ist der neue 30-Tage-Tiefstpreis der Aktionspreis — nicht der ursprüngliche Vollpreis
Seit §11 PAngV in Kraft ist, müssen Flash Sales den 30-Tage-Tiefstpreis ausweisen. Die Regel ist einfach zu formulieren, in der Praxis aber überraschend schwer korrekt umzusetzen — besonders bei häufigen Aktionen, variantenreichen Katalogen und Multi-Channel-Verkauf. Dieser Beitrag zeigt drei Umsetzungswege (manuell, mit Custom-Code, mit Compliance-App) und welche Fallstricke jeweils auftauchen.
Die Regel in einem Satz
Beim Anzeigen eines reduzierten Preises muss der niedrigste Preis stehen, den derselbe Shop für dasselbe Produkt in den letzten 30 Tagen vor der Reduzierung verlangt hat. Detaillierte Erklärung in PAngV §11 für Shopify-Händler und Omnibus-Richtlinie für deutsche Online-Shops.
Was zählt als 30-Tage-Tiefstpreis?
Vier Fragen, die in der Praxis regelmäßig auftauchen:
Frage 1: Was zählt als „Preis"? Der Bruttoverkaufspreis inklusive Mehrwertsteuer, ohne Versandkosten. Wenn der Versand kostenlos ist, ist der angezeigte Preis der maßgebliche Wert.
Frage 2: Zählen variantenspezifische Preise einzeln? Ja. Jede Variante (Größe, Farbe, Material) braucht ihren eigenen 30-Tage-Tiefstpreis. Ein T-Shirt in Größe M kostete vor 20 Tagen 39 € — das ist der Referenzpreis für die M-Variante, nicht für L.
Frage 3: Was wenn das Produkt erst seit 10 Tagen im Sortiment ist? Dann gilt der niedrigste Preis seit Einführung. Für neue Produkte mit weniger als 30 Tagen Verkaufshistorie sind Einführungspreis-Aktionen unter bestimmten Bedingungen ausgenommen — aber die Auszeichnung „Einführungspreis" muss klar erkennbar sein.
Frage 4: Was bei Bundle-Preisen? Der Bundle-Preis als Ganzes gilt als eigene Einheit. Wenn der Bundle vor 25 Tagen 80 € kostete und jetzt für 60 € angeboten wird, ist 80 € der Referenzpreis — nicht die Summe der Einzelpreis-Tiefstwerte der Komponenten.
Weg 1: Manuelle Umsetzung in Shopify
Für Händler mit kleinem Katalog (unter 50 SKUs) und seltenen Aktionen (eine pro Quartal) ist manuelle Umsetzung machbar. Vorgehen:
- Eine Tabelle (Google Sheets, Notion, Airtable) anlegen mit allen aktiven SKUs als Zeilen
- Pro SKU eine Spalte für jeden Tag der letzten 30 Tage
- Bei jeder Preisänderung den neuen Wert in der entsprechenden Tageszelle eintragen
- Vor Start einer Aktion das Minimum der letzten 30 Tage pro SKU ermitteln
- Diesen Wert als Custom-Field „pangv_reference_price" in Shopify hinterlegen
- Das Theme so anpassen, dass dieses Custom-Field auf der Sale-Page neben dem aktiven Preis erscheint
Aufwand: ca. 30 Minuten pro Aktion bei 50 SKUs. Risiken: Tippfehler in der Tabelle, vergessene Preisänderung, falscher Wert im Custom-Field. Genau das Audit-Material das bei einer Abmahnung gefährlich wird.
Weg 2: Custom-Code-Lösung
Für mittelgroße Kataloge (50-500 SKUs) mit regelmäßigen Aktionen kann ein Custom-Build sinnvoll sein. Komponenten:
- Webhook: Bei jeder Preisänderung in Shopify (product_update oder variant_update) wird der neue Preis mit Zeitstempel in eine eigene Datenbank-Tabelle geschrieben
- Cron-Job: Täglich um Mitternacht wird pro SKU der niedrigste Preis der letzten 30 Tage berechnet und in einem Custom-Field gespeichert
- Theme-Erweiterung: Die Sale-Komponente liest das Custom-Field und zeigt den Referenzpreis an
Aufwand für Initial-Setup: 20-40 Entwicklerstunden. Plus Wartung wenn Shopify die API-Versionen ändert oder das Theme aktualisiert wird. Vorteil: volle Kontrolle, integriert in den bestehenden Stack. Nachteil: jeder neue Sale-Format (Carousel, Raffle, Bundle) braucht eine Theme-Erweiterung.
Weg 3: Compliance-App
Für Händler mit häufigen Aktionen, mehreren Sales-Formaten oder Multi-Channel-Verkauf sind dedizierte Apps der pragmatische Weg. Im Shopify App Store sind mehrere PAngV-spezifische Apps verfügbar. Heartly löst PAngV-Compliance integriert in der Flash-Sale-Funktion:
- Jede Preisänderung in Shopify wird über die GraphQL Admin API erfasst und mit Zeitstempel gespeichert
- Pro SKU und Variante wird die vollständige Preishistorie der letzten 30 Tage geführt
- Bei einer Flash-Sale-Aktion wird der Tiefstpreis in Echtzeit berechnet
- Auf der Sale-Landing-Page erscheint der Referenzpreis automatisch neben dem Aktionspreis — Format und Sprache sind PAngV-konform
- Der vollständige Audit-Trail ist im Dashboard exportierbar als CSV, falls eine Abmahnung kommt
Aufwand: 5 Minuten zum Aktivieren. Kein Theme-Eingriff, kein Custom-Code, keine manuelle Pflege.
Praxis-Checkliste vor jedem Sale
- Audit-Lauf: Stichprobe 5-10 SKUs aus der Aktion aufrufen. Steht überall der 30-Tage-Tiefstpreis korrekt?
- Banner-Werbung: Sale-Banner auf der Homepage prüfen. Wenn dort prozentuale Reduktion beworben wird („bis zu 50%"), muss auch der Tiefstpreis-Hinweis erscheinen (BGH 2024).
- Email-Templates: Aktions-Mails an die Newsletter-Liste enthalten den Tiefstpreis-Hinweis bei beworbenen SKUs.
- Audit-Trail: Test-Export der letzten 30 Tage Preishistorie. Sollte lückenlos sein.
- Edge-Cases: Neue Produkte (unter 30 Tage) sind als „Einführungspreis" markiert. Verderbliche Ware (falls relevant) ist korrekt ausgenommen.
Häufige Fehler in der Praxis
Fehler 1: Den Referenzpreis nur einmal beim Sale-Start berechnen. Wenn ein Sale 7 Tage läuft und sich in dieser Zeit ändert (z.B. zusätzliche Aktion), wird der Referenzpreis veraltet. Korrekt ist die kontinuierliche Berechnung — bei jedem Page-Render.
Fehler 2: Variantenpreise nicht einzeln tracken. Wenn nur der „Basis-Preis" eines Produkts gespeichert wird, fehlt für Größen-/Farb-Varianten der korrekte Tiefstpreis. Pflichtverstoß.
Fehler 3: Versandkosten in den Preis einrechnen. Versandkosten gehören nicht in den 30-Tage-Tiefstpreis-Vergleich. Wer den Bruttopreis inkl. Versand als Referenz verwendet, zeigt einen falschen Wert an.
Fehler 4: Aktionsende vergessen, Tiefstpreis ist jetzt der Aktionspreis. Nach einem 30%-Sale ist der Aktionspreis automatisch der neue Tiefstpreis. Wer in den 30 Tagen danach eine weitere Aktion fährt, muss diesen niedrigen Wert als Referenz nennen — nicht den ursprünglichen Vollpreis.
Was als Nächstes
Für die rechtliche Basis: PAngV §11 für Shopify-Händler. Für den breiteren Kontext: Omnibus-Richtlinie für deutsche Online-Shops. Für die Heartly-Implementation: Shopify Rabatt App mit PAngV-Compliance oder WooCommerce Rabatt Plugin.
Disclaimer: Dieser Beitrag dient der Information, nicht der Rechtsberatung. Für konkrete Fälle bitte einen Rechtsanwalt für E-Commerce-Recht konsultieren.
