Client-side measurement was designed for conditions that no longer exist.
I implement Server-Side Tagging that recovers the events you lose and feeds them to Google’s and Meta’s algorithms.
At every stage the number means the same thing. How many paid orders from the store admin reach GA4 as a purchase event in the same period. Each stage closes a different gap.
baseline
Seven purchases in ten never reached GA4, because measurement lived in the browser alone.
after moving to the server
Blockers and ITP stopped cutting events. What still went missing were the purchases where the customer never came back from the payment page.
after adding the webhook
WooCommerce reports the paid order straight to the measurement server, whether or not the customer came back from the payment page.
Who sees your ad is decided today by Google’s and Meta’s algorithms, and that decision is built on conversion data. A gap in measurement stopped being a reporting problem. An event that never arrived, or was never matched, takes no part in deciding who sees the next ad. When conversions from an entire group of users never reach the algorithm — people browsing in Safari, for example — it concludes that the group does not convert and limits how often it shows them ads. In your dashboard you see it as a higher cost per acquisition, not as a measurement error.
They were built to block ads, but their filter lists cover measurement scripts as well. A conversion from a user running a blocker reaches neither GA4 nor the ad panel. On desktop, 38% of internet users in Poland run one.
Safari caps the life of a cookie written in the browser at seven days. A customer who comes back two weeks later counts as a new user from direct traffic, and the campaign that brought them in gets no credit.
Measurement in the browser only works while the browser is in play. A purchase where the customer never returns to the confirmation page leaves no event behind at all.
Not sure what that gap costs you? The calculator works it out on your numbers.
Calculate your SST potential// CASE STUDY
WooCommerce. The same GA4 tag installed in three places at once: in GTM, in a plugin and in code from a developer. One purchase reached the reports several times. The ad budget was based on numbers with no cover in sales.
CHALLENGE
SOLUTION
RESULT
The first level recovers data you are losing today. The second completes what arrives incomplete. The third reaches events the browser will never report.
Measurement moved to your own domain stops looking like a foreign script to blockers, and cookies written from the server do not expire after seven days. Events that used to go missing come back, along with the attribution the browser was writing off as direct traffic.
The server knows more about a transaction than the browser does. It adds parameters that raise the chance of matching an event to a user account, plus data that does not exist on the page at all, such as product cost. Google and Meta then receive, together with the purchase, how much you earned on it.
A webhook from the store reports a paid order in the same second its status changes. Events from other systems on your side arrive the same way, with no browser involved.
„When Mateusz started work, the tracking in Google Analytics and the transaction data in my store were essentially completely incorrect. […] He took on not only the reporting itself, but also the things that matter most for data quality — including implementing and cleaning up Server Side Tagging.”
From an audit of your current setup to documentation the next specialist can pick up.
I go through the whole measurement layer: GTM, GA4, ad pixels and any code loaded outside them.
I design the measurement architecture and set the order of the work.
I launch a GTM Server container under your domain, on infrastructure matched to your traffic and to what the plan sets out.
GA4, Meta, Google Ads and the remaining systems move to the server side. The old setup keeps running in parallel throughout.
I run this stage only where we agreed on it in the implementation plan.
Verification of data completeness in GA4 and in the ad dashboards. Finally, documentation written so the next specialist can take the system over without guessing.


















The platform only changes how the data layer is integrated; the server architecture is independent of it.
I clean up the configuration and move it to the server, while your current measurement keeps collecting data right up to the switchover.
The old and the new tag setups run at the same time. Your current tracking collects data without a break for the whole implementation.
The new measurement takes over data collection only once both streams report the same events and values.
If anything deviates from expectations, we go back to the previous configuration without losing the data collected so far.
I run a Stape audit on every implementation. It rates, among other things, how correctly the setup was built, how well the measurement holds up against blockers and how long cookies survive.
We start with an audit of your current implementation, and I will show you how much data you can recover and what you can enrich.