PrestaShop module + GA4 Measurement Protocol, EU-hosted

GA4 server-side tracking for PrestaShop

A native PrestaShop module that sends your funnel to the GA4 Measurement Protocol from your server, stitched onto the browser session with the same client_id and session_id. The purchase is fired by the validated order, not by a confirmation page the customer may never see, and it keeps its source instead of landing in Unassigned.

The problem

Where a PrestaShop store loses GA4 revenue

The classic setup is a GA4 module that injects gtag into the front office. Everything it measures depends on one fragile moment: the visitor’s browser rendering the right page with tracking allowed to run.

The confirmation page is optional

On PrestaShop the purchase event fires on order-confirmation. After a 3-D Secure redirect or a PayPal round-trip, a share of customers close the tab before that page renders. The order exists, the money is real, and GA4 never hears about it.

Ad blockers do not read your P&L

A measurable share of shoppers block gtag outright. Browser-only tracking simply subtracts them from your revenue, which quietly distorts every ROAS decision you make downstream.

Server events without a label

Teams that wire the Measurement Protocol themselves discover Unassigned: an event sent without the browser’s session_id opens its own session, with no source. More data arrives, and the reports get worse.

The fix

The validated order, sent from the server, in the right session

The module hooks the PrestaShop order lifecycle. When the order is validated it builds the GA4 event server-side, with the real total, and forwards the client_id and session_id read from the GA4 cookies.

Fired by the order, not the page

PrestaShop validates the order, the event leaves your server. Whether the customer came back from the payment redirect no longer decides whether the sale is measured.

Session stitching by default

client_id and session_id travel with every server event. No Unassigned bucket, no second session, no attribution reset: the purchase keeps the source that earned it.

One funnel, two layers, no double count

The browser layer keeps the engagement events it sees best; the server owns the conversion. The split is done for you, so the same purchase is never sent twice.

Setup

Three steps, and GA4 starts receiving

  1. Install the connector

    A standard ZIP in the module manager, PrestaShop 1.7 and 8. No core override, no theme change, nothing added to your checkout.

  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 PrestaShop connector in detail or Google Analytics 4 across all platforms.

Same connector

Your other destinations from PrestaShop

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: PrestaShop and GA4

Does this replace my PrestaShop GA4 module?

It replaces the delivery, not the measurement. A classic GA4 module injects gtag into your front office and everything depends on the visitor’s browser. Our module keeps a browser layer for the engagement events it is good at, and sends the events that matter, the validated order first, from your server. If you keep a separate GA4 module running alongside, you would count twice: disable its purchase event or let our module own the whole funnel.

Why does my PrestaShop revenue land in Unassigned in GA4?

Because server events arrive without a session_id. GA4 attributes by session, so an event that opens its own session has no source. The module reads the client_id and session_id from the GA4 cookies at order time and forwards both with the Measurement Protocol event, so the purchase joins the session that actually bought.

What happens when the customer never returns to the confirmation page?

That is precisely the case browser-only tracking loses: the customer pays with a redirect and closes the tab. The confirmation page never renders, gtag never fires, the sale never reaches GA4. Server-side, the module reacts to the ORDER: PrestaShop validates it, the event leaves the server, whether the browser came back or not.

Does it work with PrestaShop multistore?

Yes. Every event carries the shop it belongs to, and you can connect each shop of a multistore to its own GA4 property, or several shops to one property, from the same module. The connection key is per site in your DataFirefly console.

Which PrestaShop versions are supported?

PrestaShop 1.7 and 8. The module is a standard ZIP installed from the back office module manager, with no core override and no theme change: it hooks the order lifecycle server-side and stays out of your checkout’s way.

Is this GDPR-compliant, and what about consent?

Server-side does not remove the need for consent, and the module does not try to. It reads the consent state (Consent Mode v2 compatible), gates both the browser layer and the server layer on it, and the dispatcher applies a second check before anything leaves for Google. Events are processed in the EU (Germany), a DPA is available, and your GA4 api_secret is stored encrypted on our side, never in your shop’s database.

Give GA4 the sales PrestaShop already made

Install the module, paste one key, connect GA4. The next order that pays through a redirect will be measured whether the browser comes back or not.