Privacy· 8 min read

Is Server-Side Tracking Actually GDPR Compliant?

Hashing is not anonymization, and moving tracking to your server does not remove the need for a legal basis. What is settled, what is genuinely contested, and how to build the pipeline accordingly.

P
Pivolio Team
Privacy · Jun 16, 2026
Angular white building facades meeting against a pale sky

The pitch for server-side tracking often carries a compliance subtext: your data stays on your infrastructure, identifiers are hashed, nothing leaks to a third-party script. It sounds more private. People conclude it is therefore more compliant.

Some of that is true and useful. Server-side capture genuinely reduces the number of third parties reading data directly from your users' browsers, and it gives you a controllable point at which to enforce policy. Both are real privacy improvements.

But "more private" and "compliant" are different claims, and the second one does not follow from the first. A server-side pipeline sending hashed customer emails to Meta is still processing personal data and still sharing it with a third party. GDPR applies in full. What changes is where you control it, not whether it applies.

This is technical guidance from engineers who build tracking systems, not legal advice. GDPR outcomes depend heavily on your specific facts, your jurisdiction, and your regulator. Consult a qualified data protection professional before making compliance decisions.

Hashing is pseudonymization, not anonymization

This is the single most consequential misconception in the field, because the entire "it's just hashes" defense rests on it.

Anonymized data falls outside GDPR entirely. If data cannot be linked to an identifiable person by anyone, by any reasonably likely means, it is no longer personal data and the regulation stops applying. That is a genuinely high bar.

Pseudonymized data remains fully in scope. GDPR Article 4(5) defines pseudonymization as processing personal data such that it can no longer be attributed to a specific person without additional information — and data in that state is explicitly still personal data.

SHA-256 hashing of an email address is pseudonymization. The reasoning is straightforward once stated: you hash jane@example.com and send the digest to an ad platform. The platform hashes its own copy of every user's email with the same algorithm and looks for a matching digest. When it finds one, it has re-identified Jane.

That is not a side effect. That is the entire purpose of sending the hash. A matching system that could not re-identify the person would be useless for advertising. So the argument "we only send hashes, therefore it is not personal data" defeats itself: if the hash were truly anonymous, it would not work.

There is a second reason hashed emails fail the anonymization test independently. Email addresses come from a finite, guessable space. Anyone holding a list of addresses can hash them all and match by brute force — no secret key protects them, because a plain hash has no key.

If the receiving party can turn your hash back into a person, you did not anonymize the data. You obscured it in transit.

IP addresses are personal data

A settled point that still surprises people, and one that matters because virtually every server-side event carries an IP address to help with matching and geolocation.

The Court of Justice of the European Union established in Breyer v Germany (Case C-582/14, 2016) that a dynamic IP address constitutes personal data in the hands of a party who has legal means to have the subscriber identified. The ruling adopted a relative rather than absolute test — it depends on the means reasonably likely to be available to the controller — but the practical effect for commercial ad tech is that you should treat IP addresses as personal data.

Concretely: an event containing only an IP address and a timestamp, with no hashed email and no user ID, is still personal data processing. There is no threshold below which a tracking event becomes legally uninteresting.

Two separate legal requirements, routinely conflated

Most compliance confusion in tracking comes from collapsing two distinct bodies of law into one vague instruction to "get consent." They are separate, they trigger differently, and you need to satisfy both.

ePrivacy governs accessing or storing information on a user's device. This is the cookie rule. It applies to cookies, localStorage, device fingerprinting, and similar, largely irrespective of whether the information is personal data. Its trigger is the technical act of touching the device.

GDPR Article 6 governs processing personal data, and requires that you identify a lawful basis for it. Its trigger is the processing itself, wherever it happens.

Now the interesting case. A purely server-to-server conversion event — where your backend sends a customer's hashed email to an ad platform, using data you already hold from a completed order, without reading any cookie or device identifier — arguably sits outside ePrivacy's device-access trigger, because nothing was read from or written to the device at that moment.

It remains squarely inside GDPR. You are still processing personal data and still disclosing it to a third party. You need an Article 6 basis regardless.

Be careful with that argument in practice, though, and this is where a lot of vendor content overreaches. Most real-world server-side setups are not purely server-to-server. They rely on a first-party cookie or a client-side identifier set earlier in the session to stitch the journey together — which puts the device-access trigger back in play, just at a different point in time. Whether a given architecture escapes ePrivacy is a fact-specific question, and the answer is usually "less than you would like."

Which legal basis actually works

Article 6 offers six bases. Three come up in tracking discussions.

Consent is the basis that most straightforwardly supports sending customer data to advertising platforms. It must be freely given, specific, informed, and unambiguous, via clear affirmative action. Pre-ticked boxes and implied consent from continued browsing do not qualify. Where ePrivacy also applies to the underlying cookie or device access, you need consent for that regardless — so for most ad-tech setups, consent is doing the work.

Legitimate interest is the basis marketers most want to rely on and the one most likely to be challenged. It requires a three-part assessment: a legitimate interest exists, the processing is necessary to achieve it, and it is not overridden by the data subject's rights and freedoms.

Honest framing: legitimate interest is a genuinely contested basis for sharing personal data with third-party advertising platforms for targeting and measurement. European regulators and courts have taken an increasingly restrictive view of adtech uses over several years. Some organizations rely on it; some have been challenged; outcomes vary by member state and by the specific processing. This is not a settled question, and anyone telling you confidently in either direction is overstating what is known. If your compliance posture depends entirely on legitimate interest for ad-platform sharing, that is a decision to make with counsel, with a documented assessment, and with clear eyes about the risk.

Contract performance covers processing genuinely necessary to deliver what the user asked for. Sending a conversion event to an advertising platform is not necessary to fulfil an order. This basis does not cover advertising measurement.

You are also engaging a processor

An easily missed structural point.

When you use a server-side tracking vendor that handles personal data on your behalf, that vendor is a processor under GDPR Article 28 and you are the controller. Article 28 requires a written contract — a Data Processing Agreement — specifying subject matter, duration, nature and purpose, categories of data and data subjects, and the processor's obligations. It is not optional, and its absence is an infringement independent of whether anything ever goes wrong.

If personal data leaves the EEA, you additionally need a valid transfer mechanism: an adequacy decision, Standard Contractual Clauses, or another Chapter V mechanism, generally with a transfer impact assessment.

Worth noting the ad platforms themselves are usually not processors in this relationship. Meta and Google typically act as independent or joint controllers for data you send them, depending on the product and terms. That changes the paperwork and the allocation of responsibility. Read the terms for the specific products you use rather than assuming everyone downstream is a processor.

Building the pipeline to match

The compliance requirements translate into fairly specific architecture. If your system cannot do these things, no policy document fixes it.

Gate dispatch on consent, per event, per destination. This is the central capability. Consent is not one global switch — a user may consent to analytics but not advertising, or to one platform's processing and not another's. Your pipeline needs the consent state attached to each event and evaluated per destination immediately before sending. A system that can only turn tracking on or off entirely cannot express what the law requires.

Carry consent through the whole pipeline. If consent is captured client-side by a CMP but not propagated into the server-side event, your backend will happily dispatch events for users who declined. This is a common and serious defect precisely because it is invisible in testing unless you specifically test the denied path.

Minimize what you send. Article 5(1)(c) requires data minimization. In practice: send the identifiers that measurably improve match rate and stop there. Sending date of birth and gender because the API accepts them, without evidence they help your match rate, is processing you cannot justify.

Truncate or omit IP addresses where they are not load-bearing for your use case.

Know your retention position and state it accurately. Whether you expire data on a timer or keep it until a customer removes it, Article 5(1)(e) asks you to justify how long you hold it — and your privacy notice has to describe what your systems actually do. A stated retention period that no job enforces is worse than an honest "kept until deleted": one is a misstatement to data subjects, the other is a position you can defend.

Make deletion actually work. An erasure request must reach your event store and identity graph, not just your primary customer database. If a person can be reconstructed from your tracking pipeline after deletion, the request was not fulfilled. Worth testing this end to end before someone asks.

The consent signal chain

Consent Mode connects this to the Google side of the stack specifically. Since March 2024, Google has required EEA advertisers to implement Consent Mode v2 through a Google-certified CMP, per CookieHub's summary of the requirements.

The mechanism worth understanding: Consent Mode transmits consent state alongside events, so the platform knows whether it may use the data for advertising. When advertising storage is denied, Google does not collect advertising data directly and falls back to modeled conversions.

The architectural point is that a signal like this is only meaningful if your pipeline respects it before dispatch rather than after. And Google's is not the only one — Meta has Limited Data Use, TikTok has its own consent parameters. A multi-destination pipeline needs to map one internal consent state onto each platform's distinct mechanism. There is no universal flag.

The short version

Server-side tracking does not exempt you from GDPR, and hashing does not anonymize anything. What server-side architecture genuinely gives you is a single, controllable point where policy can be enforced before data leaves — which is a much better position than hoping a tag manager fires the right tag.

The questions worth asking about your own setup: Can you prove, for a specific event sent last Tuesday, what consent state the user was in and which destinations it was sent to? Can you honor a deletion request across your event store? Do you have a DPA with everyone in the path?

If the answer to any of those is no, that is a more urgent problem than which conversions API you integrated — and unlike the legal questions above, those three have unambiguous answers.

PrivacyGDPRConsentCompliance

Stop paying for conversions you can't see.