Pre-consent tracking: what it is and why regulators treat it as a violation

Network requests carrying identifiers fired before a user has given consent. The single most common GDPR / ePrivacy defect on the European web, and the one regulators have been most willing to fine.

Lukas Kontur · · 5 min read

Pre-consent tracking is a class of finding in our scanner. It fires when, between the start of a fresh page load and the moment a user takes any action on the consent banner, the browser sends one or more network requests that carry identifiers, contain non-essential analytics payloads, or set non-essential cookies.

This is the most common defect we detect. In our scan of 97,000 EU websites, the majority of high-risk classifications were driven by pre-consent tracking, not by missing banners or broken reject buttons.

What the scanner looks for

The detector watches the network from the moment the browser issues the document request until one of three events:

  1. The user clicks a button on the consent banner (accept, reject, settings).
  2. A measurable consent-state cookie or localStorage entry is written.
  3. A timeout elapses (default 8 seconds) without any consent signal.

Any request that fires in that window is examined for three signals:

Any one of these is enough to trigger the finding. All three together are the typical pattern for a Google Tag Manager container that fires before the consent gate.

We are not your lawyer. The bare facts:

National implementations differ in detail. Germany's TTDSG (now TDDDG) and France's transposition through the Loi Informatique et Libertés as enforced by CNIL have produced the most visible enforcement. DPAs across the EU have warned about pre-consent tracking patterns; specific enforcement bars vary by jurisdiction. The underlying principle is the same everywhere: consent first, tracker second.

What regulators have actually done

A short, partial timeline of decisions where pre-consent tracking was the central finding:

These are not the only cases — they are the load-bearing ones. The pattern across them is consistent: the regulator measured the network behavior and treated the technical reality as dispositive, regardless of the policy text.

The scripts that most often cause it

In rough order of how often we see them as the primary cause on a high-risk scan:

The common factor is almost never the script itself — it is the deployment. Each of these vendors publishes a documented way to gate firing on a consent signal; the default install instructions, however, frequently do not mention it.

What a clean scan looks like

A site that passes our pre-consent check does one of the following:

  1. Loads no third-party tracking at all until consent is given. Functional cookies (session, language preference, CSRF) are fine.
  2. Loads tag manager in "denied" state, with all non-essential tags gated behind explicit consent signals, and updates the state through Google Consent Mode v2 or an equivalent mechanism after the user acts.
  3. Loads tracker stubs that do not transmit identifiers until the consent flag is set.

In our 2026 Q1 corpus of 97,000 EU sites, 68% had a tracking service active before any consent decision. The minority of sites that pass the pre-consent check tend to share a profile: the network in the pre-consent window is dominated by the document itself, CSS and font files, and a favicon — nothing that carries an identifier off the device.

Sample scan

78 / 100

High Risk · 23 trackers · pre-consent tracking: yes

See sample report →

How to fix it

The honest version: there is no shortcut. Every tag has to be audited for whether it fires before the consent signal is set. Steps that work in practice:

  1. Open the site in a clean browser profile with dev tools open.
  2. Filter network to "third-party" and reload.
  3. Anything that fires before you click a banner button is a candidate.
  4. For each candidate, find the loader (usually a script tag, a tag manager trigger, or an inline snippet) and gate it on the consent signal.
  5. Re-test. Repeat until the pre-consent window is empty of trackers.

If you use a consent management platform, the platform's "block until consent" mode is necessary but not sufficient — many CMPs only block the cookie write, not the request. Article 5(3) of the ePrivacy Directive requires consent before storing or accessing information on a user's device (cookies, local storage, similar identifiers). Whether a specific pre-consent network request triggers that obligation depends on what the request reads from or writes to the device — a fact-specific question.

For a worked example on your own domain, run a scan and look at the "pre-consent network" panel of the report. Each offending request is listed with its initiator stack, so you can trace it to the source file in your codebase.

Last updated: