Ein Theme-Refresh ist kein Relaunch
Ein Theme-Refresh überarbeitet das Markup, das Ihr Shopware-Theme ausliefert — Überschriften, HTML-Struktur, strukturierte Daten, Bilder, Schriften, Skripte —, und lässt alles andere stehen. Produkte, Kategorien, Kunden und Bestellungen bleiben unberührt, die Adressen bleiben dieselben, und das Design ändert sich nur dort, wo eine Änderung im Markup es verlangt. Der Grund für diesen Zuschnitt ist schlicht: Ein Crawler sieht kein Design. Er sieht, was im HTML steht, in welcher Reihenfolge und wie schnell. Genau dort setzt der Refresh an.
Zum Refresh gehört auch, was andere Erweiterungen in die Storefront schreiben. Jedes Plugin, das etwas anzeigt — Bewertungen, Siegel, Cross-Selling, Cookie-Hinweis, Chat —, bringt eigenes Markup, eigene Skripte und eigene Stile mit, und im Theme fügt sich all das zu einer Seite. Wir prüfen deshalb nicht das Theme allein, sondern die ausgelieferte Seite je Seitentyp. Und wir sagen es, wenn die Ursache woanders liegt: Ein Server, der zwei Sekunden bis zum ersten Byte braucht, wird durch kein Theme schnell, und zu dünne Produkttexte werden durch sauberes Markup nicht länger.
Ein Refresh räumt außerdem die Vererbung auf, denn sie entscheidet, ob die Verbesserungen das nächste Update überstehen. Ein gesundes Shopware-Theme ist ein eigenes Theme, das vom Standard-Theme erbt und nur die Twig-Blöcke überschreibt, die es ändern muss — per sw_extends, Block für Block. Ein Theme, das ganze Templates kopiert hat, behält deren alten Stand, egal was Shopware ändert. Mit Shopware 6.7 ist das konkret geworden: Der Barrierefreiheits-Umbau hat in der Storefront Markup, ARIA-Attribute und Blockstruktur verändert, die Pagination läuft über Links statt über Radio-Inputs, Header und Footer laden per ESI. Eine Kopie bekommt davon nichts mit. Deshalb bauen wir kopierte Templates im Refresh zu gezielten Block-Overrides zurück.
Markup, das Maschinen lesen können
Die H1 einer Seite benennt, worum es auf dieser Seite geht: auf der Kategorieseite die Kategorie, auf der Produktseite das Produkt, auf der Startseite den Shop. Das Logo ist ein Link zur Startseite, keine Überschrift; Slider-Titel und Teaser-Zeilen sind Gestaltung, keine Gliederung. Darunter folgen H2 und H3 der Struktur des Inhalts, nicht der gewünschten Schriftgröße — die regelt das CSS. Dieselbe Ordnung brauchen Screenreader, und für die meisten Onlineshops, die an Verbraucher verkaufen, gehört sie seit dem 28. Juni 2025 zu den Anforderungen des Barrierefreiheitsstärkungsgesetzes. Wir legen die Hierarchie je Seitentyp im Theme fest, damit sie nicht in jeder Erlebniswelt neu verhandelt wird.
Was zitiert werden soll, muss im ausgelieferten HTML stehen. Texte in Tabs sind dafür kein Problem, solange sie beim Laden der Seite im Quelltext stehen und nur optisch eingeklappt sind. Problematisch sind Inhalte, die erst nach einem Klick oder in einem Off-Canvas per JavaScript nachgeladen werden: Google rendert JavaScript, klickt aber nicht, und nicht jeder KI-Crawler führt überhaupt JavaScript aus. Wir vergleichen deshalb je Seitentyp den rohen Quelltext mit der gerenderten Seite und holen die tragenden Inhalte — Produktbeschreibung, Eigenschaften, Lieferangaben, die wichtigsten internen Links — in das, was der Server ausliefert.
Strukturierte Daten übersetzen die Seite für Maschinen, und im Shop zählen vor allem fünf Typen: Product mit Name, Artikelnummer, GTIN, Marke und Bild; Offer mit Preis, Währung, Verfügbarkeit und, wo es passt, Versand- und Rückgabeangaben; BreadcrumbList passend zur sichtbaren Brotkrumennavigation; Organization einmal für die Firmenfakten; FAQPage nur dort, wo Fragen und Antworten tatsächlich auf der Seite stehen. Was Ihr Theme heute ausgibt — Microdata im Template, JSON-LD aus einem Plugin oder beides mit widersprüchlichen Werten —, prüfen wir am ausgelieferten Quelltext, nicht an der Plugin-Beschreibung. Die Regel dahinter ist streng und einfach: Das Markup beschreibt, was auf der Seite sichtbar ist. Ein B2B-Shop, der Preise erst nach dem Login zeigt, gibt sie auch im Markup nicht an anonyme Besucher aus.
Core Web Vitals: wo das Theme Zeit verliert
Google misst die Nutzererfahrung über drei Werte, und für jeden gibt es eine Schwelle, ab der er als „gut“ gilt: Largest Contentful Paint (LCP), die Zeit, bis der größte sichtbare Inhalt steht, höchstens 2,5 Sekunden; Interaction to Next Paint (INP), wie schnell die Seite auf Eingaben reagiert, höchstens 200 Millisekunden; Cumulative Layout Shift (CLS), wie stark das Layout beim Laden springt, höchstens 0,1. INP hat im März 2024 den früheren Wert First Input Delay abgelöst. Gemessen wird an echten Besuchen, bewertet am 75. Perzentil — drei Viertel der Aufrufe müssen die Schwelle schaffen, nicht der Testlauf auf dem Bürorechner.
Die typischen Bremsen sitzen im Theme. Beim LCP ist es meist das Bild oben auf der Seite: ein Slider, der erst nach seinem Skript lädt, ein Hero-Bild mit Lazy Loading, das gerade nicht verzögert werden sollte, eine Datei in Druckauflösung. Beim CLS sind es Bilder ohne feste Maße, Webfonts, die spät eintreffen und die Zeilen neu umbrechen, und Banner, die sich nachträglich in den Inhalt schieben. Beim INP sind es Skripte: Tracking, Chat, Bewertungs-Widgets, Consent-Lösung und Plugin-Code, der auf jeder Seite läuft, obwohl er nur auf einer gebraucht wird. Jede einzelne Ursache ist klein; im Theme sieht man sie alle auf einmal.
Gemessen wird vorher und nachher, mit denselben Werkzeugen. Die Felddaten aus dem Chrome User Experience Report und dem Core-Web-Vitals-Bericht der Search Console zeigen, was echte Besucher erleben — sofern genug Besuche vorliegen —, laufen aber über ein rollierendes 28-Tage-Fenster nach. Laborwerte aus Lighthouse zeigen sofort, ob eine Änderung wirkt, sind aber eine Simulation. Wir dokumentieren beide je Seitentyp, bevor wir etwas ändern, und noch einmal, wenn die Felddaten den neuen Stand abbilden. Verliert der Server die Zeit — Development-Modus, abgeschalteter HTTP-Cache, zu viele Plugins im Request-Pfad —, steht das im Befund, und dann ist das Theme nicht die erste Baustelle.
Kategorien, Filter, Sprachen: Adressen ohne Doppelungen
Jede Kategorieseite sollte unter genau einer Adresse ranken, und ihre gefilterten und sortierten Fassungen verweisen per Canonical auf sie. Ausnahmen sind Kombinationen, nach denen tatsächlich gesucht wird — etwa Kategorie und Marke —; sie verdienen eine eigene, indexierbare Seite mit eigenem Text statt eines Filterzustands. Wichtig ist die Reihenfolge der Werkzeuge: Eine Adresse, die per robots.txt gesperrt ist, kann Google nicht abrufen und damit auch ihren Canonical nicht lesen. Wer Filterseiten aus dem Index halten will, sperrt sie deshalb nicht pauschal, sondern entscheidet je Parameter zwischen Canonical, noindex und gar keinem Link.
Bei der Paginierung bekommt jede Seite ihren eigenen Canonical; Seite 2 auf Seite 1 zu verweisen, versteckt die Produkte dahinter. Seit Shopware 6.7 läuft die Pagination im Standard über Links statt über Radio-Inputs — einem Formularfeld folgt kein Crawler, einem Link schon. Ein Theme, das den alten Block überschrieben hat, bringt die alte Bauweise zurück. Bei mehreren Sprachen oder Verkaufskanälen kommt hreflang dazu: Jede Sprachfassung nennt alle anderen und sich selbst, gegenseitig und mit Adressen, die tatsächlich erreichbar sind. Fehlt die Gegenrichtung, ignoriert Google die Angabe. Wir prüfen die Ausgabe je Kanal und Sprache, statt uns auf eine Einstellung in der Verwaltung zu verlassen.
Zitierfähig für ChatGPT, Perplexity und die KI-Übersicht
Für die Sichtbarkeit in KI-Antworten arbeiten wir in fünf Schritten — Zugang, Technik, Text, Daten, Messen —, und drei davon entscheiden sich im Theme. Der Zugang liegt meist außerhalb, und an ihm scheitert es öfter als am Markup: an der robots.txt, an einer Firewall-Regel des Hosters oder an Cloudflare, wo Bot-Schutz und eine eigene Einstellung gegen KI-Crawler pauschal blockieren können, was die robots.txt erlaubt. Unterscheiden muss man dabei genau. OAI-SearchBot, PerplexityBot und Bingbot holen Inhalte für Antworten, GPTBot und ClaudeBot sammeln vor allem Trainingsdaten. Google-Extended ist kein eigener Crawler, sondern eine Kennung, die nur die Nutzung in den Gemini-Anwendungen steuert — auf die KI-Übersichten der Google-Suche hat sie keinen Einfluss, die speisen sich aus dem normalen Suchindex. Wer Training ausschließen und trotzdem zitiert werden will, regelt die Kennungen einzeln.
Danach entscheidet das Theme, was ein Modell zu lesen bekommt. Sprachmodelle zitieren Absätze, keine Seiten; ein Absatz, der mit der Antwort beginnt, ist zitierfähig, einer, der mit „Herzlich willkommen in unserem Shop“ anfängt, nicht. Im Theme heißt das: Die Produktbeschreibung steht weit oben im Quelltext und nicht hinter drei Bannern, Eigenschaften stehen als Tabelle im HTML und nicht im Bild, Firmenname, Ort und Kontakt stehen im Klartext und im Organization-Markup statt nur als Grafik im Footer. Die Texte selbst schreibt Ihre Redaktion oder entstehen in unserem Content-Konzept; das Theme sorgt dafür, dass ihr Aufbau beim Crawler ankommt. Eine llms.txt kann einen kuratierten Einstieg ergänzen. Sie ist ein vorgeschlagenes Format, kein verbindlicher Standard, und ersetzt keinen der Schritte davor.
Gemessen wird ehrlich, und das heißt: näherungsweise. In den Server-Logs sieht man, ob und wie oft die Crawler der KI-Dienste tatsächlich abrufen und welche Seiten. In der Webanalyse lassen sich Besuche mit Herkunft aus ChatGPT oder Perplexity auswerten. Und mit festen Testfragen an ChatGPT, Perplexity und die KI-Übersicht von Google lässt sich stichprobenartig protokollieren, welche Quellen genannt werden — vorher und nachher, mit denselben Fragen. Ein Ranking wie in der klassischen Suche gibt es dabei nicht, weil Antworten je nach Formulierung und Zeitpunkt schwanken. Einen Platz in KI-Antworten kann niemand zusagen, auch Sharpness (Oldenburg) nicht. Wir zeigen, was sich ändert.