
Streichpreise in Shopify: 30-Tage-Bestpreis technisch umsetzen
Streichpreise in Shopify und die Omnibus-Richtlinie: warum compare_at nicht reicht, welche Apps den 30-Tage-Bestpreis tracken und wie Sie Rabatte dokumentieren.
Die Wettbewerbszentrale hat 2025 insgesamt 644 Fälle im Bereich Preiswerbung bearbeitet — 11,6 % mehr als im Vorjahr, mit Schwerpunkt auf dem 30-Tage-Referenzpreis nach § 11 PAngV (Quelle: onlinemarktplatz.de zur Fallstatistik, Jahresbericht der Wettbewerbszentrale, 17.06.2026). Die Zahl umfasst Preiswerbung gesamt, nicht nur Streichpreise — aber sie zeigt: Preisdarstellung wird systematisch geprüft.
Streichpreise sind in Shopify in Sekunden gesetzt: Vergleichspreis eintragen, fertig, das Theme rendert den durchgestrichenen Preis. Genau hier liegt das technische Problem. Shopify speichert keine Preis-Historie und berechnet keinen 30-Tage-Bestpreis — das Feld compare_at_price ist frei beschreibbar und dokumentiert nichts. Die Omnibus-Richtlinie (EU) 2019/2161, in Deutschland umgesetzt in § 11 PAngV, verlangt bei Preisermäßigungen aber genau das: einen belegbaren niedrigsten Gesamtpreis der letzten 30 Tage.
In diesem Artikel zeige ich die Technik dahinter: warum der Vergleichspreis allein nicht reicht, welche Omnibus-Apps das Tracking übernehmen und wie Sie Ihre Rabatt-Praxis so dokumentieren, dass jeder Streichpreis nachvollziehbar ist.
Das Wichtigste in Kürze
- Shopify trackt keinen 30-Tage-Bestpreis — das Feld compare_at_price ist frei beschreibbar und ohne Historie.
- Die Omnibus-Richtlinie (EU 2019/2161) steht hinter § 11 PAngV: bei Preisermäßigungen zählt der niedrigste Gesamtpreis der letzten 30 Tage.
- Die Wettbewerbszentrale bearbeitete 2025 644 Fälle Preiswerbung gesamt (+11,6 Prozent), Schwerpunkt 30-Tage-Referenzpreis.
- Apps wie Omnibus Price History (ab 5 USD/Monat) oder Complimus (14,90 USD/Monat) übernehmen Tracking und Bestpreis-Widget.
- Das Tracking beginnt erst mit der App-Installation — wer erst zur Kampagne installiert, hat keine Historie.
- Rabattcodes und automatische Rabatte laufen am Vergleichspreis vorbei — auch diese Preisbewegungen gehören dokumentiert.
30-Tage-Bestpreis: Was § 11 PAngV technisch bedeutet
Der Kern der Regelung ist schnell erklärt: Wer gegenüber Verbrauchern eine Preisermäßigung für eine Ware bekannt gibt, muss den niedrigsten Gesamtpreis angeben, der innerhalb der letzten 30 Tage vor der Ermäßigung verlangt wurde (Details im Gesetzestext). Für die Einordnung Ihrer konkreten Aktionen ist Ihr Rechtsberater zuständig — mich interessiert hier die technische Konsequenz für den Shop.
Und die hat es in sich, denn aus einem Satz Gesetzestext folgen drei Systemanforderungen:
| Anforderung | Technische Konsequenz in Shopify |
|---|---|
| Preis-Historie muss existieren | Jede Preisänderung je Variante mit Zeitstempel speichern — Shopify tut das nicht von selbst |
| Bestpreis muss berechenbar sein | Rollierendes 30-Tage-Fenster je Variante auswerten, nicht nur den letzten Preis kennen |
| Bestpreis muss angezeigt werden | Hinweis neben dem Streichpreis rendern — auf Produktseite und überall dort, wo der Streichpreis erscheint |
Die Fallzahlen der Wettbewerbszentrale zeigen, dass das Thema kein Papiertiger ist:
Warum compare_at allein nicht reicht
Der Vergleichspreis ist ein reines Anzeigefeld. Sie finden ihn im Admin unter Produkte → Produkt auswählen → Preisgestaltung → Vergleichspreis. Sobald er über dem Verkaufspreis liegt, rendert praktisch jedes Theme einen Streichpreis:
{% if product.compare_at_price > product.price %}
<s>{{ product.compare_at_price | money }}</s>
<span class="price--sale">{{ product.price | money }}</span>
{% endif %}Das Theme prüft nur eine Bedingung: Vergleichspreis größer als Preis. Woher der Wert stammt, wie lange er galt und ob er je verlangt wurde — davon weiß das System nichts. Konkret fehlen vier Dinge:
- Keine Historie: Shopify speichert nicht, welcher Preis wann galt. Ändern Sie den Preis heute, ist der gestrige Wert weg — es sei denn, Sie haben ihn selbst gesichert.
- Keine Validierung:
compare_at_priceakzeptiert jeden Wert. Ein Import per CSV, ein Bulk-Edit oder eine Preis-App überschreibt das Feld kommentarlos. - Keine Bestpreis-Berechnung: Selbst wenn eine Historie existierte — Shopify berechnet kein rollierendes 30-Tage-Minimum je Variante.
- Rabatte laufen vorbei: Rabattcodes und automatische Rabatte (Admin → Rabatte) senken den tatsächlich gezahlten Preis, ohne
priceodercompare_at_priceanzufassen. Diese Preisbewegungen tauchen in keiner Produktdaten-Ansicht auf.
Wer seine Rabatt-Praxis technisch sauber abbilden will, braucht deshalb eine Komponente, die Preise laufend mitschreibt — und genau das ist der Job der Omnibus-Apps.
Omnibus-Apps für Shopify im Vergleich
Der App Store bietet spezialisierte Apps, die Preisänderungen je Variante protokollieren, das 30-Tage-Minimum berechnen und einen Bestpreis-Hinweis als Widget oder App-Block ins Theme bringen (Preise Stand August 2026, jeweils App-Store-Listing):
| App | Preis | Bewertung | Besonderheit |
|---|---|---|---|
| Omnibus Price History (Netkodo) | 5–10 USD/Monat | 5,0 Sterne (4 Reviews) | Fokussiert auf Preis-Historie und Bestpreis-Widget |
| Complimus | 14,90 USD/Monat | — | Reine Omnibus-Spezial-App |
| ShopCompliance | Free / 29 / 199 USD/Monat | 0 Reviews | DE-fokussierte Kombi-App: Omnibus plus GPSR plus WEEE |
Die Monatskosten von 5 bis 15 USD sind dabei nicht der eigentliche Aufwand. Die Arbeit steckt in der Konfiguration und der Theme-Integration: Das Widget muss dorthin, wo Ihre Preise tatsächlich gerendert werden — und das ist je nach Theme die Produktseite, die Collection-Karte, der Quick-View und der Warenkorb.
Schritt für Schritt: Rabatt-Praxis technisch dokumentieren
So gehe ich in Projekten vor, wenn Streichpreise und Rabattaktionen technisch sauber aufgesetzt werden sollen:
Preisanzeige-Inventur im Theme
Öffnen Sie Onlineshop → Themes → Anpassen und gehen Sie alle Templates durch, die Preise rendern: Produktseite, Collection-Karten, Suche, Quick-View, Warenkorb, Empfehlungs-Sektionen. Notieren Sie jede Stelle, an der ein Streichpreis erscheint — an jeder dieser Stellen muss später auch der Bestpreis-Hinweis funktionieren. In Custom-Themes lohnt ein Grep über
compare_at_priceim Theme-Code.Tracking-App installieren — vor der Kampagne
Installieren Sie die Omnibus-App und lassen Sie das Tracking laufen. Der wichtigste Punkt, der in Projekten regelmäßig übersehen wird: Die App kennt nur Preise ab dem Zeitpunkt der Installation. Wer die App drei Tage vor dem Sale installiert, hat drei Tage Historie — nicht dreißig. Planen Sie die Installation deshalb mit deutlichem Vorlauf vor der ersten Aktion ein.
Bestpreis-Hinweis ins Theme integrieren
Platzieren Sie den App-Block bzw. das Widget im Theme-Editor an allen in Schritt 1 notierten Stellen. Bei App-Blocks: Anpassen → Produktseite → Block hinzufügen. Wo das Theme keine App-Blocks unterstützt (ältere oder stark angepasste Themes), bleibt manuelle Snippet-Integration — das ist der Punkt, an dem aus App-Konfiguration echte Theme-Arbeit wird.
Preisänderungen protokollieren
Exportieren Sie vor jeder Preisaktion den Ist-Zustand: Produkte → Exportieren → CSV, Datei mit Datum ablegen. Laufen bei Ihnen Preisautomationen über Flow, Skripte oder Bulk-Operationen, gehört dort ein Log dazu: welcher Prozess hat wann welchen Preis gesetzt. Diese Dokumentation kostet pro Kampagne fünf Minuten — und ist im Zweifel der einzige Nachweis, welcher Preis wann galt.
Testlauf mit Screenshot-Dokumentation
Fahren Sie eine Testaktion im unveröffentlichten Duplikat-Theme: Preis senken, prüfen, ob der Bestpreis-Hinweis korrekt erscheint, Screenshots von Produktseite, Collection und Warenkorb archivieren. Erst danach die echte Kampagne starten.
Viele Apps schreiben den berechneten Bestpreis in ein Metafield, das sich im Theme flexibel ausgeben lässt. Das Muster sieht so aus (Namespace und Key variieren je App — Dokumentation der App prüfen):
{% comment %} Bestpreis-Hinweis aus einem App-Metafield rendern {% endcomment %}
{% assign lowest = product.metafields.omnibus.lowest_price_30d %}
{% if product.compare_at_price > product.price and lowest != blank %}
<p class="lowest-price-note">
Niedrigster Preis der letzten 30 Tage: {{ lowest | money }}
</p>
{% endif %}Der Vorteil der Metafield-Variante: Sie kontrollieren Markup und Styling selbst, statt ein fremdes Widget-Design zu übernehmen — gerade bei Themes mit eigenem Preis-Layout der sauberere Weg.
Grenzen der Technik: Was Apps können — und was nicht
Die Omnibus-Apps lösen das Tracking-Problem, aber nicht alles. Drei Grenzen aus der Projektpraxis:
Theme-Integration bleibt Handarbeit. Das Widget der App rendert dort, wo die App es platzieren kann. Custom-Themes mit eigener Preis-Komponente, Quick-Views aus Page-Buildern oder Upsell-Sektionen von Drittanbieter-Apps zeigen Streichpreise oft an Stellen, die keine Omnibus-App von allein erreicht.
Rabatt-Logik außerhalb der Produktdaten. Automatische Rabatte, Rabattcodes und Bundle-Apps verändern gezahlte Preise, ohne dass die Produktdaten sich bewegen. Welche dieser Rabattformen im Einzelfall unter § 11 PAngV fällt, klärt Ihr Rechtsberater — technisch sollten Sie in jedem Fall wissen und dokumentieren können, welche Preisbewegungen in Ihrem Shop stattfinden.
Rechtstexte sind ein eigenes System. Für AGB, Widerruf und Datenschutz gibt es etablierte Sync-Apps: die AGB-Schnittstelle der IT-Recht Kanzlei (9,90 USD/Monat, 4,9 Sterne) oder die Rechtstexte-App des Händlerbunds (in der Mitgliedschaft ab 9,90 €/Monat). Diese Apps liefern die Texte — die technische Verzahnung im Shop (Footer-Verlinkung, Checkout-Einbindung, E-Mail-Templates) bleibt Theme-Arbeit. Genau diese Arbeitsteilung meine ich mit „die Kanzlei liefert, ich baue ein".
Fazit: Erst Historie, dann Rabatt
Streichpreise in Shopify sind kein Design-Thema, sondern ein Datenthema. Das Feld compare_at_price zeigt an, dokumentiert aber nichts — die Preis-Historie, die § 11 PAngV voraussetzt, müssen Sie selbst aufbauen: mit einer Tracking-App (ab 5 USD/Monat), einer sauberen Widget-Integration im Theme und einer Export-Routine vor jeder Kampagne.
Die Reihenfolge entscheidet: Tracking-App mit Vorlauf installieren, Preisanzeige-Stellen im Theme inventarisieren, dann erst die Aktion fahren. Wer umgekehrt vorgeht, hat im entscheidenden Moment keine Historie.
Wenn Sie nicht sicher sind, wo Ihr Shop steht: Auf meiner Compliance-Seite finden Sie das Technik-Audit für 490 € — ein technischer Prüfbericht nach festem Prüfkatalog, der neben der Preisauszeichnung auch Grundpreise, Pflichtangaben und Checkout abdeckt. Die Rechtsfragen dahinter gehören zu Anwalt, Händlerbund oder IT-Recht Kanzlei — die technische Umsetzung ihrer Vorgaben ist mein Teil.
Häufige Fragen
Trackt Shopify den 30-Tage-Bestpreis automatisch?
Nein. Shopify speichert keine Preis-Historie und berechnet kein 30-Tage-Minimum. Das Feld compare_at_price ist frei beschreibbar und wird von Importen, Bulk-Edits und Apps ohne Protokoll überschrieben. Für das Tracking brauchen Sie eine spezialisierte App oder eine eigene Lösung über Metafelder und Automationen.
Reicht der Vergleichspreis (compare at price) für Streichpreise aus?
Technisch gesehen ist der Vergleichspreis nur ein Anzeigefeld: Er erzeugt den durchgestrichenen Preis im Theme, dokumentiert aber weder, ob dieser Preis je verlangt wurde, noch wie lange. Die Historie und der Bestpreis-Hinweis, die § 11 PAngV bei Preisermäßigungen voraussetzt, kommen aus einer Tracking-App oder eigener Dokumentation — nicht aus dem Feld selbst.
Was kostet eine Omnibus-App für Shopify?
Die spezialisierten Apps liegen zwischen 5 und 15 USD pro Monat: Omnibus Price History (Netkodo) kostet 5–10 USD/Monat, Complimus 14,90 USD/Monat. Die DE-fokussierte Kombi-App ShopCompliance (Omnibus plus GPSR plus WEEE) gibt es von Free bis 199 USD/Monat. Dazu kommt einmalig die Einrichtung und Theme-Integration.
Wann sollte ich die Tracking-App installieren?
So früh wie möglich vor der ersten Rabattaktion — technisch beginnt die Preis-Historie erst mit der Installation. Eine App, die drei Tage vor dem Sale installiert wird, kennt nur drei Tage Preisgeschichte. Planen Sie deshalb deutlichen Vorlauf ein und lassen Sie das Tracking dauerhaft laufen.
Gilt die 30-Tage-Regel auch für Rabattcodes und automatische Rabatte?
Welche Rabattformen im Einzelfall unter § 11 PAngV fallen, ist eine Rechtsfrage für Anwalt oder Händlerbund. Technisch relevant ist: Rabattcodes und automatische Rabatte senken den gezahlten Preis, ohne die Produktdaten zu verändern — sie tauchen daher in keiner compare_at-basierten Anzeige auf. Dokumentieren Sie diese Preisbewegungen separat, damit Ihr Rechtsberater eine belastbare Grundlage hat.
Wer geht gegen fehlerhafte Preiswerbung vor?
Unter anderem die Wettbewerbszentrale: Sie bearbeitete 2025 insgesamt 644 Fälle im Bereich Preiswerbung (gesamt, plus 11,6 Prozent gegenüber Vorjahr), mit Schwerpunkt auf dem 30-Tage-Referenzpreis nach § 11 PAngV. Dazu kommen Abmahnungen von Mitbewerbern und Verbänden — die Verteidigung im konkreten Fall gehört in anwaltliche Hände.
Weiterführende Artikel
- Checkout Conversion Rate steigern – Rabatte konvertieren nur, wenn der Checkout mitspielt: 15 datenbasierte Strategien gegen Warenkorbabbrüche.
- Online Store 2.0 und Sections Everywhere – Wie App-Blocks im Theme funktionieren — die Grundlage für jede saubere Widget-Integration.
- Shopify Flow vs. Custom-Automatisierung – Wenn Preisänderungen automatisiert laufen, gehört ein Protokoll dazu: die richtige Automatisierungs-Architektur.

Geschrieben von
Justin Kreutzmann
Shopify-Entwickler für Custom Apps, ERP-Integrationen und Prozessautomatisierung. Ich helfe Marken, technische Grenzen zu überwinden — mit Lösungen, die im Alltag von Händlern wirklich funktionieren.
Projekt anfragen

