Google Tag Manager + GA4 E-Commerce Tracking
In-App Purchases
Subscriptions
Description
Highlights
About the Extension
You want to know which products your shop actually sells. So you create a container in Google Tag Manager. Then comes the awkward part: who puts the tracking into the templates? Usually the agency takes over, and an afternoon task turns into a project with a quote, a review round and a waiting list.
The problem
A container measures nothing on its own. It needs data from your shop: which product was viewed, what sits in the basket, what was actually bought, each with name, item number, price, brand and category. Shopware holds all of that, just not in the shape Google Analytics 4 expects.
Write it into the templates by hand and you maintain it with every Shopware update. Data protection sits on top of that: without the shopper's consent, analytics and advertising tags must not store anything. That is where most home-grown setups fall over, because consent gets bolted on afterwards.
The solution
This plugin brings both parts. It loads Google Tag Manager in your storefront and fills the dataLayer with GA4 e-commerce data, from category page to order confirmation. You enter your container ID and save. Every important shop page ships preconfigured, your templates stay untouched.
What's in it for you
You are live after two entries. Enter the container ID, check that the channel is active, hit save. No template override, no line of code, no deployment.
Every sales channel measures on its own. Container ID and the active switch apply per sales channel. Your trade shop can stay silent while the retail shop measures.
Consent sits where it belongs. By default, Google treats analytics and advertising storage as denied until the shopper agrees in the cookie banner. Later changes reach Google too.
You see the whole journey, not just the sale. Product lists and search results, product view, basket, checkout, shipping and payment selection, purchase, cancellation and refund all come preconfigured. Clicks on listed products and the wishlist can be added.
Purchases the browser misses still reach GA4. The paid add-on "Server-side purchase" reports orders from the shop server that the browser never reported. Typical cases: customers who pay via PayPal or Klarna and never return, and ad blockers. The shop reserves each order first so no purchase arrives twice.
You can keep going without a developer. You see and edit which shop page sends which values in the administration. Add new values as Twig expressions, download the whole setup as a file and load it into another shop.
How the plugin works
When a shop page is requested, the plugin looks up the matching mapping, builds the dataLayer entry from it and writes it into the page before Google Tag Manager starts. Lists that are filtered or sorted without a page reload are reported again.
Oversized data deliveries are split automatically so Google processes all of it. You set the threshold in kilobytes, the default is 7.
The add-on follows the channel's active switch. A strictly necessary cookie passes consent to the server for every consent option. Without analytics consent nothing is stored or reported; with it, the plugin stores the shopper's GA4 identifier on the order. After a configurable waiting time, 30 minutes by default, the shop checks whether the browser reported the purchase. If not, it sends it to Google itself, with order number, value, tax, shipping costs and every line item. You book the add-on as a monthly subscription in the plugin configuration, billed through your Shopware account.
Numbers that fit your reporting
You decide net or gross per sales channel. By default, prices go out as the customer group sees them in the shop. With "Always net", price, value and shipping leave without tax for every customer group, as Google recommends for the purchase value, in the basket and the add-on too. Fields you rewrote yourself keep your formula.
You decide when shipping and payment choice are reported. Only on a change, as soon as the order overview loads, or once on submit. That way shoppers who keep the preselection count too. On submit, GA4 still gets the event, other tags in your container may lose it.
The details add up too. The basket value is right whether the item ID holds the product number, the product ID or your own value. Products with options from the product configurator report a unit price that, times quantity, gives the line total. Gmail addresses are normalised before hashing like Google does, so these buyers match in enhanced conversions.
Typical use cases
Several countries or brands. Your GBP shop, your EUR shop and your outlet run on separate containers. Each channel gets its own ID, the numbers stay apart.
Server-side tagging. If your tagging runs through your own server, enter that address and the script loads from there. The browser still sends the data. Purchases it never reports only come back with the add-on.
Technical facts for your IT team
Shopware 6.7, PHP 8.2 or newer. The plugin creates two tables of its own and adds the read-only custom fields "Google Analytics 4 (technical)" to orders. It changes no Shopware table. Without the add-on it calls no external services server-side. With the add-on the shop server sends recovered purchases to google-analytics.com via the GA4 Measurement Protocol, built from the same dataLayer setup as in the browser, minus the email address. The Google Tag Manager script loads in the browser from Google, or from your own address with server-side tagging.
On data protection: by default the plugin sets Google's consent to denied for every consent tool and reports the shopper's decision and later changes, unless your tool does that. For logged-in customers, and for guest orders on the order confirmation page, it also sends contact details in hashed form (SHA-256) so Google can attribute purchases more reliably. Check this against your privacy policy before going live.
Errors go into a dedicated log file instead of the storefront. The plugin ships its own administration privileges. On uninstall, Shopware's own switch decides whether your setup stays or goes. Interface and storefront texts come in German, English and Dutch.
To be honest
This plugin is not an analytics tool. It hands your shop data to Google Tag Manager, nothing more. Which tags fire, whether Google Analytics 4, Google Ads or something else, is set up in your container. Without a Google Tag Manager account and a published container you see no numbers, however clean the dataLayer is. No dashboards, no reports, no revenue forecasts here.
The add-on does not bring back every order either. Without the shopper's consent, the purchase stays unmeasured. Double reports are avoided, not ruled out: a customer returning after the waiting time can trigger a second report. Orders from the administration or an API are deliberately not reported: without a visitor behind them they would distort your channel reports.
Already have a container and only need the data out of Shopware? Then this is the short route: set it up once and it runs. Try it on a test channel first.
Legal notice
We accept no liability for legal requirements. Please check the use of this plugin with a qualified legal advisor.
Details
- Available: English, German
- Latest update: 15 October 2026
- Publication date: 23 June 2023
- Version: 6.7.18
- Category: Tracking
Resources
Reviews (12)
Macht was es soll und toller Support
Unserer Meinung nach bestes GTM-Plugin
Bei der Migration von der alten Version auf die neuen gab es einen Fehler - dieser wurde vom Support analysiert und gelöst: einfach das Plugin nochmal neu installieren. Nun geht alles.
Danke!
About the Extension Partner
BuI Hinsche GmbH
Partner Status
-
Shopware
Bronze Partner -
Shopware
Premium Extension Partner
Details
- Ø-Rating: 4.3
- Partner since: 2014
- Extensions: 100
- Certifications: 2
Support
- Based in: Germany
- Speaks: German, English
- Response time: Very quickly