JTL-Shop-Monitoring vom Warenkorb bis zum Aufgabenplaner
XICTRAQ prüft Startseite, Warenkorb und Bestellvorgang Ihres JTL-Shops, erkennt den Wartungsmodus als geplante Pause statt als Ausfall und meldet per Heartbeat, wenn der Aufgabenplaner nicht mehr läuft. Der cookielose Tracker liest Artikelaufrufe, Warenkorb-Klicks und den Beginn des Bestellvorgangs aus dem NOVA-Template.
Diese Pfade zuerst prüfen
- Uptime-MonitoringStartseite mit Wartungserkennung
/ - Uptime-MonitoringWarenkorb als eigene Unterseite
/Warenkorb - Browser-MonitoringVom Artikel bis in den Bestellvorgang
/Bestellvorgang - Browser-MonitoringAnmeldung mit einem Testkunden
/Mein-Konto - SEO-Monitoringrobots.txt aus robots.php
/robots.txt
Warum ein Ping auf die Startseite nicht reicht
Ein JTL-Shop besteht aus mehr als der Startseite: Warenkorb, Bestellvorgang und Kundenkonto sind eigene Seiten, Plugins und Template greifen in den Kaufweg ein, und Exporte sowie der Newsletterversand laufen über den Aufgabenplaner. Ein Update kann an jeder dieser Stellen etwas verschieben, während die Startseite weiter mit HTTP 200 antwortet.
Dazu kommen Zustände, die JTL-Shop selbst schaltet. Im Wartungsmodus liefert der Shop unter derselben Adresse eine Wartungsseite mit HTTP 503 aus, und ohne eigenen Cronjob arbeitet der Aufgabenplaner Exporte und Newsletter nur nebenbei ab, wenn Besucher Seiten aufrufen. Von außen sieht das Erste wie ein Ausfall aus und das Zweite nach gar nichts.
XICTRAQ verteilt die Prüfung deshalb auf mehrere Module: Uptime-Monitoring mit Unterseiten und Wartungserkennung, Browser-Checks für den Weg bis in den Bestellvorgang, Heartbeats für den Aufgabenplaner, die Skript-Integrität für eingebundene Dritt-Skripte und die Prüfung der robots.txt.
Lassen Sie Browser-Checks vor dem Absenden der Bestellung enden, damit keine echten Bestellungen entstehen, und melden Sie sich dabei mit einem eigenen Testkunden an statt mit einem echten Kundenkonto.
Was in JTL-Shops typischerweise bricht
Wartungsmodus, geplant oder vergessen
Im Wartungsmodus liefert JTL-Shop unter derselben Adresse eine Wartungsseite mit HTTP 503 aus. Steht darin „Wartungsmodus“ oder „Wartungsarbeiten“, wertet XICTRAQ das als Wartung: Ausfall- und Inhaltsalarme pausieren, SSL, Domain und Blacklist werden weiter geprüft. Beginn und Ende stehen im Changelog, und ein Browser-Check schlägt auf der Wartungsseite fehl, sodass auch ein nach dem Update vergessener Wartungsmodus auffällt.
Serverfehler nach Update oder Plugin-Installation
Nach einem Shop-Update oder einer Plugin-Installation kann eine einzelne Seite wie der Warenkorb mit einem Serverfehler antworten, während die Startseite noch läuft. Das Uptime-Monitoring prüft neben der Startseite auch hinterlegte Unterseiten wie /Warenkorb oder /Mein-Konto und meldet jeden Pfad einzeln.
Kauf-Button oder Bestellvorgang reagiert nicht
Ein JavaScript-Fehler aus einem Plugin oder eine Template-Anpassung kann „In den Warenkorb“ lahmlegen, obwohl jede Seite mit HTTP 200 antwortet. Ein dafür angelegter Browser-Check öffnet eine Artikelseite, legt den Artikel in den Warenkorb, wechselt in den Bestellvorgang und hält beim fehlgeschlagenen Schritt einen Screenshot fest. Weil JTL-Shop mit leerem Warenkorb vom Bestellvorgang zurück zum Warenkorb leitet, gehört ein Schritt dazu, der die erreichte Adresse prüft, damit auch ein stiller Rücksprung auffällt.
Aufgabenplaner läuft nicht mehr
Exporte und Newsletter arbeitet JTL-Shop über den Aufgabenplaner ab. Ohne Cronjob läuft er nur nebenbei bei Seitenaufrufen mit, JTL empfiehlt deshalb einen echten Cronjob auf includes/cron_inc.php. Fällt dieser aus, bleibt der Shop erreichbar und eine Erreichbarkeitsprüfung sieht nichts. Ein Heartbeat erwartet nach jedem Lauf einen Ping und meldet, wenn er ausbleibt oder ein Fehlschlag gemeldet wird.
robots.txt sperrt alle Suchmaschinen
JTL-Shop liefert die robots.txt über robots.php aus. Landet beim Umzug oder beim Zurückspielen einer Testkopie ein „Disallow: /“ im Live-Shop, sperrt er alle Crawler aus. XICTRAQ meldet eine robots.txt, die alle Crawler blockiert, als kritischen Alarm und hält jede Änderung der Datei mit hinzugekommenen und entfernten Zeilen im Changelog fest.
Manipuliertes Dritt-Skript im Kaufweg
Zahlungs-, Chat- oder Marketing-Skripte fremder Anbieter laden im Shop mit. Die Skript-Integrität erfasst beim Scan den SHA-256-Hash externer Skripte, bis zu zwölf je Scan, und meldet, wenn sich ein Hash bei einem späteren Scan ändert. Liegt die geprüfte Seite unter einem Pfad wie /Warenkorb oder /Bestellvorgang, meldet sie zusätzlich neue externe Formularziele. Skripte von der eigenen Shop-Domain, etwa aus Plugins, gehören nicht zu dieser Prüfung.
Woran XICTRAQ JTL-Shop erkennt
Die Technikerkennung im Scan liest den Quelltext der geprüften Seite und legt das Ergebnis im Technikprofil ab. Der Tracker erkennt das NOVA-Template davon unabhängig im Browser.
- JTL-Shop an Spuren im Quelltext wie dem Hinweis „Powered by JTL-Shop“ im Fußbereich des NOVA-Templates oder Pfaden unter /plugins/jtl. Bei einer Lizenz ohne Herstellerhinweis entfällt die erste Spur.
- Die laufenden Prüfungen des Monitoring-Agenten lassen den erkannten Eintrag „JTL-Shop“ stehen, auch wenn sie ihn selbst nicht erkennen können.
- Im CRA-Komponenten-Cockpit erscheint JTL-Shop als Komponente ohne Versionsangabe und gilt damit als nicht bewertbar. Eine Versionsregel für JTL-Shop gibt es nicht; sichtbare Versionen von PHP, nginx, Apache, OpenSSL, jQuery oder Bootstrap gleicht XICTRAQ mit bekannten Schwachstellen ab.
- Wartung erkennt XICTRAQ an einer 503-Antwort mit „Wartungsmodus“ oder „Wartungsarbeiten“ im Text. Ein 503 ohne solchen Hinweis gilt als Störung, sofern er nicht erkennbar von einer Bot-Abwehr stammt.
- Der Tracker erkennt JTL-Shop an Kennzeichen des NOVA-Templates wie #result-wrapper auf Artikelseite und Bestellvorgang oder .productbox in Artikellisten.
Was der Tracker in JTL-Shop erfasst
Der Tracker erkennt Seiten des NOVA-Templates an deren Markup und liest Shop-Ereignisse direkt daraus. Er setzt keine Cookies.
Erfasst der Tracker von selbst
- Seitenaufrufe mit Herkunft und UTM-Parametern, dazu Web Vitals wie LCP und CLS.
- Artikelaufrufe auf der Artikelseite mit Name, Preis und Artikelnummer, dazu Hersteller und Kategorie, soweit strukturierte Daten sie enthalten. Den Namen kann der Tracker aus dem Seitentitel übernehmen; hängt der Shop dort Shoptitel oder Preis an, steht das mit im Namen.
- Klicks auf „In den Warenkorb“ auf der Artikelseite mit Artikel, Preis und Menge.
- Den Beginn des Bestellvorgangs, sobald eine Seite wie /Bestellvorgang geladen wird.
- E-Commerce-Ereignisse, die der Shop oder ein Plugin als view_item, add_to_cart, begin_checkout oder purchase in den dataLayer schreibt, beim Kauf mit Betrag, Währung und Bestellnummer.
- JavaScript-Fehler aus echten Besuchen mit Meldung, Datei und Zeile.
Nicht automatisch erfasst
- Bestellabschluss und Umsatz: Die Abschlussseite von NOVA zeigt die Bestellnummer, aber keinen Gesamtbetrag, den der Tracker auslesen könnte. Ohne dataLayer-Ereignis oder eigenen Aufruf wird kein Umsatz erfasst.
- Angemeldete Kunden: Eine eigene Kundenerkennung für JTL-Shop gibt es nicht. Der Tracker ordnet Kunden nur zu, wenn das Template eine Kennung wie das Meta-Tag xictraq:user-id oder ein data-customer-id-Attribut ausgibt.
- Den Warenkorb-Stand mit Summen sowie Mengenänderungen und Entfernen im Warenkorb: Summen- und Positionszeilen des NOVA-Warenkorbs tragen nicht die Kennzeichen, die diese Auswertungen erwarten.
- Stornos, Retouren und Erstattungen, etwa aus JTL-Wawi. Dafür gibt es kein automatisches Ereignis.
- Vorgänge ohne Shopseite im Browser, etwa den Abgleich mit JTL-Wawi über die dbeS-Schnittstelle oder Rückmeldungen von Zahlungsanbietern.
- Artikelaufrufe und Warenkorb-Klicks in eigenen Templates, die nicht auf NOVA aufbauen und dessen Kennzeichen nicht übernehmen.
Fehlende Werte übergeben Sie über die JavaScript-API: xictraq.revenue(betrag, "EUR", bestellnummer) auf der Bestellabschlussseite, wo NOVA die Bestellnummer als {$Bestellung->cBestellNr} bereitstellt, xictraq.identify(kundenId, { name }) für angemeldete Kunden und xictraq.refund(bestellnummer, betrag, "EUR") für Erstattungen.
Die passenden Module für JTL-Shop
Häufige Fragen
Löst der Wartungsmodus von JTL-Shop einen Ausfallalarm aus?
In der Regel nicht. Im Wartungsmodus antwortet JTL-Shop mit HTTP 503 und einer Wartungsseite; steht darin „Wartungsmodus“ oder „Wartungsarbeiten“, wertet XICTRAQ das als Wartung und pausiert Ausfall- und Inhaltsalarme, während SSL, Domain und Blacklist weiter geprüft werden. Wenn Sie den Hinweistext über die Sprachvariable maintenanceModeActive anpassen, lassen Sie eines dieser Wörter darin stehen, in einem englischsprachigen Shop etwa „undergoing maintenance“. Ein 503 ohne Wartungshinweis gilt als Störung, sofern er nicht erkennbar von einer Bot-Abwehr stammt.
Wie überwache ich den Aufgabenplaner von JTL-Shop?
Mit einem Heartbeat. JTL empfiehlt, den Aufgabenplaner über einen echten Cronjob auf includes/cron_inc.php anzustoßen; an diesen Cron-Eintrag hängen Sie einen Aufruf der Ping-Adresse an. Bleibt der Ping über das erwartete Intervall samt Toleranz aus, meldet XICTRAQ den verpassten Lauf. Über eigene Adressen für Start und Fehlschlag oder einen mitgegebenen exit_code erfassen Sie zusätzlich Laufzeit und Abbrüche.
Kann ein Browser-Check den Bestellvorgang von JTL-Shop durchspielen?
Ja. Ein Browser-Check kann Seiten öffnen, klicken, Formulare ausfüllen, auf Elemente warten und Texte, Adressen oder Statuscodes prüfen. Legen Sie zuerst einen Artikel in den Warenkorb, denn mit leerem Warenkorb leitet JTL-Shop vom Bestellvorgang zurück zum Warenkorb. Lassen Sie den Check vor dem Absenden der Bestellung enden und nutzen Sie für die Anmeldung unter /Mein-Konto einen eigenen Testkunden.
Warum erfasst der Tracker in JTL-Shop keinen Umsatz?
Die Bestellabschlussseite des NOVA-Templates zeigt Bestellnummer und Zahlungsart, aber keinen Gesamtbetrag, den der Tracker auslesen könnte. Schreibt der Shop oder ein Plugin ein purchase-Ereignis in den dataLayer, übernimmt der Tracker Betrag, Währung und Bestellnummer daraus. Andernfalls rufen Sie auf der Abschlussseite xictraq.revenue(betrag, "EUR", bestellnummer) selbst auf.
Erkennt XICTRAQ JTL-Shop auch ohne „Powered by“-Hinweis?
Der Scan erkennt JTL-Shop neben dem Hinweis im Fußbereich auch an Pfaden unter /plugins/jtl. Fehlen beide, etwa bei einer Lizenz ohne Herstellerhinweis und ohne JTL-Plugins, erscheint JTL-Shop in der Regel nicht im Technikprofil. Der Tracker ist davon nicht betroffen: Er erkennt das NOVA-Template an dessen Markup im Browser.
Meldet XICTRAQ eine veraltete JTL-Shop-Version?
Eine Versionsregel für JTL-Shop gibt es nicht, und die Technikerkennung liest keine JTL-Versionsnummer aus. Im CRA-Komponenten-Cockpit steht JTL-Shop deshalb als nicht bewertbare Komponente. Komponenten, die ihre Version preisgeben, etwa PHP in einem Antwortkopf oder eine eingebundene jQuery-Datei, gleicht XICTRAQ mit bekannten Schwachstellen ab.