Map the current setup
Every tag, trigger and variable in the existing container, including what's quietly failing.
The damage doesn't show up as an error message. It shows up as a dashboard that quietly disagrees with your order table.
Safari's ITP caps first-party cookies at seven days. Past that window, a loyal customer's next visit gets counted as someone the site has never seen.
A request to a well-known analytics domain gets blocked before it ever leaves the browser, and that traffic simply disappears from reporting.
Half-built ecommerce events and duplicated purchases leave finance keeping its own spreadsheet instead of trusting the dashboard everyone else looks at.
A server-side container on your own subdomain, so requests read as first-party because they are — and you control exactly what leaves it.
Deployed on a first-party subdomain, so a request looks like ordinary site traffic instead of a third-party tracking call an ad blocker can spot by name.
Deliverable: Server-side containerEvent and ecommerce tracking checked against your real order data, not left to trust that the platform's own numbers are correct by default.
Deliverable: GA4 event rebuildExtended within what consent and Safari's ITP actually allow, so a returning customer's next visit is still recognised weeks later.
Deliverable: Cookie policy configuredBoth paths checked against each other so an event that fires from the browser and the server still counts once, not twice.
Deliverable: Deduplication configuredQA runs, staff visits and known bot traffic excluded, so the numbers you report against aren't quietly inflated by your own team.
Deliverable: Traffic filtering appliedWhat fires, where, and why — left in a container you own outright, not locked to an agency that built it and disappeared.
Deliverable: Full documentationEvery tag, trigger and variable in the existing container, including what's quietly failing.
Deployed on your own subdomain, so requests read as first-party rather than third-party.
Client and server tags moved across with deduplication, then checked against real order data.
Tested through real journeys, documented, and left in a container you own outright.
Our GA4 was a mess of duplicated events and half-built ecommerce for over a year. It now reconciles against our order table close enough that finance stopped keeping a separate spreadsheet.
A tag manager migration from years ago had never been finished. Every signup had been counting twice, and nobody had noticed because it was consistent. Finding that paid for the whole engagement.
The measurement rebuild came before a single campaign changed, and it felt slow at the time. In hindsight it's the only reason the decisions since then have been worth anything.
Safari visitors past the seven-day cookie window were showing up as new users every single visit. Our returning-customer rate looked terrible on paper and was actually fine the whole time.
We assumed our ad blocker traffic loss was just an unavoidable cost of doing business online. Moving the container server-side recovered a meaningful chunk of it within the first month.
Internal QA traffic had been hitting the live GA4 property for over a year, inflating every session count we reported to the board. Filtering it out dropped our numbers, but finally made them true.
The old container had been touched by three different freelancers over the years and nobody fully understood what half the tags did anymore. The documentation alone was worth the project.
We'd been told server-side tracking was overkill for a business our size. The migration took two weeks and the cookie lifetime alone recovered enough attribution to change how we read every channel.
Ecommerce events had been half-built since the original theme migration, with some purchases logging twice and others not logging at all. Reconciling it against Shopify's own order export closed a gap we'd been arguing about internally for months.
Someone needs to point a subdomain at the server container, which is usually a five-minute DNS change. Beyond that, we handle the build.
Yes, hosting the container has a small monthly cost, typically far less than the ad spend it stops from being misallocated.
Not entirely — consent rules still apply, and a visitor who declines tracking stays untracked. It recovers what current browser limits are losing regardless of consent.
Yes, we rebuild the events and ecommerce inside your existing property rather than starting a new one, so historical reporting stays intact.
Send us access and we will come back with a written audit: what is tracked, what is double-counted, what is missing, and what we would change first.
No pitch deck · No lock-in · Findings are yours either way