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
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-Namensylius_shop.base#javascriptsgehö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.