Zurück zum Blog
Recht & Compliance06. Oktober 2026

GARAN-Label und Gewährleistungshinweis in Shopware 6: die technische Umsetzung

Die Frist ist vorbei. Seit dem 27. September 2026 müssen Shops, die körperliche Waren an Verbraucher in der EU verkaufen, den harmonisierten Gewährleistungshinweis zeigen — und bei qualifizierten Herstellergarantien das GARAN-Label. Eine Übergangsfrist gibt es nicht. Shopware hat die Funktion mit 6.7.14 in den Core gebracht, in jeder Edition. Das Problem in der Praxis ist ein anderes: Das Update allein zeigt nichts an. Dieser Beitrag zeigt, was tatsächlich erfüllt sein muss, damit ein Label erscheint — und wo es im angepassten Theme oder im Headless-Frontend stillschweigend fehlt.

1. Zwei Labels, zwei völlig verschiedene Aufgaben

Die beiden Pflichten werden gern in einen Topf geworfen, technisch haben sie fast nichts miteinander zu tun. Der harmonisierte Hinweis auf die gesetzliche Gewährleistung ist statisch: identischer Text für jedes Produkt, eine Fassung pro Sprache, zu zeigen vor Abschluss der Bestellung und in der Bestellbestätigung. Das ist eine Einstellung, kein Datenprojekt.

Das GARAN-Label ist das Gegenteil. Es ist produktspezifisch und nur dann zu zeigen, wenn der Hersteller eine kostenlose Haltbarkeitsgarantie über die gesamte Ware von mehr als zwei Jahren gewährt. Auf dem Label stehen drei Dinge: Marke, Modellkennung und Dauer in Jahren. Rechtsgrundlage ist die Durchführungsverordnung (EU) 2025/1960 zur EmpCo-Richtlinie (EU) 2024/825. Der Name GARAN wurde gewählt, weil er in mehreren EU-Sprachen als „Garantie“ lesbar ist; auf dem Label sitzt ein fester QR-Code zum Verbraucherportal der EU.

Der entscheidende Satz für die Projektplanung: Ob ein Produkt qualifiziert, entscheidet nicht Shopware. Das ist eine Bewertung pro Artikel, und sie braucht eine Bestätigung des Herstellers. Reine B2B-Shops sind grundsätzlich nicht betroffen — gemischte Shops schon, für ihren Verbraucherteil.

2. Was 6.7.14 mitbringt — und wo es steckt

Der native Support kam mit Shopware 6.7.14 und wird auf den 6.6er-Zweig zurückportiert, in allen Plänen inklusive Community Edition. Das Release vom 1. Oktober (6.7.15.0) hat die Umsetzung noch einmal nachgeschärft; wer das Label ausliefert, nimmt also besser den aktuellen Patch-Stand mit.

Am Produkt gibt es ein neues Feld guaranteeMonths. Es ist entweder leer oder ein Halbjahreswert über 24 Monaten — also 30, 36, 42 und so weiter. Diese Stufung ist kein Zufall, sondern folgt dem Label selbst, das Dauern in ganzen und halben Jahren ausgibt. In der Administration sitzt dazu auf der Produktdetailseite eine eigene Karte mit zwei Feldern: der Garantiedauer und einem Schalter, der das Label in der Storefront freigibt. Beide Felder unterstützen Varianten-Vererbung, man pflegt die Garantie also am Containerprodukt und überschreibt sie nur dort, wo sie abweicht.

Der Gewährleistungshinweis läuft komplett über Konfiguration: core.cart.showLegalGuaranteeNotice, in der Administration unter Einstellungen → Warenkorb → Checkout, und er ist pro Verkaufskanal überschreibbar. Shopware liefert das Original-Artwork der EU in allen 24 Amtssprachen mit und wählt die Fassung passend zur Storefront-Sprache; für Sprachen außerhalb dieses Satzes fällt es auf Englisch zurück. Im Checkout erweitert sich der Text neben der AGB-Checkbox um einen Link, der den Hinweis in einem Modal öffnet.

3. Die vier Bedingungen — und warum trotzdem nichts erscheint

Das ist der Punkt, an dem die meisten Projekte hängen. Shopware rendert das GARAN-Label nur, wenn alle vier der folgenden Bedingungen erfüllt sind:

  • Der Schalter am Produkt ist aktiv.
  • Eine gültige Dauer über 24 Monaten ist hinterlegt.
  • Dem Produkt ist ein Hersteller zugeordnet.
  • Eine Herstellernummer ist gesetzt.

Fehlt eine davon, erscheint kein Label — ohne Fehler, ohne Warnung, ohne Hinweis im Admin. Und genau die beiden letzten Bedingungen sind in vielen Katalogen Baustellen: Hersteller und Herstellernummer sind Felder, die bei Importen aus ERP oder PIM gern leer bleiben, weil sie bisher niemand gebraucht hat. Das lässt sich in zwei Minuten prüfen:

SELECT COUNT(*) AS freigegeben_aber_unvollstaendig
FROM product
WHERE guarantee_months > 24
  AND (product_manufacturer_id IS NULL
       OR manufacturer_number IS NULL
       OR manufacturer_number = '');

Alles über null ist eine Liste von Produkten, bei denen jemand die Garantie gepflegt hat und der Shop sie trotzdem nicht zeigt. Wegen der Varianten-Vererbung lohnt derselbe Blick zusätzlich auf Varianten, deren parent_id gesetzt ist — geerbte Werte stehen dort nicht zwingend in der eigenen Zeile.

4. Store-API und Twig-Filter: die Schnittstellen

Für eigene Integrationen gibt es zwei neue Store-API-Routen. GET /store-api/product/{productId}/garan-label liefert das EU-harmonisierte Label als SVG, in voller und in verschachtelter Variante, für Produkte mit Hersteller und vollständigen Labeldaten. GET /store-api/legal-guarantee-notice liefert den gesetzlichen Gewährleistungshinweis, übersetzt in alle 24 Amtssprachen.

Im Twig-Umfeld stehen fünf Filter bereit: sw_garan_label, sw_garan_label_nested, sw_garan_label_data_uri, sw_garan_label_nested_uri und sw_garan_label_duration. Für den Hinweis gibt es sw_legal_guarantee_notice und sw_legal_guarantee_notice_link.

Die Unterscheidung zwischen den Inline- und den data:-URI-Varianten ist keine Geschmacksfrage. Mailclients strippen Inline-<svg>-Markup — deshalb gehört in die Bestellbestätigungs-Mail die base64-kodierte Data-URI-Fassung. Wer eigene Mail-Templates pflegt und dort einfach sw_garan_label einsetzt, hat ein Label, das im Browser-Preview sauber aussieht und beim Empfänger verschwindet. Shopware bindet das Label im Standard-Template direkt neben der betroffenen Position ein; angepasste Templates erben das nicht.

5. Das angepasste Theme ist die eigentliche Falle

Im Standard-Theme sitzt das Label als kompakte Vorschau unterhalb der Buy-Box; ein Klick öffnet die volle Fassung mit Marke, Modellkennung und Dauer. Dazu erscheint es neben den betroffenen Positionen im Warenkorb und auf der Bestellbestätigungsseite. Der Gewährleistungshinweis hängt am Checkout-Confirm-Block.

Alle diese Stellen sind Blöcke, die in einem eigenen Theme überschrieben sein können. Wer buy-widget, die Warenkorb-Line-Items oder den Confirm-Schritt in den letzten Jahren angefasst und dabei einen Block vollständig ersetzt statt mit {{ parent() }} erweitert hat, bekommt die neuen Inhalte nicht — und merkt es nicht, weil nichts bricht. Die Prüfung ist unspektakulär und unverzichtbar: ein Produkt mit vollständigen Garantiedaten anlegen und die vier Oberflächen im eigenen Theme einzeln ansehen, Desktop und Mobil. Dann denselben Durchlauf für den Hinweis im Checkout und für die Bestätigungsmail.

Für die Diagnose hilft der Umweg über die Store-API: Liefert /store-api/product/{productId}/garan-label ein SVG, sind die Produktdaten in Ordnung und das Problem sitzt im Template. Liefert sie nichts, fehlt eine der vier Bedingungen aus Abschnitt 3. Das trennt Datenproblem und Theme-Problem in einem einzigen Request.

6. Headless: hier ist nichts geschenkt

Bei einem entkoppelten Frontend gilt das, was bei Shopware-Compliance-Features immer gilt: Die Storefront-Integration ist genau das, was dir fehlt. Der Core liefert die Daten und das Artwork, aber keine React-Komponente baut sich selbst. Die beiden Store-API-Routen sind der komplette Lieferumfang.

Drei Dinge sind dabei konkret zu bedenken. Erstens: Das Label kommt als SVG, nicht als JSON — es wird eingebettet, nicht nachgebaut. Das Artwork ist rechtlich festgelegt, eine eigene Nachzeichnung in Tailwind ist keine zulässige Umsetzung. Zweitens: Der Gewährleistungshinweis muss vor Abschluss der Bestellung sichtbar sein, also im eigenen Checkout-Flow, nicht erst auf einer Danke-Seite. Drittens der Cache. Beide Routen sind gute Kandidaten für langlebiges Caching — der Hinweis ändert sich praktisch nie, das Label nur wenn sich Garantiedaten ändern. Mit Next.js heißt das ein großzügiges revalidate plus Cache-Tag pro Produkt, damit eine Änderung an guaranteeMonths gezielt invalidiert. Wie das mit den aktuellen Caching-Primitiven zusammenspielt, steht ausführlich in Cache Components in Next.js 16.

Und ein Nebenaspekt, der gern vergessen wird: Die Bestellbestätigungsmail rendert Shopware weiterhin selbst, mit Twig — auch bei einem Headless-Frontend. Dort gilt die Data-URI-Regel aus Abschnitt 4 unverändert.

7. Die Reihenfolge, in der ich das abarbeiten würde

Den Hinweis zuerst, weil er in zehn Minuten erledigt ist: Einstellung aktivieren, pro Verkaufskanal prüfen, Checkout und Bestätigungsmail einmal durchklicken. Er gilt für praktisch jeden B2C-Verkauf körperlicher Waren und ist damit die Pflicht mit der größten Reichweite und dem kleinsten Aufwand.

Danach die Datenseite des Labels, und zwar getrennt in zwei Fragen. Die erste ist kaufmännisch und dauert Wochen: Für welche Artikel gibt es überhaupt eine kostenlose Herstellergarantie über zwei Jahre hinaus, und bestätigt der Hersteller das belastbar? Die zweite ist technisch und dauert einen Vormittag: Sind Hersteller und Herstellernummer für genau diese Artikel vollständig, und schreibt der ERP- oder PIM-Import sie zuverlässig mit? Wer Teil zwei vor Teil eins erledigt, pflegt Daten für Produkte, die später aus der Liste fallen.

Zum Schluss die Darstellung im eigenen Theme beziehungsweise im eigenen Frontend. Und eine letzte Einordnung, weil sie oft untergeht: Shopware stellt die technische Möglichkeit bereit, die rechtliche Bewertung bleibt beim Händler — ob ein Produkt qualifiziert und ob die Platzierung im konkreten Shop hinreichend deutlich ist. Dieser Beitrag beschreibt die Technik und ist keine Rechtsberatung; bei Zweifeln zum eigenen Sortiment gehört das zu einem Anwalt. Kontext zur Rechtslage und zu den übrigen EmpCo-Pflichten steht in EmpCo ab 27. September 2026.

Zeigt dein Shop die Labels wirklich an?

Ich prüfe Versionsstand, Produktdaten, Theme-Overrides und — falls entkoppelt — das Frontend, und sage dir, wo konkret nichts gerendert wird. Kein Sales-Call.

Schriftlich oder im Gespräch — 15 minuten, unverbindlich.

Bereit für den nächsten Sprint? Lass uns sprechen.

Dieser Link führt zu Google Calendar (Google Ireland Ltd.). Es gelten die Datenschutzbestimmungen von Google.