Was laufende Shopware-Wartung tatsächlich umfasst
Shopware-Wartung besteht aus vier Arbeiten, die technisch wenig miteinander zu tun haben. Die erste sind Sicherheits- und Bugfix-Releases innerhalb der laufenden Linie: prüfen, ob die Installation betroffen ist, auf Staging einspielen, Backend, Checkout, Zahlarten, Mailversand und Bestelldokumente durchgehen, dann deployen. Nicht am Erscheinungstag und nicht blind — ein x.x.x.0-Release wandert bei uns nicht direkt in den Livebetrieb, weil Shopware einzelne davon nach der Veröffentlichung wieder gesperrt hat — zuletzt 6.7.12.0 vom 7. Juli 2026, nicht installierbar wegen einer Inkompatibilität mit Twig 3.28, ersetzt durch 6.7.12.1. Wir warten auf einen belastbaren Patch-Stand und ziehen ihn dann nach, statt eine Version zu überspringen und den Abstand wachsen zu lassen. Updates fahren wir über die Kommandozeile, nicht über den grafischen Updater, weil nur so nachvollziehbar bleibt, was passiert ist.
Die zweite Arbeit ist die Plugin-Kompatibilität, und sie ist die undankbarste. Zu jedem Update gehört die Frage, welche Erweiterung eine passende Fassung hat, welche noch einen Betreuer hat und welche im Shop steht, ohne benutzt zu werden. Store-Plugins, gekaufte Erweiterungen und eigener Code haben dabei drei verschiedene Lebenszyklen. Wir halten den Composer-Stand sauber statt Versionen zu pinnen, bis nichts mehr auflösbar ist, und wir führen eine Liste, die sagt: Diese Erweiterung wird gepflegt, diese wird beim nächsten Major ersetzt, diese wird deinstalliert. Eigene Plugins bauen wir gegen die Extension-Punkte von Shopware, nicht in den Core hinein — Core-Hacks sind der häufigste Grund, warum ein Shop mehrere Versionen hinterherhängt.
Die dritte Arbeit ist der Unterbau, die vierte das Hinsehen. Zum Unterbau gehören PHP- und Datenbankversion, Objekt-Cache in Redis oder Valkey, HTTP-Cache, Suchindex, Message Queue, Cronjobs, Zertifikate, Deployment-Weg und Backups mit einem Rücksicherungstest, der auch wirklich gelaufen ist. Ein Backup, das nie zurückgespielt wurde, ist eine Vermutung. Zum Hinsehen gehören die Logs, der Rückstau in der Queue, die Laufzeit des nächtlichen Imports, die Fehlerrate im Checkout und das Wachstum der Tabellen, die still größer werden. Deprecation-Meldungen lesen wir mit, weil sie die Bruchstellen des nächsten Majors ankündigen, während noch Zeit ist. Am Ende steht ein Protokoll der durchgeführten Arbeiten — vorlegbar, ohne dass jemand erst suchen muss.
„Es läuft“ ist kein Pflegezustand
Ein Shopware-Shop, den zwei Jahre niemand angefasst hat, funktioniert. Er nimmt Bestellungen an, verschickt Rechnungen, zeigt Bestände — bis er es nicht mehr tut. Der Unterschied zwischen „es läuft“ und „es ist gepflegt“ ist kein Zustand des Shops, sondern die Länge des Weges zurück auf den aktuellen Stand. Bei einem gepflegten Shop ist das nächste Update ein Wartungsfenster. Bei einem ungepflegten ist es eine Kette: Core-Sprung, Plugins ohne Nachfolger, PHP-Version, Datenbank, dazwischen individueller Code, den niemand dokumentiert hat. Jeder Schritt hängt am vorherigen, und der Termin richtet sich nicht nach Ihrem Kalender, sondern nach dem, was zuerst bricht.
Shopware 6.7 ist dafür das aktuelle Lehrstück. Der Wechsel von 6.6 auf 6.7 ist der größte technische Umbau seit dem Start von Shopware 6 — Vue 3, Vite, Pinia in der Administration —, und der Aufwand entspricht deshalb eher einem Major-Sprung als einem Punkt-Release. Wer seinen Shop laufend gepflegt hat, hatte zu diesem Zeitpunkt eine überschaubare Liste eigener Anpassungen und eine geklärte Plugin-Landschaft; für die großen Store-Plugins liegen seit Anfang 2026 kompatible Fassungen vor, anders als in den ersten Monaten nach dem Release von 6.7 im Juni 2025. Wer nicht gepflegt hat, hat dieselbe Arbeit zusätzlich zu allem, was in der Zwischenzeit angefallen ist. Shopware 6.8 wird für 2027 erwartet. Der nächste Termin steht damit schon fest, auch wenn das Datum fehlt.
Was ein Wartungsvertrag nicht kann: einen Einbruch verhindern oder Verfügbarkeit garantieren. Er verkürzt das Fenster zwischen einem veröffentlichten Fehler und dem eingespielten Patch, hält den Unterbau auf einem unterstützten Stand, macht Störungen früher sichtbar und belegt, wann gehandelt wurde. Prozentzahlen zur Verfügbarkeit nennen wir nicht, weil sie in einem selbst gehosteten Shop von Dingen abhängen, die wir nicht alle in der Hand haben. Und wenn eine Monatspauschale sich für Ihren Shop nicht rechnet — kleines Sortiment, vier Erweiterungen, kein ERP —, sagen wir das und schlagen stattdessen geplante Update-Aufträge in festem Rhythmus vor. Ein Vertrag, der mehr kostet als er verhindert, ist für beide Seiten ein schlechtes Geschäft.
Warum ein Shop mehr Pflege braucht als eine Website
Bei einer Website ist ein Fehler ein Darstellungsproblem. Bei einem Shop ist er eine geschlossene Kasse, und zwar meist eine, die von außen nicht zu sehen ist: Der Shop lädt, der Katalog funktioniert, nur die Bestellung geht seit heute Morgen nicht durch. Deshalb gehören in das Monitoring eines Shops andere Werte als in das einer Website — nicht nur Erreichbarkeit und Zertifikat, sondern die Zahl der eingegangenen Bestellungen im Verhältnis zum üblichen Tagesverlauf, die Fehlerrate im Bestellprozess, der Zustand der Queue und die Laufzeit der Indexierung. Ein Shop, der eine Stunde keine Bestellung annimmt, hat entweder Feiertag oder ein Problem.
Der zweite Unterschied sind die Zahlungsanbieter. Ein Shop hängt an Dritten, die ihre Schnittstellen nach ihrem eigenen Kalender ändern: neue API-Version, geänderte Webhook-Nutzlast, auslaufende Zertifikate, angepasster Ablauf bei der Kundenauthentifizierung, abgekündigte Endpunkte mit Frist. Diese Änderungen kommen unabhängig davon, ob Sie gerade ein Projekt haben, und sie treffen genau die Stelle, an der Geld fließt. Shopware 6.7 hat obendrein die Zahlungs-Handler auf die einheitliche Basisklasse AbstractPaymentHandler umgestellt — Zahlungserweiterungen sind an diesem Punkt also von zwei Seiten in Bewegung. Wartung heißt hier: die Ankündigungen der Anbieter mitlesen und die Zahlart nach jedem Update gegen einen echten Testkauf fahren, nicht gegen einen Blick auf die Startseite.
Der dritte Unterschied ist die Warenwirtschaft. Eine ERP-Anbindung bricht bei Updates auf beiden Seiten, und die Updates auf der ERP-Seite kündigt Ihnen niemand über den Shop an. Dazu kommen die Fragen, die keine technischen sind: Welches System besitzt den Preis, welches den Bestand, welches die Beschreibung? Was passiert, wenn der Import mitten im Lauf abbricht — bleibt der halbe Stand stehen? Darf derselbe Datensatz zweimal geschrieben werden, ohne Schaden anzurichten? Und wer liest das Fehlerprotokoll? Seit Shopware 6.6 ist der Bestand ein Echtzeitwert: product.stock wird über die Bestell-Events fortgeschrieben, der frühere verfügbare Bestand ist nur noch ein schreibgeschützter Spiegel desselben Feldes. Abweichungen zum ERP sind deshalb fast immer ein Synchronisations- oder Reservierungsproblem. Solche Abweichungen fallen ohne laufende Kontrolle erst auf, wenn ein Kunde etwas kauft, das nicht mehr da ist.
Übernahme eines fremden Shops: erst ansehen, dann zusagen
Der häufigste Anlass für eine Wartungsanfrage ist ein Shop, den jemand anders gebaut hat. Wir übernehmen solche Shops, aber nicht ungesehen. Vor der Zusage steht eine Bestandsaufnahme, und die Liste ist immer dieselbe: Shopware-Version und Patch-Stand, Composer-Setup oder dessen Fehlen, Plugin-Liste mit Herkunft und Lizenzlage, Umfang und Zustand des eigenen Codes, Eingriffe in den Core, Theme und Twig-Anpassungen, Schnittstellen zu ERP, PIM, Versand und Zahlung. Dazu das Hosting: PHP- und Datenbankversion, Cache- und Suchdienste, Deployment-Weg, ob ein Staging existiert, wie die Backups aussehen und ob schon einmal eines zurückgespielt wurde. Gebraucht werden Shell- und Datenbankzugang, das Repository, der Shopware-Account und die Administratorrechte im Shop. Ohne SSH lässt sich ein Shopware-Projekt nicht sinnvoll betreuen.
Zur Bestandsaufnahme gehört die Auftragsverarbeitung, weil in einem Shop personenbezogene Daten liegen: Auftragsverarbeitungsvertrag nach Artikel 28 DSGVO, die Kette der Unterauftragnehmer, Serverstandort, Aufbewahrung der Backups, wer welche Zugänge hat und welche Konten längst gesperrt gehören. Bei Übernahmen finden wir dort regelmäßig offene Punkte: kein Vertrag mit dem bisherigen Dienstleister, Plugins auf den Namen der alten Agentur lizenziert, der Shopware-Account nicht auf Ihr Unternehmen ausgestellt, Zugänge, die noch bei Personen liegen, die dort nicht mehr arbeiten. Den vorgefundenen Zustand dokumentieren wir und lassen ihn schriftlich bestätigen, damit später unterscheidbar bleibt, was wir vorgefunden und was wir verursacht haben.
Und wir sagen ab. Nicht oft, aber es kommt vor: Änderungen quer durch den Core, die jedes Update zu einer Neuentwicklung machen; zentrale Individualentwicklung, die ohne Quellcode ausgeliefert wurde; ein Bestellprozess, dessen Verhalten niemand mehr erklären kann; Spuren einer Kompromittierung im Dateisystem oder in den Administratorkonten. Dann ist das kein Wartungsfall, sondern eine Sanierung oder ein Neuaufbau mit eigenem Angebot — und wir sagen das vor dem Vertrag, nicht im dritten Monat. Für einen Zustand, für den wir nicht geradestehen können, unterschreiben wir keine Reaktionszeit. Eine zugesagte Frist auf einem Shop, den man nicht versteht, ist eine Zusage, die im Ernstfall nicht hält.
Service-Level-Staffel, Erreichbarkeit und Betriebsmodell
Die Reaktionszeiten sind bei uns gestaffelt, und zwar in vier Stufen je Shop: BASIC mit 24 Stunden für Systeme, bei denen ein Ausfall Arbeit verschiebt, aber keinen Umsatz kostet. STANDARD mit 8 Stunden für Shops, die im Tagesgeschäft gebraucht werden. ADVANCED mit 4 Stunden für Shops mit laufendem Bestellvolumen und angebundenen Systemen. PREMIUM mit 2 Stunden für Systeme, bei denen jede Stunde Stillstand unmittelbar Geld kostet. Abgerechnet wird als Monatspauschale netto je Shop. Die Reaktionszeit sagt, wann jemand mit der Bearbeitung beginnt — nicht, wann das System wieder läuft; diese beiden Werte halten wir im Vertrag getrennt. Ohne Vereinbarung gilt weiterhin: Bearbeitung in Eingangsreihenfolge innerhalb von 48 Stunden zu den Geschäftszeiten Mo–Fr 9:00–16:00 Uhr.
Die Stufe wählt man nicht danach, welche Zahl beruhigend klingt, sondern über eine Rechnung, die Sie selbst aufmachen können: Was kostet eine Stunde Stillstand? Umsatz geteilt durch die Stunden, in denen er entsteht, ist der Anfang. Dazu die Bestellungen, die nicht nachgeholt werden, weil der Kunde beim Wettbewerber kauft, die Servicelast am Telefon, die Verzögerung in Lager und Versand, bei angebundener Warenwirtschaft der Aufräumaufwand für halb übertragene Daten. Wer diese Summe kennt, ordnet sich meist von selbst richtig ein. Zwei Dinge sind unabhängig von der Stufe: Außerhalb von Mo–Fr 9:00–16:00 Uhr geht hier niemand ans Telefon, wenn keine Rufbereitschaft vereinbart ist — und die kostet auch in den Monaten, in denen nichts passiert. Die Monatspauschale nennen wir nach der Bestandsaufnahme, nicht am Telefon: Sie hängt an der Zahl der Erweiterungen, am Umfang des eigenen Codes, an den Schnittstellen und an der gewählten Stufe.
Zum Betriebsmodell gehören zwei gleichwertige Wege. Entweder läuft der Shop auf unseren eigenen Servern in Deutschland, auf Proxmox-PVE-Clustern, mit passender PHP-Version, Objekt-Cache und Suchindex — dann liegen Betrieb und Wartung in einer Hand und die Verantwortungsgrenze entfällt. Oder wir betreuen ihn auf Ihrem bisherigen Hosting; dafür brauchen wir SSH-Zugang, einen sauberen Deployment-Weg, ein Staging-System und ausreichende PHP- und Datenbankversionen. Fehlt das, richten wir es dort ein oder rechnen den Umzug gegen, statt jede Wartung teurer zu machen als sie sein muss. Wo Hosting und Anwendung getrennt sind, halten wir die Verantwortungsgrenze vor dem Start schriftlich fest, damit im Störungsfall niemand erst sucht, wer zuständig ist. Und wir richten die Betreuung so ein, dass Sie sie beenden können: Quellcode in Ihrem Repository, Lizenzen und Zugänge auf Ihr Unternehmen, Domains auf Ihren Namen, Installation dokumentiert.