GA4 Measurement Protocol: managed, EU-hosted

GA4 server-side tracking, without the Unassigned problem

Send your store's events to the GA4 Measurement Protocol from the server, not from the browser: stitched onto the browser session with the same client_id and session_id, so they keep their real source instead of landing in Unassigned. No custom Measurement Protocol script to write yourself, no GTM server container to configure: one connection key, and the same event also reaches Meta CAPI, Google Ads, TikTok, Pinterest and Microsoft Advertising.

Session stitching Consent-gated, both layers EU-hosted (Germany)

Your measurement ID and API secret stay encrypted on our side: you never paste them into your store.

The flow, end to end
Your store gtag in the browser + server event, same client_id and session_id
DataFirefly dispatcher EU-hosted: consent check, then fan-out
GA4 Meta CAPI TikTok Pinterest Google Ads Microsoft Advertising
Definition

What is GA4 server-side tracking?

GA4 server-side tracking sends your events from your own server to the Measurement Protocol, the server-to-server interface of Google Analytics 4. Instead of asking the visitor's browser to report a purchase, your server sends the event directly. The request leaves your infrastructure, so an ad-blocker or a browser cookie policy has nothing to intercept.

The Unassigned trap

This is what most server-side GA4 setups get wrong, and it is easy to miss because nothing looks broken. GA4 attributes by SESSION. A Measurement Protocol event sent without a session_id opens a brand-new session with no source, and GA4 files the revenue under Unassigned. The conversions are real; they have simply lost their channel. You end up unable to tell which campaign paid for them.

client_id and session_id are what keep the channel

The browser and the server send the same client_id and the same session_id, read from the GA4 cookies. The server event then joins the session the browser already labelled with its real source and medium, instead of opening a sourceless one.

Server-side does not mean consent-free

Moving a tag to the server changes where the request comes from, not whether you need permission to send it. Analytics consent still applies, and we enforce it on both layers.

Looking for the wider picture rather than GA4 specifically? Read what server-side tracking is and how it works.

The problem

Why GA4 alone under-reports your revenue

The GA4 tag runs in the customer's browser: the one place in the chain you don't control, and the place under the most pressure.

  • Ad-blockers

    stop the tag from loading on the order confirmation page: the purchase is simply never recorded in GA4.

  • Safari ITP and browser cookie limits

    shorten or delete the _ga cookie GA4 uses to recognise a returning visitor, so one person is counted as several.

  • Sessions without a source

    are what a naive server-side setup produces: the events arrive, but GA4 cannot tell where they came from.

The result is not just a reporting gap. Every channel decision you make, every budget you move, rests on what GA4 tells you converted. Under-reported or unattributed revenue means the report is answering a different question from the one you are asking.

The solution

A managed GA4 connection, without the plumbing

Install the connector for your platform, or call our API directly, and every funnel step is mirrored server-side to the Measurement Protocol, stitched onto the browser session and gated on consent.

Events that survive the browser

The server-side purchase is delivered from your infrastructure. When the browser tag is blocked, that event is the one GA4 receives.

Session stitching handled for you

The connector reads the GA4 cookies and forwards client_id (client_id and session_id, so the server event joins the right session with the right source.

Richer user data

The server event can carry the hashed email, phone and address from the order, the inputs behind user-provided data/cross-device reporting, which the browser rarely holds at conversion time.

Nothing lost in transit

A retry queue replays retryable delivery failures automatically, so a brief outage on either side doesn't cost you an event.

Consent enforced twice

The browser layer injects nothing without consent, and the dispatcher applies a second check before anything reaches GA4.

Secret never in your store

Your measurement ID and Measurement Protocol API secret are encrypted on our side. A compromised store front-end can't leak them.

Inspector to prove it works

Every event and its per-destination status is visible in the Inspector, so you can confirm delivery to GA4 rather than assume it.

One event, six destinations

The same event also reaches Meta CAPI, Google Ads, TikTok, Pinterest and Microsoft Advertising, no second integration to build.

How to connect

Connecting your store to GA4

1

Add your GA4 credentials once

In your DataFirefly account, add your GA4 measurement ID (G-XXXXXXX) and a Measurement Protocol API secret created in Admin, Data Streams. They're stored encrypted and never sent to your store.

2

Install the connector for your platform

PrestaShop, WooCommerce or Shopware: then paste your single dfss_ connection key. On any other stack, post events to our API.

3

Verify in GA4 Realtime

Place a test order, then check the Inspector for a delivered purchase and confirm it appears in GA4 Realtime with a real source and medium, not Unassigned.

Comparison

Your own script, server-side GTM or a managed connector?

Three routes reach the same Measurement Protocol. They differ in what you have to run, and in whether GA4 is the only destination.

Your own integration

Code you write against the Measurement Protocol: reading the GA4 cookies, session stitching, hashing user data, retries. Full control, and every subtlety of the protocol is yours to discover.

Server-side GTM

A GTM server container you host and configure, with a GA4 tag inside. Maximum control over tags and variables, and a real GTM skill set required to build and maintain it.

DataFirefly

A managed connector: no container, no cloud account, one key. GA4 plus Meta CAPI, Google Ads, TikTok, Pinterest and Microsoft Advertising from the same event, EU-hosted.

When another route fits better. If you have a developer who will own the integration and GA4 is your only destination, writing it yourself is perfectly sound. If you have GTM expertise in-house and need tag-level control over transformations, server-side GTM is more flexible than we are. We're the better fit when you want events reaching several platforms reliably without becoming a tracking infrastructure team. See also our Stape alternative and Addingwell alternative pages.

Platforms

GA4 server-side tracking for every e-commerce platform

A headless front-end or a custom stack? Post your events to our API and the dispatcher handles GA4 and every other destination the same way. Tell us about your setup.

Pricing

GA4 included in every plan

One subscription covers your whole account and all its destinations: GA4 is not a paid add-on. Move up a tier for more sites and more monthly events.

Free

Free while you stay under the monthly allowance: nothing breaks if you go over.

€0 / month
1 site included
Up to 10,000 events / month
No credit card required
Start free

Starter

For a single store getting GA4 server-side in place properly.

€39 / month
1 site included
Up to 500K events / month
All destinations included
Choose Starter

Scale

For agencies and portfolios managing up to twenty stores at higher volume.

€349 / month
20 sites included
Up to 10M events / month
All destinations included
Choose Scale

Just want to try the connection first? The free plan lets you send events and see them land before you subscribe.

Trust & GDPR

Sending data to GA4, under European rules

Server-side tracking moves where the request comes from. It does not move you outside the GDPR: so we built the consent checks in rather than around.

EU-hosted (Germany)

Events are processed in the EU before they reach Google.

Consent gating on both layers

Nothing fires client-side without consent, and the server re-checks.

API secret never exposed

Your Measurement Protocol API secret is encrypted at rest and never sent to the browser or the store.

Hashing before transmission

Email, phone and address are hashed as Google requires: raw identifiers are not sent.

DPA available

A data processing agreement covering this flow is on our DPA page.

99.5% availability target

Tracked in real time on our public status page, in line with our SLA.

FAQ

Frequently asked questions: GA4 server-side tracking

What is GA4 server-side tracking?

Sending your events (page view, add to cart, purchase) from your own server to Google Analytics 4 through the Measurement Protocol, instead of relying only on the gtag running in the visitor's browser. Because the request leaves your infrastructure rather than the browser, it is not affected by ad-blockers or by browser restrictions on cookies. Done properly the server event carries the same client_id and session_id as the browser, so it joins the same session rather than opening a new one.

Why do my server-side GA4 events show up as Unassigned?

Because they arrive without a session_id. GA4 attributes by session, so an event that opens its own session has no source and lands in Unassigned. The fix is not to drop server-side, which is the more complete data: it is to give the event its label back by forwarding the client_id and the session_id read from the GA4 cookies. Our connectors do that by default. If you already have Unassigned revenue, this is almost always why.PrestaShop, WooCommerce, Shopware

Will server-side tracking count my GA4 events twice?

GA4 has no deduplication key of its own, so this depends on how the funnel is split, and our connectors do the splitting for you: the browser tag keeps the engagement events it is good at, and the server owns the conversion. You do not end up sending the same purchase twice. If you wire the Measurement Protocol yourself and re-send an event the tag already sent, GA4 will count both, because it has no way to know they are the same.client_id

How do you connect a website to the GA4 Measurement Protocol?

Three usual routes: write your own integration against the Measurement Protocol, run a server-side GTM container with a GA4 tag, or use a managed connector. With DataFirefly you install the connector for your platform (PrestaShop, WooCommerce, Shopware) or call our API, then paste a single connection key. Your measurement ID and API secret are stored on our side, encrypted: you never paste them into your store.

Is server-side tracking to GA4 GDPR-compliant?

Server-side tracking does not remove the need for consent. Our connectors gate both the browser layer and the server layer on consent, and the dispatcher applies a second check before any event leaves for Google. Events are processed in the EU (Germany), a DPA is available, and the API secret never leaves our server. Server-side is a reliability and data-quality mechanism, not a way around a consent banner.

Does this replace my GA4 browser tag?

No, and you should not want it to. The browser tag sees things the server never will: scroll, engagement time, page sequence, the real referrer. The server sees things the browser loses: the validated order, its true value, the hashed customer data. Our connectors run both and split the funnel so each does what it is good at, which is also why you do not get double counting. The user-provided data and cross-device reporting session stitching is what keeps the two halves in the same session.

Google, Google Analytics and GA4 are trademarks of Google LLC. DataFirefly is not affiliated with Google. Product names are used to describe interoperability.

Stop losing GA4 revenue to the browser

Send the complete funnel to the GA4 Measurement Protocol, stitched onto the right session: consent-aware, EU-hosted, with Meta CAPI, Google Ads, TikTok, Pinterest and Microsoft Advertising from the same event.