TL;DR, Quick Answer
7 min readServer 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.
![]()
Does server side tracking restore Safari cookie lifetimes?
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 rule | Source and date | What a tagging server changes |
|---|---|---|
Seven-day cap on cookies from document.cookie | WebKit ITP 2.1, February 21, 2019 | The server writes the cookie with Set-Cookie, so the cap misses it |
| All third-party cookies blocked by default | WebKit, March 24, 2020 | Nothing. The vendor cookie is gone either way |
| Seven-day cap on cookies from CNAME-cloaked responses | WebKit, November 12, 2020 | Nothing if a CNAME points at a vendor. Host the endpoint yourself instead |
| Third-party cookie choice left to the user | Google, April 22, 2025 | Nothing. Chrome defaults still allow them |
Does server side tracking remove the need for consent?
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.
![]()
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
Start FREE Trial
Real-time dashboard
Goal tracking
Cookie-free tracking
| Event | Where it belongs | Why |
|---|---|---|
| Purchase, refund, subscription change | Server | The payment processor confirms it, and the browser can close first |
| Signup, trial start, plan upgrade | Server | Your database is the record, so a blocked request cannot erase it |
| Pageview and client-side route change | Browser | The server never sees a navigation it was not asked for |
| Rage click, dead click, scroll depth | Browser | These exist only as interactions inside the DOM |
| JavaScript error and broken flow | Browser | The 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
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


How an Attribution Window Decides Which Touchpoints Get Paid
Move the attribution window from 7 to 90 days and one $1,800 order pays three different sets of channels. See the arithmetic and the current platform defaults.


Google Lists Seven Separate Causes of not set in GA4
Google's docs give not set in GA4 a different cause per dimension, from a missing session_start to an empty content_group. Here is each cause and its fix.


What the Numbers Say About Average Bounce Rate by Industry
Nine tracked industries return a documented average bounce rate by industry ranging from 35.76% to 48.38%, sourced from Databox data dated September 2024.


Working Through the Average Order Value Formula Step by Step
The average order value formula divides revenue by orders, and a single discount code or return policy can quietly distort every number a team reports.


How B2B and B2C Sites Compare on Average Session Duration Benchmarks
Databox's own data puts average session duration benchmarks at 77.61 seconds for B2B sites and 92.33 seconds for B2C sites, split by industry and device too.


What Average Session Duration Actually Measures
In classic analytics, average session duration gives zero recorded time to the very last pageview of every session, which quietly drags the average down.
Related Articles


Why Beforeunload vs Pagehide Decides If Analytics Survive
Comparing beforeunload vs pagehide shows why mobile skips beforeunload, blocks the back-forward cache, and why pagehide with sendBeacon flushes data reliably.


What Behavioral Analytics Tracks That Pageviews Miss
Unlike a raw pageview count, behavioral analytics records what a visitor actually does on a page, as a stream of named events tied to that specific visitor.


How Browser Fingerprinting Identifies You Without a Cookie
A combination of canvas rendering, installed fonts, screen size and timezone is what browser fingerprinting turns into an identifier that survives deletion.