Markus Michalski FAQ

Matomo Analytics: Storefront und Tracking

Matomo Analytics für Sylius - was im Storefront getrackt wird, die registrierten Twig-Hooks und Twig-Funktionen, Umrechnung der Bestellbeträge und Hinweise für eigene Themes

English Version

Zurück zur Übersicht

Matomo Analytics: Storefront und Tracking

Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.

Was getrackt wird

Ereignis Wo Matomo-Aufruf Schalter
Seitenaufruf jede Storefront-Seite trackPageView Hauptschalter des Channels
Produktaufruf Produktseite setEcommerceView mit SKU, Name und Hauptkategorie E-Commerce und Produktaufrufe tracken
Abgeschlossene Bestellung Dankeseite nach dem Checkout addEcommerceItem je Position, dann trackEcommerceOrder E-Commerce und Abgeschlossene Bestellungen tracken
Ausgehende Links und Downloads jede Storefront-Seite enableLinkTracking Ausgehende Links und Downloads tracken
Verweildauer jede Storefront-Seite enableHeartBeatTimer Heartbeat-Timer aktivieren

Produktaufrufe

Der Aufruf enthält den Produktcode (SKU), den Namen und den Namen der Hauptkategorie. Einen Preis meldet das Plugin hier bewusst nicht: Auf der Produktseite ist noch keine Variante gewählt, und ein falscher Standardpreis wäre schlechter als gar keiner.

Bestellungen

Auf der Dankeseite meldet das Plugin jede Bestellposition mit SKU, Name, Kategorie, Preis und Menge und danach die Bestellung mit Bestellnummer, Gesamtsumme, Zwischensumme, Steuer, Versand und Rabatt.

Sylius speichert Beträge als ganze Zahlen in der kleinsten Einheit (Cent). Das Plugin rechnet sie anhand der Nachkommastellen der Bestellwährung in die Hauptwährung um, nicht pauschal durch 100. Für Währungen ohne Nachkommastellen wie JPY bleibt der Betrag deshalb unverändert. Der Rabatt wird immer als positive Zahl gemeldet.

Alle Zahlen und Texte im erzeugten JavaScript werden mit json_encode ausgegeben. Das garantiert einen Punkt als Dezimaltrenner, auch wenn der Server unter einer deutschen Locale läuft.

Was nicht getrackt wird

In den Warenkorb legen und Mengenänderungen im Warenkorb werden nicht erfasst. Das Sylius-Formular zum Hinzufügen ist eine Live-Komponente, die den Warenkorb ohne Seitenwechsel ändern kann. Ein serverseitig gerenderter Twig-Hook sieht das nicht. Die Bestellsumme wird dafür einmal zuverlässig auf der Dankeseite erfasst.

Twig-Hooks

Das Plugin registriert diese Hooks selbst. Die drei Storefront-Hooks überschreiben kein Core-Template, sie hängen zusätzliche Inhalte an. Nur der Admin-Hook ersetzt bewusst den Seitentitel-Block des Sylius-Admins auf der Plugin-Seite (Priorität 100), um die Version anzuzeigen:

Hook Name Template Inhalt
sylius_shop.base#javascripts mmd_matomo_tracking_code shop/tracking_code.html.twig Tracking-Skript auf jeder Seite, bei Klaro-Gating zusätzlich die Einwilligungs-Brücke
sylius_shop.product.show.content mmd_matomo_product_view shop/ecommerce/product_view.html.twig Produktaufruf
sylius_shop.order.thank_you.content mmd_matomo_order_tracking shop/ecommerce/order_tracking.html.twig Bestelltracking
sylius_admin.channel_settings.index.content.header.title_block title admin/title_block/title.html.twig Seitentitel im Admin mit der Plugin-Version

Die beiden E-Commerce-Hooks haben die Priorität -100, sie laufen also nach den übrigen Inhalten der Seite.

Das # im Hook-Namen sylius_shop.base#javascripts gehört zum Namen. Schreibe es bei eigenen Hooks, die diesen Punkt ansprechen, genau so.

Twig-Funktionen

Die Hooks nutzen diese Funktionen, die du auch in eigenen Templates aufrufen kannst:

Funktion Rückgabe
mmd_matomo_config() Tracking-Konfiguration des aktuellen Channels, oder null, wenn der Channel nicht tracken darf
mmd_matomo_tracking_code(config) JavaScript für Tracker-Initialisierung und Seitenaufruf, ohne <script>-Tag
mmd_matomo_product_view_code(config, product) JavaScript für den Produktaufruf, leer bei ausgeschaltetem Schalter
mmd_matomo_order_tracking_code(config, order) JavaScript für die Bestellung, leer bei ausgeschaltetem Schalter
mmd_matomo_wrap_script(config, code) Verpackt Code in ein <script>-Tag, bei Klaro-Gating in die blockierte Variante. Leerer Code ergibt eine leere Ausgabe
mmd_matomo_plugin_version() Installierte Plugin-Version: bei einem getaggten Release die Versionsnummer, bei einer Entwicklungs-Installation dev-main@ plus Kurz-Hash, ohne installiertes Paket dev

Theme-Kompatibilität

Weil das Plugin Twig-Hooks nutzt und keine Templates überschreibt, funktioniert es mit Themes, solange diese die Hook-Punkte sylius_shop.base#javascripts, sylius_shop.product.show.content und sylius_shop.order.thank_you.content weiter rendern. Ersetzt ein Theme das Basis-Layout oder die Dankeseite so, dass ein Hook-Punkt entfällt, erscheint das zugehörige Tracking nicht mehr.