Paid Media

Server-Side Tracking: What It Recovers, and What It Costs

Browser privacy changes broke conversion tracking. Server-side forwarding recovers a real share of it: how much, how it works, what it does not fix.

If your Meta account reports fewer conversions than your shop does, you are not imagining it. Between Intelligent Tracking Prevention, ad blockers, third-party cookie deprecation and iOS App Tracking Transparency, a meaningful share of conversions never reach the ad platform at all.

The consequence is not just bad reporting. The platform's optimisation runs on the conversions it can see. If it sees 60% of them, it optimises against a biased sample — and it systematically under-values the audiences that block tracking most, which in several markets are the audiences with money.

Server-side tracking fixes a large part of this. It is also more work than the vendor pages suggest. Here is the honest version.

What actually breaks

Third-party cookies. Safari and Firefox block them outright. Chrome's position has moved repeatedly, but planning around their availability is not sensible.

Intelligent Tracking Prevention. Safari caps first-party cookies set via JavaScript at seven days, and at 24 hours when the visitor arrived from a link with tracking parameters. A visitor who converts on day nine is untraceable.

Ad blockers. Between 25% and 40% of desktop users depending on market and audience. Technical and younger audiences are at the high end. A blocked pixel does not fire at all.

iOS ATT. Most users decline app tracking. For Meta specifically, this removed a large share of app-to-web attribution.

Stack these and browser-side tracking commonly misses 20–40% of conversions. The exact figure depends entirely on your audience — measure it rather than assuming a number from a blog post, including this one.

How server-side tracking works

Instead of the browser sending the conversion event to the ad platform, your server sends it.

Browser  →  your server  →  ad platform API

The request comes from your infrastructure, not from a script the browser can block. It carries data your server already holds — the order value, the currency, the hashed email of the customer who just bought — rather than data reconstructed in a cookie.

Each platform has its own name for the endpoint: Meta calls it Conversions API, Google calls it Enhanced Conversions and the Data Manager API, TikTok calls it Events API. The mechanics are the same.

Deduplication is the part people get wrong

You almost always run both browser and server tracking. The browser event captures rich context; the server event is reliable. Send both and you double-count every conversion that succeeds in the browser.

The fix is an event ID shared by both:

// browser
const eventId = crypto.randomUUID();
fbq('track', 'Purchase', { value: 129.90, currency: 'EUR' }, { eventID: eventId });

// server, same eventId
{ "event_name": "Purchase", "event_id": eventId, "user_data": { ... } }

The platform sees both, matches the ID, keeps one. Get this wrong and your reported ROAS doubles, you scale on a number that is not real, and you discover it a month later.

Check it in the platform's event manager, which reports deduplication rates directly. Anything below about 90% match on events that fired in both places means the ID is not being passed correctly.

Server-side tracking does not exempt you from consent. If anything it raises the stakes: you are now processing personal data on your own infrastructure and forwarding it to a third party.

Practically:

  • Do not send events for visitors who declined. The consent state has to travel with the event through to the server. Firing server-side because the browser pixel was blocked by a consent choice is a straightforward violation.
  • Hash personal identifiers — SHA-256 on a normalised, lowercased email before it leaves your server. Every platform expects this.
  • Say so in your privacy policy, specifically. "We use cookies" does not cover server-to-server transmission of customer data.

An agency that sets this up without asking about your consent implementation is creating a liability for you.

What it recovers, realistically

Published case studies claim anything from 10% to 100% recovery. Treat the high end sceptically — the studies with the largest numbers are usually published by the vendors selling the implementation.

What we typically see:

  • 10–30% more attributed conversions in the platform, on a properly deduplicated setup
  • Better match quality, which is the underrated benefit: more matched events means better audience modelling, which improves delivery independent of reporting
  • More stable attribution across iOS, where browser-side is weakest

The first two months after implementing it will look like growth in the reporting. It is not growth. It is the same conversions, now visible. Anyone presenting that as a performance improvement is either confused or hoping you are.

What it does not fix

It does not create attribution truth. Platform-reported conversions remain the platform's claim about its own contribution. Meta and Google will both claim the same sale. Server-side makes each claim more complete; it does not reconcile them.

It does not replace your own analytics. You still need a source of truth — your shop, your CRM — that platform numbers are measured against. If Meta claims 340 conversions and your store recorded 210 total orders across all channels, the problem is not tracking coverage.

It does not fix a bad offer. More accurate measurement of a campaign that is not working tells you more precisely that it is not working.

Implementation paths

Platform-hosted. Meta's CAPI Gateway, or a partner integration. Fastest, least control, and you are trusting a third party with the event stream.

Server-side Google Tag Manager. A GTM container running on your own infrastructure that receives events and fans them out to every platform. The most common serious implementation. Runs on Cloud Run, App Engine or any container host; budget €50–200 a month depending on volume.

Direct API integration. Your backend calls each platform's API when the order completes. The most reliable, because it fires from the same code path that creates the order — no browser involved at all. Also the most engineering work, and it needs redoing per platform.

For an e-commerce site with an existing backend, the direct integration is usually right: the event fires when the order is genuinely created, not when a thank-you page happened to load.

A realistic sequence

  1. Measure your current gap first. Compare platform-reported conversions to your actual orders for the same period. If the gap is small, you have a smaller problem than you were told.
  2. Pick one platform — usually the one with the most spend.
  3. Implement server events with deduplication, and verify the dedup rate.
  4. Run both for two weeks and compare.
  5. Only then roll out to the other platforms.

Doing all platforms at once means that when the numbers look wrong, you cannot tell which implementation caused it.

The short version

Server-side tracking is real, worth doing above a certain spend, and routinely oversold. It recovers conversions the browser loses, improves audience matching, and requires deduplication and consent handling to be correct or it makes your reporting actively worse.

Below roughly €3,000 a month in spend, the implementation cost is hard to justify against the media it displaces. Above €10,000, not having it means optimising against a biased sample of your own results.

Keep reading

Tell us what you are trying to grow.

One team. Three offices. Twenty-six languages. Send us the problem and you get a senior answer — not a sales script.

A written proposal within one business day, in your language.