Measurement, tracking and consent

Measurement

What server-side conversion tracking does, and what it does not

It does not get around consent. It fixes the losses that have nothing to do with consent: blockers, tracking prevention, failed scripts and closed tabs.

By Oscar CobbeCurrent as at 11 minute read7 sources

The problem

When somebody buys from your website, a script in their browser tells Google and Meta that it happened. That message is how the platforms know which ads work, and it is how their bidding algorithms decide who to show your ads to next.

Some of those messages never arrive. An ad blocker stops the script loading at all. Safari's Intelligent Tracking Prevention caps the identifiers the script relies on. A slow connection means the visitor closes the tab before the tag fires. A site update breaks the tag and nothing announces it, because a tag that has stopped firing looks exactly like a quiet week.

The consequence is not that you lose sales. You lose the record of them. Your Stripe account and your order table know exactly what happened; the ad platform does not, and the ad platform is the thing spending your money.

The first question is how big your gap is, and it can be measured: compare what the ad platform reports as conversions against what your order table says, over the same period, and look at the difference.

Before buying anything

Compare the conversions your ad platform reports against the orders in your own system for the same month. If the gap is small, you do not need this.

What server-side means

In the ordinary setup, the visitor's browser talks directly to Google and Meta. In a server-side setup, the browser talks to a server you control, and that server talks to Google and Meta.

That server can be Google Tag Manager's server-side container, running on Google Cloud Run, at an address on your own domain such as data.yourdomain.ie. The address matters. Safari's tracking prevention treats a request to your own domain (same-site) differently from a request to someone else's (cross-site).

Separately, your back end can send the conversion directly. When Stripe confirms a payment, your server calls the Meta Conversions API and the Google Ads or GA4 endpoint itself. That path involves no browser at all, so no blocker, no browser tracking prevention and no closed tab can interrupt it.

A setup can do both. The browser fires its copy, the server fires its own, and the two are matched.

  1. 1A tagging server on your own subdomain, so requests are same-site
  2. 2Server-to-server events from your back end when a payment confirms
  3. 3Both copies of each event carrying the same identifier so they are counted once
  4. 4Customer details used for matching, hashed before they leave your systems
  5. 5The visitor's consent choice carried through, so a refusal is honoured on both paths

Deduplication, and how to test it

If the browser sends a purchase and your server sends the same purchase, the platform receives two purchases. Unless it is told they are the same one, your reported conversions double and every cost-per-acquisition figure you have halves. Deduplication is the part of a server-side implementation to test first.

Both platforms solve it the same way. Meta's Conversions API needs the same event_id and event_name on the browser and server copies, and counts a matching pair once. Google's tags use a transaction ID for purchases in the same way.

The test of an implementation is simple and you can run it yourself. Make a real purchase. Look at the platform's reporting. If it shows one conversion, the deduplication is working. If it shows two, stop and fix it before you make a single decision on the numbers.

The second thing to check is Meta's event match quality score, which the Events Manager reports per event. It tells you how well the identifiers you send are matching to real accounts. A server-side setup that sends fewer or poorer details for matching than the browser did can make things worse, and the score is where that shows up.

SymptomWhat it can meanWhere to look
Conversions doubled after go-liveNo shared event id, so both copies countMeta Events Manager, deduplication
Conversions barely movedServer events not firingThe server container's own request log
Match quality fellFewer identifiers sent than the browser sentMeta event match quality score
Reported revenue does not match StripeCurrency, tax or refunds handled differentlyThe value and currency parameters

The one test that matters

Buy something yourself. If the platform records one conversion, it is set up. If it records two, every figure you are about to base decisions on is wrong by a factor of two.

This is not a way around consent, and that matters

Moving a tag from the browser to a server does not change what needs consent. Regulation 5(3) of the ePrivacy Regulations, S.I. No. 336 of 2011, requires consent before information is stored on, or read from, somebody's device, and the GDPR requires a lawful basis for the processing that follows. Neither rule depends on which machine sends the request.

A server-side setup can carry the visitor's answer through to the server, so that the server sends nothing for a visitor who declined.

Google's consent mode can load the tags before the visitor answers, with their cookies turned off. Until the visitor agrees, or after a refusal, they send Google cookieless pings in place of the full measurement. A ping still carries the visitor's IP address and browser details, so it is personal data, and the privacy notice has to describe it.

The losses that server-side fixes are not the consent ones. They are blockers, Safari's tracking prevention, failed scripts and closed tabs: people who agreed and whose conversion was lost anyway.

Server-side does not get round a refusal

When the visitor's answer is carried through to the server, it applies on both paths, and the server sends a conversion only for a visitor who agreed.

Hashing, and what leaves your building

To match a conversion to an ad click, the platform needs something identifying, such as an email address or a phone number.

Both platforms require them to be hashed (scrambled one way) first. The email is put in lower case with spaces trimmed, and the phone number is reduced to digits with a country code. Each is then put through SHA-256 before it is sent. What is sent is a 64-character code (a digest).

Tidying the details first (normalisation) matters as much as the hash. A hash of "Name@Example.com " is a completely different string from a hash of "name@example.com". A setup that skips that tidying sends digests that match nothing, and the match quality score quietly stays at the bottom.

Hashing is not anonymisation, and it is worth being precise about that in your own records. A hashed email is still personal data under the GDPR, because it is a pseudonym that reliably identifies one person to anyone holding the same list. It belongs in your record of processing (Article 30) like anything else. Sending it to a US platform is a transfer that needs the same basis as the address itself. Whether that transfer is lawful is set out separately.

What it costs to run

The tagging server runs on Cloud Run and is billed on requests and container time. The bill sits on your own Google Cloud account, so you see it directly and can switch it off without asking anybody.

The setup work is where the cost is: establishing the size of the gap first, wiring the consent state through both paths, getting the deduplication right, and verifying it with real transactions.

The platform tags that used to load in the visitor's browser move off it, and the page does not wait for the server container, so the page has less to load.

WhatWho bills youCost
Cloud Run tagging serverGoogle, on your own accountRequests and container time, at Google's published rates
A custom domain for itYour existing DNSNothing
Setup and verificationYour developer or agencyA project, not a subscription

Whether you need it at all

You probably do if you spend meaningfully on ads, sell online, and your platform-reported conversions are well below what your own systems record. The bigger the gap and the bigger the budget, the more the missing data is costing you, because the platforms are choosing who sees your ads based on a picture of your customers with some of them missing.

You probably do not if your ad spend is small, or if you are a service business whose conversions are phone calls and emails that never had reliable browser tracking to begin with. In that case the useful work is different: getting the enquiry into a CRM and attributing it there, which is a smaller job.

And there is a case where it makes no difference at all, which is a business whose reported conversions already reconcile with its own records. That business has a working setup, and the advice is to leave it alone.

The order to do things in

Measure the gap. Decide whether it justifies the work. Then implement, and verify with a real purchase.

Sources

  1. 1.Conversions API, deduplication with event_id · Meta for Developers
  2. 2.Customer information parameters and required hashing · Meta for Developers
  3. 3.Event match quality · Meta
  4. 4.Server-side tagging, and tagging server setup · Google
  5. 5.Consent Mode · Google
  6. 6.S.I. No. 336/2011, ePrivacy Regulations · Irish Statute Book, Office of the Attorney General
  7. 7.Guidance on cookies and other tracking technologies · Data Protection Commission

Free, and no account needed

If you also sell software, check the Cyber Resilience Act

If you also sell a software or connected product, the Cyber Resilience Act may apply to you. Answer five questions and the free check says whether it does.

Run the free check

Find out how big your gap is first

We compare what your ad platforms report against what your own systems recorded, over the same period, and tell you the number. If it is small, the advice is not to buy this.

Server-side conversion tracking

Who wrote this

Oscar Cobbe · Founder, FourWinds Digital

Writes and maintains the legal explainers on this site, and does the compliance work behind them. Every date and article number here is checked against the legislation itself before it is published, and each article shows the date it was last checked.

More about how we work →

Read next

More on Measurement, tracking and consent

Written on 27 August 2026; it describes the law as FourWinds read it on that date. This is general information about how the rules work, not legal advice on your situation. Where you need a solicitor, we say so. How we check the law.