Google Analytics in Shopware 6 einbinden

Die Google-Integration bei Shopware 6 wird voraussichtlich Teil von Shopware 6.2 sein. Wer nicht darauf warten möchte kann Google Analytics auch direkt über das Template einbinden.

Shopware 6 Roadmap: https://www.shopware.com/de/roadmap/

Hierzu lege ich die Datei base.html.twig in meinem Theme an:

 

/custom/plugins/MyCustomTheme/src/Resources/views/storefront/base.html.twig

 

In dieser Datei leite ich nun die Datei aus dem Shopware-Template ab und überschreibe den Block base_body_script.

 

{% sw_extends '@Storefront/storefront/base.html.twig' %} 

{% block base_body_script %} 
    {{ parent() }} 
     <script async src="https://www.googletagmanager.com/gtag/js?id=UA-123456789-0"></script> <script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
    gtag('config', 'UA-123456789-2', { 'anonymize_ip': true });
    </script> 
{% endblock %}

 

Um auch Conversions tracken zu können klinke ich mich auch in die Checkout Finish Funktion ein:

 

/custom/plugins/MyCustomTheme/src/Resources/views/storefront/page/checkout/finish/index.html.twig

 


{% sw_extends '@Storefront/storefront/page/checkout/finish/index.html.twig' %}

{% block base_footer %}
    {{ parent() }}

    <script>
    
        {% set analyticsItems = [] %}
        {% for lineKey,lineItem in page.order.nestedLineItems %}
            {% set analyticsItemLine = {
                id: lineItem.payload.productNumber,
                name: lineItem.label,
                quantity: lineItem.quantity,
                price: lineItem.totalPrice
            } %}
            {% set analyticsItems = analyticsItems|merge({(loop.index0):analyticsItemLine}) %}
        {% endfor %}

        document.addEventListener("DOMContentLoaded", function() {
            gtag('event', 'purchase', {
                "transaction_id": "{{ page.order.orderNumber }}",
                "affiliation": "My Shop",
                "value": {{ page.order.amountTotal }},
                "currency": "{{ context.currency.isoCode }}",
                "tax": {{ page.order.amountTotal - page.order.amountNet}},
                "shipping": {{ page.order.shippingTotal }},
                "items": {{ analyticsItems|json_encode|raw }}
            });
        });

    </script>
{% endblock %}
    

 

Die Lösung ist sicherlich nicht perfekt, da die Google Integration aber in Shopware 6.2 nachgereicht wird ist sie für meine Anwendungsfälle temporär ausreichend.
Zu beachten ist hier auch, dass diese Lösung noch nicht DSGVO-konform ist. Auch wenn die Übertragung von personenbezogenen Daten in die USA ohnehin fragwürdig ist, sollte man die Google Analytics Skripte erst nach Zustimmung (consent) seitens des Besuchers einbinden.

Abschließend muss der Cache geleert werden, danach sollte das Tracking bereits funktionieren.

Update Shopware 6.2 (und höher)

Die unten beschriebenen Zwischenlösung ist glücklicherweise seit Shopware 6.2 nicht mehr notwendig. Ab Shopware 6.2 lässt sich Google Analytics komfortabel über die Verkaufskanal-Einstellungen über den Reiter "Analytics" konfigurieren. Hier muss nur die Tracking-ID eingetragen werden und die Haken für "Google Analytics aktivieren", "Bestellungen verfolgen" und "IP-Anonymisierung" aktiviert werden.

Kommentare und Antworten

×

Name ist erforderlich!

Geben Sie einen gültigen Namen ein

Gültige E-Mail ist erforderlich!

Gib eine gültige E-Mail Adresse ein

Kommentar ist erforderlich!

Captcha Code Kann das Bild nicht gelesen werden? Klicken Sie hier, um zu aktualisieren

Captcha ist erforderlich!

Code stimmt nicht überein!

* Diese Felder sind erforderlich.

Bemerkungen :

  • user
    Momme 01.03.2023 um 12:08
    Vielen Dank für die Erklärung!
    Kann es sein, dass in Shopware 6 nur die Integration von alten UA Properties vorgesehen ist und dies nicht mit einer GA4 Property funktioniert?
    • user
      Reinhard Schneidewind 13.03.2023 um 11:18
      Das ist korrekt. Damit GA4 grundlegend funktioniert muss man den Tracking Code überschreiben:
      `custom/plugins/MeinThemePackage/src/Resources/views/storefront/component/analytics.html.twig`

      ```
      {% block component_head_analytics %}
      {% if context.salesChannel.analytics and context.salesChannel.analytics.isActive() %}
      {% set trackingId = context.salesChannel.analytics.getTrackingId() %}

      <!-- Google tag (gtag.js) -->
      <script async src="https://www.googletagmanager.com/gtag/js?id={{ trackingId }}"></script>
      <script>
      {% block component_head_analytics_tag_config %}
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());

      gtag('config', '{{ trackingId }}');
      {% endblock %}
      </script>
      {% endif %}
      {% endblock %}
      ```