Glossary

What Server Side Tracking Fixes, and What It Leaves Untouched

Taras Shynkarenko
Taras Shynkarenko
•Updated: •7 min read
What Server Side Tracking Fixes, and What It Leaves UntouchedWhat Server Side Tracking Fixes, and What It Leaves Untouched

TL;DR, Quick Answer

7 min read

Server side tracking sends events from a server you control to analytics and advertising platforms instead of sending them from the visitor's browser. It restores identifier lifetimes that Safari cuts, survives filter lists that name vendor hostnames, and needs a shared event ID so the same conversion is not counted twice. It does not remove the consent requirement in Article 5(3) of the ePrivacy Directive or the need for a legal basis under the GDPR.

What is server side tracking?

A website runs server side tracking when the browser sends an event to a server the site controls, and that server forwards the event to analytics and advertising platforms instead of the browser doing it. What moves is the outbound leg: the payload, the identifiers and the destination list sit in infrastructure you can inspect and log. List the events your backend can confirm on its own, because those gain most from the move.

The alternative is client-side tracking, where a vendor script talks to the vendor endpoint directly. The trade is control against visibility: your server sees a verified order, but client-side and server-side analytics split on whether anyone sees the rage click that never reached your backend.

Why did teams move tracking to the server?

Browsers shortened the life of the identifiers client-side tags depend on. WebKit's Intelligent Tracking Prevention 2.1, published February 21, 2019, ruled that "all persistent client-side cookies, i.e. persistent cookies created through document.cookie, are capped to a seven day expiry". WebKit followed on March 24, 2020 by blocking third-party cookies outright in Safari 13.1 and iOS 13.4, stating that "cookies for cross-site resources are now blocked by default across the board". That 7-day cookie limit truncates any returning-visitor or attribution measurement storing its ID with JavaScript.

Chrome went the other way. Google announced on April 22, 2025 that it "made the decision to maintain our current approach to offering users third-party cookie choice in Chrome, and will not be rolling out a new standalone prompt for third-party cookies". Third-party cookies still work in default Chrome, so the pressure comes from Safari, content blockers and consent rates, not one deprecation date.

How does a server side tracking setup work?

Two pieces do the work: a tagging server that receives events and a destination API that accepts them. Google's server-side Tag Manager runs the tagging server on Google Cloud Run or App Engine, or on "a platform of your choice", and reuses "the same tag, trigger, and variable model" as the web container. A client inside the server container claims an incoming HTTP request and turns it into an event object, which the container's tags forward onward.

Meta's Conversions API is one such destination, with or without a tag manager. Meta describes it as a connection carrying marketing data "from an advertiser's server, website platform, mobile app, or CRM to Meta systems", and states that "server events are linked to a dataset ID and are processed like events sent using the Meta Pixel". Check Meta's parameter rules first, because a rejected field becomes a silently dropped match.

A phone showing a browser address bar, next to the section on Safari's cookie expiry rules.

Not when the tagging server sits behind a CNAME. WebKit announced on November 12, 2020 that "ITP now caps the expiry of cookies set in so-called third-party CNAME-cloaked HTTP responses to 7 days", putting a CNAME-pointed vendor endpoint under the same seven days as a JavaScript cookie. A tagging server on your own subdomain, writing its cookie with a Set-Cookie header instead of through document.cookie, sits outside the ITP 2.1 cap, and that is the mechanism behind most first-party cookie tracking claims.

Browser ruleSource and dateWhat a tagging server changes
Seven-day cap on cookies from document.cookieWebKit ITP 2.1, February 21, 2019The server writes the cookie with Set-Cookie, so the cap misses it
All third-party cookies blocked by defaultWebKit, March 24, 2020Nothing. The vendor cookie is gone either way
Seven-day cap on cookies from CNAME-cloaked responsesWebKit, November 12, 2020Nothing if a CNAME points at a vendor. Host the endpoint yourself instead
Third-party cookie choice left to the userGoogle, April 22, 2025Nothing. Chrome defaults still allow them

No. Article 5(3) of the ePrivacy Directive requires consent for "the storing of information, or the gaining of access to information already stored, in the terminal equipment of a subscriber or user", with exemptions for carrying out a transmission and for what is "strictly necessary" to provide the requested service. The rule names the act of reading or writing on the device, not the hostname performing it, so moving the forwarding step to your own server leaves the read on the device where it was. Keep the tracking consent layer in place and treat the tagging server as a transport change.

The GDPR question sits on top of that one. Once an event reaches your server you are processing personal data, which needs a legal basis under Article 6 and a lawful route for any transfer outside the EU. Teams running consent mode keep the same wiring after the move, because the consent state travels with the event to every destination.

How do you stop double counting when the browser and the server both fire?

Send one shared ID on both copies and let the platform discard the duplicate. Meta's deduplication documentation states that "a Meta Pixel's eventID must match the Conversion API's event_id" and "a Meta Pixel's event must match the Conversion API's event_name", and that events "are only deduplicated if they are received within 48 hours" of the first event with that ID.

reported conversions = browser events + server events - matched duplicates

Take one day with 1,000 completed checkouts. The pixel reaches Meta on 700 of them, the server sends all 1,000, and every server event carries the event_id its browser twin used. Matched duplicates come to 700, so reported conversions are 700 + 1,000 - 700 = 1,000, the real number. Drop event_id from the server payload and matched duplicates fall to 0, so Meta reports 700 + 1,000 = 1,700 purchases against 1,000 orders, a 70 percent overcount that every cost-per-acquisition figure inherits.

Server racks with cabling, illustrating the backend infrastructure that decides which events stay on the server.

One event, two counts
Browser events (Pixel)700
Server events1,000
Matched duplicates700
Reported conversions with event_id1,000
Reported conversions without event_id1,700
Same 1,000 checkouts, with the shared event_id keeping the count real and without it inflating cost-per-acquisition math by 70 percent.

Which events belong on the server and which stay in the browser?

Put events your backend can verify on the server and leave behavioral signals in the browser.

Flowsery
Flowsery

Start FREE Trial

Real-time dashboard

Goal tracking

Cookie-free tracking

EventWhere it belongsWhy
Purchase, refund, subscription changeServerThe payment processor confirms it, and the browser can close first
Signup, trial start, plan upgradeServerYour database is the record, so a blocked request cannot erase it
Pageview and client-side route changeBrowserThe server never sees a navigation it was not asked for
Rage click, dead click, scroll depthBrowserThese exist only as interactions inside the DOM
JavaScript error and broken flowBrowserThe failure is the reason no request reached the server

Does privacy-first analytics need a tagging server?

No. A tagging server repairs a cookie-based stack: it re-homes identifiers browsers keep shortening and re-routes calls to hostnames filter lists keep naming. Analytics built without those identifiers has nothing to re-home. Flowsery is cookie-free and EU-hosted, ships one script under 10 KB and applies no data sampling, so privacy-first analytics runs without a proxy in front of it, alongside revenue attribution from Stripe, Paddle, Polar, Lemon Squeezy and Shopify.

Run a tagging server when an advertising platform needs server events it cannot get from the page. Measuring your own product is a separate decision.

Frequently asked questions

Is server side tracking the same thing as server-side rendering?

No. Server-side rendering builds HTML on the server before the browser paints it, and server side tracking forwards analytics events from a server you control. They share a location and nothing else. A site can render every page on the server and still send its events straight from the browser.

Does server side tracking work without any JavaScript on the page?

Partly. Events your backend owns, such as a completed payment or an incoming Stripe webhook, need no browser code. Events describing what someone did on a page need a script to observe them and post them to your endpoint.

Does a tagging server defeat content blockers?

It changes what the blocker matches on. Filter lists name known analytics and advertising hostnames, and a request to your own subdomain is absent from those lists. Blockers also match request paths and script filenames, so a vendor path copied verbatim onto your domain still gets caught.

What customer data can I send through Meta's Conversions API?

Meta accepts contact and demographic fields including email, phone, first name, last name, date of birth, gender, city, state and zip, and requires SHA256 hashing on them. Meta states that client_ip_address and client_user_agent "must never be hashed". A hashed email still identifies a person to anyone holding the same hash, so you need a legal basis before sending it.

Do I still need the Meta Pixel if I run the Conversions API?

Meta's deduplication guidance assumes both are running, since it matches a Pixel eventID against a Conversions API event_id. Dropping the browser side removes the fbp browser ID and fbc click ID the Pixel sets. Run both and deduplicate.

Does server side tracking reduce page weight?

It removes weight when you replace several vendor scripts with one call to your own endpoint, and it adds weight when you keep every vendor tag and duplicate its events on the server. Google lists "improve page performance" among the reasons for server-side tagging. Measure the page before and after instead of assuming the setup delivered it.

Where can I run a server-side Tag Manager container?

Google's server-side Tag Manager runs on Google Cloud Run, on App Engine, or on "a platform of your choice." The container reuses "the same tag, trigger, and variable model" as the web container, so existing tag logic carries over. The hosting choice does not change what happens inside, a client still claims the incoming request and turns it into an event object.

Will Chrome cap third-party cookies the way Safari does?

Not on the timeline Safari set. Google announced on April 22, 2025 that it would maintain its current approach to third-party cookie choice in Chrome and would not roll out a new standalone prompt for them. Third-party cookies still work in default Chrome, so the pressure to move tracking server-side comes from Safari, content blockers, and consent rates rather than from Chrome.

How much time do I have to send the matching server event for deduplication to work?

Meta only deduplicates events received within 48 hours of the first event carrying that event_id. Miss that window and both the browser and server copies of the same conversion get counted, the same overcount a missing event_id causes. Send the pixel and the server request close enough together that both land inside that 48-hour match.

Do I need a tag manager to use Meta's Conversions API?

A tag manager is not required. Meta describes the Conversions API as a connection carrying marketing data "from an advertiser's server, website platform, mobile app, or CRM to Meta systems," and a single integration can call it directly. Server events sent this way are still "linked to a dataset ID and are processed like events sent using the Meta Pixel."

Was This Article Helpful?

Let us know what you think!

See us more often in Google

One click marks Flowsery as a preferred source, so our articles sit higher in your Top Stories, AI Mode, and AI Overviews.

Before you go...

Flowsery

Flowsery

Revenue-first analytics for your website

Track every visitor, source, and conversion in real time. Simple, powerful, and cookie-free.

Real-time dashboard

Goal tracking

Cookie-free tracking

Related Glossary Terms

Related Articles