Google Tag Manager, GA4 & Google Ads (including server-side tracking): Installation and set-up


Installation instructions, documentation and FAQs for the Shopware plugin

Install extension

Install and activate the extension in your Shopware administration under Extensions.

How the plugin works

The plugin supports two different methods for tracking integration in your Shopware shop:

  1. Google Tag Manager (GTM)
    The recommended and most flexible method. With Google Tag Manager, you can manage all tracking events centrally, add your own tags and expand tracking at any time, without having to make any changes to the shop’s code. The plugin provides you with a pre-configured GTM template for this purpose.
  2. Google tag (gtag.js)
    This method integrates Google Analytics 4 – and, optionally, Google Ads – directly via the gtag.js script, without using Tag Manager. It is suitable if you prefer a simple setup.

Important: Deactivate other Google Analytics integrations if you use this app.

Set up Google Tag Manager

Tag Manager account and container

  1. Log in to your Google Tag Manager account or create a new account.
  2. Create a new empty container for importing the default settings.

For advanced users: You can also use an existing container and merge it later. However, we recommend using a new container.

You can find help with Google Tag Manager here:
Google Tag Manager Support

Create a GTM template with our generator

Unser Generator erstellt in drei Schritten die fertige Importdatei für deinen GTM-Container. Er trägt deine Google-IDs direkt in die Vorlage ein, danach musst du im Tag Manager nichts mehr ausfüllen. Die Datei passt für Shopware 6.5, 6.6 und 6.7.

  1. Was willst du tracken? Setze die Häkchen für Google Analytics, Google Ads und, falls gewünscht, Shopping-Warenkorbdaten. Shopping geht nur zusammen mit Google Ads und setzt ein mit Google Ads verknüpftes Merchant Center voraus. Details findest du unter „Google Ads: Shopping basket data and Enhanced Conversions“.
  2. Deine Daten eingeben: Es erscheinen nur die Felder, die du für deine Auswahl brauchst. Bei jedem Feld steht, wo du den Wert findest.
  3. Herunterladen und importieren: Importiere die Datei im Google Tag Manager unter Verwaltung → Container importieren. Am besten in einen neuen Container. In einem bestehenden Container wählst du „Zusammenführen“, nicht „Überschreiben“, sonst werden deine vorhandenen Tags gelöscht. Danach in der Vorschau prüfen und veröffentlichen.

Schritt 1: Was möchtest du tracken?

Das Template funktioniert für Shopware 6.5, 6.6 und 6.7.
Seitenaufrufe, Warenkorb und Käufe in Google Analytics.
Conversion-Tracking für deine Käufe in Google Ads.
Artikel, Preise und Mengen der Bestellung für Google Ads. Nur zusammen mit Google Ads möglich, und das Google Merchant Center muss mit deinem Google-Ads-Konto verknüpft sein.

Schritt 2: Daten eingeben

Die Mess-ID deines Google-Analytics-4-Datenstreams, z. B. G-ABC123XYZ (Details siehe unten)
Unter Tag-Einrichtung wähle den Reiter „Google Tag Manager verwenden“. Dort findest du die Conversion-ID (Details siehe unten)
Unter Tag-Einrichtung wähle den Reiter „Google Tag Manager verwenden“. Dort findest du das Conversion-Label. (Details siehe unten)
Die Nummer deines Google Merchant Centers. Du siehst sie im Merchant Center oben rechts neben dem Kontonamen. Das Merchant Center muss mit deinem Google-Ads-Konto verknüpft sein.
Das Zielland deines Produkt-Feeds als Ländercode, z. B. DE. Je Container gilt ein Feed-Land. Verkaufst du in mehrere Länder, richtest du für jedes Land einen eigenen Container ein.
Die Sprache deines Produkt-Feeds als Sprachcode, z. B. de.

Je Container gilt ein Feed-Land. Verkaufst du in mehrere Länder, richtest du für jedes Land einen eigenen Container ein.

Varianten stehen in deinem Produkt-Feed als eigene Artikel: Die id ist die Produktnummer der Variante, die item_group_id die des Hauptartikels. Sonst passt die gesendete Artikel-ID einer Variante nicht zum Feed.

Schritt 3: Importieren und einrichten

Deine Datei wird heruntergeladen. So geht es weiter:

  1. Importiere die Datei im Google Tag Manager unter Verwaltung, Container importieren. Wir empfehlen einen neuen, leeren Container. In einem bestehenden Container wählst du Zusammenführen, nie Überschreiben: „Überschreiben“ ersetzt alle vorhandenen Tags, Trigger und Variablen.
  2. Richte die Shopware-Seite in der Plugin-Konfiguration ein:
    • Tracking-Integration: Google Tag Manager
    • Container-ID: deine GTM-ID (GTM-…)
    • Bei Google Ads zusätzlich Conversion Tracking aktivieren and Enhanced Conversion Data aktivieren. Ohne den ersten Schalter wird keine Conversion ausgelöst.
  3. Prüfe alles mit „In Vorschau ansehen“ und veröffentliche den Container mit Senden, Veröffentlichen.

How to find the IDs:

Analytics: Create a property or go to your existing property in Google Analytics and navigate to Administration (bottom left) and then to "Data streams". Select the relevant data stream. You will find the GA4 ID at the top right (measurement ID). Google Help

Ads: Log in to Google Ads → Goals → Conversions → Summary. Open the conversion action you want (or create a new one). Under “Tag setup”, select the ‘Use Google Tag Manager’ tab. There you’ll find the conversion ID and the conversion label.

Configure plugin in Shopware

Now switch to your Shopware backend and open the plugin configuration.

Under "Which tracking integration would you like to use?", select the option "Google Tag Manager".
Then enter your GTM ID (e.g. GTM-XXXXXXX) in the "Google Tag Manager Container ID" field.

If you use google Ads Tracking, please also activate the option and, if applicable, Enhanced Conversion Data:

Save the configuration to activate the integration of the container in the shop.

Check and publish containers

Use the Preview function in Google Tag Manager ("View in preview") to test your container. Enter your shop URL and check whether all events such as product view, add-to-cart or purchase are triggered correctly. Make sure that no tracking takes place if cookie consent is rejected.

If everything works as desired, don't forget to publish the container Click on the top right of the GTM on Send → Publish. Only then will your tracking be active in the live shop.

Configuration Google Analytics (gtag.js)

If you no Google Tag Manager you can alternatively work directly with the Google Analytics tracking code (gtag.js).

  1. Choose from "Which tracking integration would you like to use?" the option "Google Analytics (gtag.js)".
  2. Wear your Google Analytics 4 Measurement ID in the format G-XXXXXXXXXXXX in the corresponding field. You can find the ID in Analytics under Administration → Data streams
  3. Save the configuration.

With immediate effect, the plugin will handle tracking via the gtag.js code, including all supported e-commerce events such as product views, add-to-cart and purchase completion.

Hint: If you use the Google Tag Manager If you’re using it, you’ll need to maintain the GA ID there in the container. Not in the plugin.

Configuration Google Ads Tracking (gtag.js)

If you want to use Google Ads Conversion Tracking, without using the Google Tag Manager, you can set this up directly via the gtag.js tracking code.

  1. Choose from "Which tracking integration would you like to use?" the option "Google Analytics (gtag.js)".
  2. Activate the option in the plugin "Activate conversion tracking".
  3. Wear your Google Ads Conversion ID and the associated Conversion label in the corresponding fields.
  4. (Optional) Activate "Activate enhanced conversion data", to send additional user data, such as an email address or telephone number, to Google Ads. This helps improve the attribution of conversions, particularly for cross-device purchases.
  5. Save the configuration.

Hint: For Enhanced Conversions, you must also activate this function in your Google Ads account. You can find instructions here: Google Ads guide to extended conversions

How do I find my Google Ads conversion ID and the conversion label?

  1. Log in to your Google Ads account.
  2. Navigate to → Target project → Conversions → Summary
  3. Select an existing Conversion campaign or create a new one.
  4. Click in the area "Tag facility" on the tab "Set up the day yourself".
  5. In the "Event snippet" section, you will find both your conversion ID (e.g. AW-1234567890) and the conversion label (e.g. abc123XYZabcDEF456) under send_to.

Dynamic remarketing

If you want to use dynamic remarketing via Google Ads, you can specify a so-called "feed type key" in the plugin configuration. This is necessary so that Google can correctly allocate your product data and display suitable adverts.

Select the appropriate type depending on what you are applying for. The following options are available:

  • retail
  • education
  • flights
  • hotel_rental
  • jobs
  • local
  • real_estate
  • travel
  • custom

For classic online shops, the following is usually "retail" the right choice.

You can find more information on use and setup in the official Google Ads Remarketing documentation:
https://support.google.com/google-ads/answer/7305793?hl=de&ref_topic=10070037#zippy

Google Ads: Shopping basket data and Enhanced Conversions

What this achieves

  • Trolley data (conversions involving trolley data): With every order, Google Ads receives details of the items purchased, including the item number, quantity and unit price. If your Google Merchant Centre is linked to your Ads account, you can use this to analyse turnover and profit per product.
  • Enhanced Conversions: When an order is placed, the details from the billing address (email, telephone number, name, street, postcode, town/city, country) are sent to Google. This enables Google to track conversions more effectively. The extension passes the data to the Google tag; Google itself handles the encryption (hashing).

Prerequisites

  1. Your Google Merchant Centre is linked to your Google Ads account.
  2. The item ID in your product feed is the product number from the shop. The extension sends the product number as item_id. This is the only way Google can match the items in the order to the products in the feed.
  3. In the extension, „Enable conversion tracking“ is switched on. For Enhanced Conversions, also select „Enable enhanced conversion data“.

Which price is carried forward

Google expects the shopping basket data to include the unit price of the item excluding tax, delivery charges and order discounts (Google Ads Help).

The extension sends the price exactly as you have set it. It does not automatically convert it to net price, as the same price is also recorded in Google Analytics.

Shopware 6.6 and 6.7 (extension and app) and MultiTracking Pro: The „Price Transfer Mode“ setting is crucial. The default setting is gross prices.

  • For shopping basket data, we recommend using one of the net price settings („Net prices“ or „Net prices excluding delivery costs“). This ensures that the item price complies with Google’s requirements.
  • If you stick with gross figures, the item prices will include VAT. Turnover and profit per product will then appear too high in Google Ads due to the tax.
  • This setting also affects Google Analytics. If you need gross figures there, you’ll have to decide which is more important to you.

Shopware 6.5 (extension and app): This setting is not available here. The unit price from the order is sent as it appears to the customer group. For gross customer groups (usually end customers), tax is included; for net customer groups, it is not.

Selecting the appropriate GTM template

Für Warenkorbdaten setzt du im Generator oben zusätzlich das Häkchen „Shopping“. Das wählst du nur, wenn dein Merchant Center mit dem Ads-Konto verknüpft ist. Der Generator fragt dann auch die Merchant-Center-ID, das Feed-Land und die Feed-Sprache ab. Die Vorlage gilt für Shopware 6.5, 6.6 und 6.7.

Je Container gilt ein Feed-Land. Verkaufst du in mehrere Länder, richtest du für jedes Land einen eigenen Container ein.

In den Vorlagen mit Shopping sind im Tag „Google Ads – conversion“ die Verkaufsdaten auf Produktebene schon eingeschaltet, mit der Datenquelle „Benutzerdefinierte Felder“.

Here’s how to do it:

  1. Im Generator die Häkchen setzen (mit „Shopping“), deine Daten eingeben und die Datei herunterladen.
  2. Datei im Google Tag Manager unter Verwaltung → Container importieren einspielen.
  3. Check in the preview to make sure everything is there.
  4. Publish.
  5. Nach ein paar Bestellungen im Google-Ads-Konto prüfen, ob die Warenkorbdaten dort auftauchen.

Cost price and profit

The extension does not transfer purchase prices. The cost prices are sourced from Merchant Centre via the feed attribute cost_of_goods_sold. If you want to see the profit per product in Google Ads, you need to include this attribute in your feed.

Google calculates gross profit as turnover minus cost of sales (Merchant Centre Help). To ensure these figures match, we recommend maintaining net cost prices and also transferring net item prices (see „Which price is transferred“). If you use gross item prices and net cost prices, the profit shown in Google Ads will be too high due to VAT.

Enhanced Conversions with a telephone number

In the templates, Enhanced Conversions are tracked via the „Google Ads – conversion_user_data“ tag with the variable conversion_user_data. The „Google Ads – conversion“ tag no longer requires its own toggle for this.

The new templates also pass the telephone number from the billing address on to Google. To do this, the extension removes spaces, hyphens, slashes and full stops, and sends the number only in international format, for example +4971112345678. Numbers without + and country code, with 00 at the beginning or with (0) leaves them out.

Note for Shopware 6.5

With the latest update, item_id In all events (view_item, Listing, select_content, add_to_cart, remove_from_cart, begin_checkout, purchase), use the product number instead of the internal item ID. Reports and target groups based on the old item ID will show new values from the update onwards.

Configure consent management

In the plugin configuration, select the consent manager that you use in your shop. Supported options include the Shopware Cookie Consent Manager, Cookiebot, Usercentrics, CookieFirst, CCM19, consentmanager.net and ACRIS EU Cookie Policy Pro.

In the „Expert mode“ field, you can enter a custom label or the key for your consent tool (if necessary). This option is particularly useful for external tools that require their own integration.

Assigning the cookie category: In the plugin settings, you can now explicitly specify the category in which the extension should appear in the frontend consent dialogue.

Expert settings (Consent-Free Tracking)

If you are using a special setup in which the Google Tag Manager is to be loaded independently of the cookie content, you can activate an additional container snippet here.

To do this, activate the option "Activate Consent-Free Google Tag Manager JavaScript snippet" and enter in the field below the corresponding Container ID (e.g. GTM-XXXXXXX).

This feature is intended solely for advanced use cases, for example if you are using tags that Do not collect any personal data or must be loaded before consent is given.

Please note: The shop operator is responsible for GDPR-compliant use. Only use this option if you are aware of the legal implications.

Consent Mode: Advanced

Optionally, the „Consent Mode Advanced“ switch can be enabled (disabled by default). If it is enabled, the Google container or gtag is loaded before consent is given. The consent defaults remain set to „denied“ (including ads_data_redaction), so only cookie-less pings are sent to Google, from which Google extrapolates conversions using modelling. The advantage is that conversion signals are retained even if visitors ignore the cookie banner.

Privacy notice: When the switch is enabled, the Google script is loaded before consent is given; amongst other things, the visitor’s IP address is sent to Google even before consent is given (data transfer to the USA). This practice is legally controversial. The shop operator is responsible for activating, verifying and managing this feature (including consultation with the data protection officer). The switch is disabled by default.

If an external CMP (such as Cookiebot, UserCentrics, CookieFirst or ACRIS) is used instead of the Shopware Cookie Consent Manager, this CMP must provide the consent signals. When Advanced Mode is active, the first page load for returning visitors who have already given their consent may be cookie-free, as the consent stored in the CMP, for technical reasons, only takes effect after the script has loaded. Full data is then transmitted. With the Shopware Consent Manager, this effect does not occur, as the stored consent is applied before the script is loaded.

GTM mode works with the GTM templates we provide (Consent Mode is already built in) without the need for any customisation of the container. In Analytics mode (gtag.js), data is sent directly; a container is not required here.

Opt-out link for Google Analytics

To deactivate tracking by users, add the following link to your privacy policy:

<a onclick="javascript:gaOptout();" href="javascript:void(0);">Switch off Google Analytics tracking for this website here</a>

Set up server-side tracking

What is server-side tracking?

Server-side tracking is a modern method of collecting website data. Instead of sending tracking data directly from the browser to Google, it is first sent to a separate server and forwarded from there in a controlled manner.

Classic tracking: Browser → Google
Server-side tracking: Browser → Your tagging server → Google

Important concepts: Web vs. server container

To use SST, you need two different container types in Google Tag Manager. These fulfil different tasks:

Container typeTaskBiloba template necessary?
Web containerCollects events (clicks, sales) in the browser.Yes (JSON import)
Server containerReceives data & protects privacy.No (standard)

Prerequisites

To be able to use server-side tracking, you need:

  1. A Google Tag Manager server container: Created in your GTM account.
  2. A tagging server (hosted on Google Cloud Platform, AWS, or with a provider such as Stape.io)
  3. Your own subdomain (recommended, e.g. gtm.your-domain.com)
  4. Budget: Please note that SST incurs hosting costs (approx. 30-50 €/month depending on traffic).

HintServer-side tracking incurs ongoing costs for server hosting. The costs depend on your shop's traffic.

How the automatic redirection works

In mode gtag.js the plugin sets server_container_url automatically. In mode Google Tag Manager The plugin loads the container via your server URL. To ensure that the measurement data also passes through your server, enter the parameter in the Google tag of your web container under ‘Configuration settings’: server_container_url enter your server URL (e.g. https://gtm.deine-domain.de) and publish the container. A GA4 client and a GA4 tag must also be active in the server container.

  1. Simply import our JSON file into the Web container.
  2. Enter your server URL in the Plugin configuration in Shopware.
  3. In gtag.js mode, the plugin automatically sends the data to your server. In Google Tag Manager mode, you add server_container_url in the Google tag of your web container.

Step 1: Create server container

  1. Open Google Tag Manager
  2. Click on “Create container”
  3. Select the target platform “Server”
  4. Follow the set-up wizard

Step 2: Set up the tagging server

Google offers two options:

Option A: Automatic provisioning (recommended for beginners)

  • Google automatically sets up a server on Google Cloud Platform
  • Simplest method, but less control over the infrastructure

Option B: Manual provision

  • You set up the server yourself (Docker container)
  • More control, but technically more demanding
  • Can be hosted on any infrastructure

Detailed instructions from Google:

Step 3: Set up subdomain (recommended)

For optimal cookie functionality, you should have a subdomain of your website point to the tagging server:

gtm.your-domain.com → Your tagging server

This makes it possible:

  • First-party cookies (longer duration)
  • HttpOnly-Cookies (more security)
  • Better compatibility with Safari/ITP

Step 4: Configure plugin

  1. Open the plugin configuration in Shopware Admin
  2. Activate “Enable server-side tracking”
  3. Wear the Server container URL (e.g. https://gtm.deine-domain.de)
  4. Saving and clearing the cache

ImportantThe URL must be entered without a trailing slash!

  • ✅ Correct: https://gtm.deine-domain.de
  • ❌ Incorrect: https://gtm.deine-domain.de/

Functionality in detail

After activation, the plugin automatically changes all Google tracking URLs:

BeforeAfterwards
https://www.googletagmanager.com/gtm.jshttps://gtm.deine-domain.de/gtm.js
https://www.googletagmanager.com/gtag/jshttps://gtm.deine-domain.de/gtag/js

In addition, the parameter server_container_url to all gtag('config', ...) Views attached (only in gtag.js mode).

Source tracking (UTM / affiliate code)

Multitracking does more than just track Google events. The plugin also records the advertising source for each order directly in the Shopware data record. UTM parameters, advertising click IDs and the HTTP referrer are stored as Affiliate code and Campaign code in the order and are therefore immediately visible in the order list, without the need for external reporting.

What is recorded?

  • UTM parameters: utm_source, utm_medium, utm_campaign, utm_content, utm_term
  • Advertising click IDs: gclid (Google Ads), fbclid (Meta), msclkid (Microsoft Ads), ttclid (TikTok) and others
  • HTTP Referer: is used as a fallback if there are no UTM parameters or click IDs

Behaviour

  • By default activated. Once the plugin has been installed or updated, tracking begins automatically.
  • Sticky per session: The first source value recorded is retained throughout the entire session and is carried over to the order when the purchase is completed. Subsequent clicks do not overwrite it.
  • No override with manual ?affiliateCode=-parameters: If the URL is used to create your own affiliateCode If it has been set (e.g. by an existing affiliate programme), it remains unchanged. Source tracking does not overwrite it.

Important after the plugin update: So that the default value is permanently stored in the system_config-table, the switch in the plugin configuration section (the „Source Tracking (UTM / Affiliate Code)” tab) must be explicitly set to To and stored. Only then does the SystemConfigService the value true. Otherwise, the default value will be used, but the value will not be visible in the configuration.

Custom UTM values take precedence

Using the switch Custom UTM values take precedence (The „Source Tracking (UTM / Affiliate Code)“ card) allows the extension to carry over your own UTM parameters from the landing URL into the order: utm_source as an affiliate code, utm_campaign as a campaign code. This also applies if a click ID such as gclid is included. Without the switch, the order will show „Ads“ / „Google Ads“ in this case.

The switch is off by default and only works when source tracking is active.

Example URL: ?utm_source=google_it&utm_campaign=pmax_shopping_best&utm_medium=cpc
Result in the order: Affiliate code „google_it“, campaign code „pmax_shopping_best (cpc)“.

  • Is utm_medium If set, it is appended to the campaign in brackets.
  • Missing utm_source or utm_campaign, the corresponding field remains blank. Without utm_campaign the medium is not attached either.
  • Always give utm_medium=cpc with. Without a medium, visits without a gclid are categorised as „Unassigned“ in Google Analytics 4.
  • Letters, numbers, spaces and the following characters are permitted: . _ - / | ( ) + : , ~ @ ! * #. A value must begin with a letter or a number, must not end with a space, and must be no more than 255 characters long. Any other values will not be accepted (nor will they be converted). The value 0 is considered not to have been set.
  • If no UTM values are provided, automatic source identification continues to apply (e.g. gclid = „Ads“ / „Google Ads“).
  • Have further priority ?affiliateCode= and ?campaignCode= in the URL, explicit AI agent parameters and a session assignment that has already been set. Only the first entry per session counts.

Make columns visible in the order overview

The recorded values are stored in the Shopware standard fields Affiliate code and Campaign code saved. These are hidden by default in the order list. Here’s how to make them visible:

  1. In the Shopware admin on Orders → Overview go.
  2. At the top right of the table header, click on the symbol with the three horizontal bars (Column settings).
  3. In the list the options Affiliate code and Campaign code activate.
  4. Save selection. The columns will now appear in the order list.

Lead conversion tracking for contact forms

Since version 6.14, the plugin has been recording not only purchases, but also Enquiries as conversions. Once a Shopware contact form has been successfully submitted, the plugin automatically triggers the GA4 event generate_lead from (in GTM mode as generate_lead-DataLayer event). Here’s how to measure lead conversions in Google Analytics 4 and Google Ads.

Furnishings

You’ll find the map for this in the plugin configuration „Lead Conversion Tracking”:

  • „Record contact form submissions as lead conversions (generate_lead)”: triggers the lead event.
  • „Lead conversion value”: Monetary value in the shop’s currency, which is sent with the event as a conversion value (for Google Ads). Default: 1.0.

Hint: The event is triggered as soon as a visitor successfully submits the Shopware contact form.

Custom snippets & GTM preview mode

For more advanced setups, the plugin offers two extension points for custom code, as well as a preview mode for Google Tag Manager.

Custom snippets (Head & Body)

On the map „My own snippets” you can integrate your own code into the storefront:

  • „Custom code in the head section”: is displayed unchanged in the header section of every storefront page. Suitable for additional loaders (e.g. a server-side GTM container), third-party consent tools or alternative trackers. You specify the enclosing script tags yourself.
  • „Custom code after the body”: is output immediately after the opening `body` tag; this is common for the GTM Noscript fallback or for markup that must appear immediately after the `body` tag.

Important: The head code is without consent management loaded (before any cookie consent is given). It is your responsibility to obtain any consent required by law (e.g. GDPR). Faulty code may damage the storefront. Use at your own risk.

GTM Preview Mode (Environment Parameters)

The field „GTM environment parameters (preview mode)” on the map „Google Tag Manager configuration” loads a specific GTM workspace or the preview in the storefront instead of the live container.

  • Parameters in GTM under Manage → Environments copy, e.g. gtm_auth=ABC123&gtm_preview=env-3&gtm_cookies_win=x (without a leading ? or &).
  • Leave this field blank to load the standard Live Container.

Coupon mapping (price context)

The plugin can pass price benefits on to GA4 as „coupons”, so that you can analyse purchases involving tiered pricing and RRP discounts in GA4/Google Ads reporting. You’ll find the toggles on the dashboard „Coupon mapping (price context)”:

  • „Passing tiered prices as item coupons”: If a product is actually purchased at a quantity-based tiered price (unit price below the base price), the plugin sets the field in the GA4 item coupon on the volume discount marker and discount on the amount saved.
  • „Pass on the RRP (strikethrough price) as an item voucher”: If a product is sold below its RRP / marked-down price, then coupon on the UVP marker and discount bet on the difference.

If both apply, the Tiered pricing takes precedence. The marker texts can be customised via the Storefront snippets (biloba.AdGoogleGtagsjs.coupon.graduated or. biloba.AdGoogleGtagsjs.coupon.uvp).

List context for product lists (from version 6.15 onwards)

From version 6.15 onwards, the events are passed view_item_list and select_item the appropriate GA4 list context for each product list (item_list_id and item_list_name). In Google Analytics 4, it is immediately clear from which list a product was viewed or clicked on – whether it was a category, search results, cross-selling or a CMS slider.

In addition, it fires view_search_results This is now also available in the search suggestions (Suggest/Autocomplete), not just on the full search results page. This allows you to track user behaviour as soon as they start typing in the search box.

No configuration required. List context tracking is automatically enabled following the update to version 6.15.

Custom parameters in the purchase event (for developers)

You can add the GA4 event purchase On the order completion page, you can specify your own parameters, such as a subscription flag, a customer segment or a field from the order. To do this, do not copy the entire template block into your theme; instead, use the extension point provided for this purpose. This way, you’ll still receive all updates to pricing, tax, coupon and consent logic, and your parameter will be transmitted in the same push.

The extension point

  • Twig block: page_checkout_finish_biloba_google_purchase_params
  • JavaScript variable: bilobaGooglePurchaseParams (the flat parameter object of the GA4 event)

The block is fired immediately after the parameter object has been set up and immediately before the ‘push’ event. This applies to both tracking modes (Google Tag Manager and gtag.js directly) and to all pricing options. A single adjustment therefore covers everything.

Example for your theme

Place the file in your theme src/Resources/views/storefront/page/checkout/finish/finish-details.html.twig To:

{% sw_extends {
    template: '@Storefront/storefront/page/checkout/finish/finish-details.html.twig',
    scopes: ['default', 'subscription', 'mixed-subscription']
} %}

{% block page_checkout_finish_biloba_google_purchase_params %}
    bilobaGooglePurchaseParams.is_subscription = {{ page.order.customFields.isSubscription ? 'true' : 'false' }};
{% endblock %}

If you sell subscriptions (Shopware Commercial), leave the line with scopes It’s absolutely essential. Without it, the storefront will truncate the theme template for subscription orders, and your customisation will be lost without an error message. You don’t need to call the parent block; the block is empty in the extension.

Where the parameter is received

Tracking modeWhere does the parameter end up?What do you need to do on Google?
Google Tag ManagerAs e-commerce. in the purchase-Message in the data layerDeclare a variable of type „Data Layer Variable“ with the name ecommerce.is_subscription and the data layer version „Version 2“, and add it to your GA4 event tag as an event parameter. The built-in e-commerce mapping in GTM only passes on the standard keys; custom keys are only sent to GA4 via this mapping.
Directly via gtag.jsAs an event parameter of the purchase-EventsRegister the key in GA4 as a custom dimension (Administration → Data View → Custom Definitions → Create Custom Dimension, scope „Event“) so that it appears in the reports.

Important rules

  • Just write something simple, synchronous JavaScript. The push can be delayed until cookie consent is given. The exact object you have modified is sent, so static values are safe. Promises or timers will miss the push.
  • Enclose text in quotation marks and escape Twig output for JavaScript (Twig filter e in the context js).
  • The standard keys (transaction_id, value, currency, items etc.) Please do not rename or delete this.
  • Your customisation must be positioned above our extension in the template hierarchy. A theme always does this. If you make the customisation in a separate extension, it must be implemented using the method getTemplatePriority a priority that higher is less than ours (0), for example 900. Otherwise, our empty block wins.
  • The Google Ads event conversion is not extended via this block.
  • Developer tools that wrap each block in HTML comments (e.g. the Frosh Development Helper) insert this marker into the script tag. There, it becomes a JavaScript comment and overrides your first statement. Enter the block name in the Helper under exclude_keywords Try it, or test it with the helper disabled.

FAQs

Create a property or go to your existing property in Google Analytics and navigate to Administration (bottom left) and then to "Data streams". Select the relevant data stream. You will find the GA4 ID at the top right (measurement ID). Google Help

In Google Ads, navigate to → Target project → Conversions → Summary. Open the desired conversion. Under Tag setup you will find the conversion ID and conversion label.

With the Google Tag Assistant you can check and debug the implementation and functionality of your Google tags on the website. You can see whether the tags are correctly integrated and how they are triggered ("fire").

You can also access the Tag Assistant directly from the Google Tag Manager by using the "View in preview" function. This allows you to test in real time which tags are triggered by which action in the shop.

GTM offers you a centralised management interface for all tracking tags. With gtag.js, you only integrate Google Analytics directly, without additional administration or extensibility.

New properties in Google Analytics 4 do not usually display data immediately. First use the "Real-time" reportto check whether activities are recognised.

If no data appears, please check the following:

  • Is your GA4 measurement ID entered correctly?
  • Has consent been given by the visitor (consent to cookies)?
  • Is an adblocker active that could block tracking?

No, the add-on is not necessary, as support for Consent Mode V2 is independent of the Shopware Consent Manager.

With the extension, only one Adwords ID and one Analytics ID can be used at a time. It is not possible to use multiple snippets at the same time, for example for UA and GA4.

The message “A tag read consent before a default was set” means that no default has been set for Consent Mode V2. We have deliberately implemented it this way, as we only set Consent Mode V2 once the user has given their consent. From a GDPR perspective, this is the correct approach.

Yes, both integrations are supported.

In Google Tag Manager mode, yes: Enter the parameter in your web container’s Google tag server_container_url Enter your server URL. In gtag.js mode, no action is required.

The costs depend on your hosting provider and traffic. With Google Cloud Platform, the costs start at around €30-50 per month for small shops.

Yes, you can activate the debug mode in the plugin and check the network requests in the browser developer tools.

Support

If you have any questions or problems, please do not hesitate to contact us: