Shopware 6 plugin + GA4 Measurement Protocol, EU-hosted

GA4 server-side tracking for Shopware 6

A Shopware 6 plugin that sends your funnel to the GA4 Measurement Protocol from your server, with the client_id and session_id of the browser attached. It hooks OrderPlacedSubscriber rather than a confirmation page, and it declares its cookies in the Shopware consent registry, so the cookie banner lists them like any other.

The problem

What a Shopware storefront loses before GA4 sees it

Shopware separates the Storefront from the order lifecycle. Tracking that lives only in the Storefront misses everything that happens after the customer leaves it.

The finish page is not the order

A Shopware checkout can complete while the customer is still at their bank. The order is placed, the finish page may never render, and a Storefront-only tag has nothing to send.

Server events with no session

Sending to the Measurement Protocol by hand produces events without client_id and session_id. GA4 opens a new session with no source, and your server-side traffic piles up in Unassigned.

Cookies that work but are not declared

A tracking cookie set behind consent but absent from the Shopware cookie registry is compliant in spirit and indefensible on paper: the banner does not list what it should.

The fix

Hooked on the order, declared in the banner

The plugin subscribes to the order lifecycle, builds the GA4 event server-side, and forwards the browser identifiers. Its own cookies appear in the Shopware consent registry.

OrderPlacedSubscriber, not a page

Shopware places the order, the event leaves the server. Whether the Storefront rendered the finish page is no longer part of the question.

client_id and session_id forwarded

The browser identifiers travel with the server event, so the purchase joins the session that produced it instead of opening an anonymous one.

Cookies in the consent registry

The plugin decorates the Shopware cookie provider, so its cookies show up in the banner with the others, under the group they belong to.

Setup

Three steps, and GA4 starts receiving

  1. Install the connector

    A plugin uploaded in the Shopware administration, Extensions, then activated. Assets install themselves; the Storefront needs no template edit.

  2. Paste your connection key

    One key from your DataFirefly console identifies the site. It is the only thing your shop holds: no destination credential ever lives in your store.

  3. Add GA4 as a destination

    Your GA4 settings go into the console, stored encrypted on our side. Rotating them later touches nothing in the shop.

The same connector feeds every other destination from the same events, so GA4 is a starting point rather than a silo. See the Shopware 6 connector in detail or Google Analytics 4 across all platforms.

Same connector

Your other destinations from Shopware 6

One installation, one key. The events you already send reach every destination you switch on.

Pricing

Included in every plan, free plan included

10,000 events a month free, no card. Paid plans from 39 €/month when your volume grows. Every destination is included in every plan: GA4 is never an add-on.

FAQ

Frequently asked questions: Shopware 6 and GA4

Which Shopware versions are supported?

Shopware 6.5 and 6.6. The plugin is uploaded in the administration under Extensions and activated; assets install themselves and the Storefront needs no template change.

Why do my Shopware server events land in Unassigned in GA4?

Because they arrive without a session_id and open their own session, which has no source. The plugin reads client_id and session_id from the GA4 cookies in the Storefront and forwards both with the server event.

What if the customer never reaches the finish page?

The event does not depend on it. The plugin subscribes to the order being placed, so the purchase is sent whether the Storefront rendered the confirmation or the customer closed the tab at their bank.

Are the plugin cookies declared to the cookie banner?

Yes. The plugin decorates Shopware’s cookie provider so its cookies appear in the consent registry and in the banner, grouped with the other statistics cookies. They are set behind consent, and now they are also declared.

Does it double count with a Storefront GA4 tag?

Only if that tag also sends the purchase. The plugin splits the funnel: browser for engagement, server for the conversion. Disable the purchase event of any other GA4 integration, or let this one own the funnel.

Where is the GA4 api_secret stored?

Encrypted on our side, never in your Shopware configuration. The plugin holds only the connection key, which is per site and revocable from the console.

Let GA4 see the Shopware orders that never rendered

Install the plugin, paste one key, connect GA4. The next order placed while the customer is at their bank still reaches your reports.