Skip to main content

Google Consent Mode v2 and server-side tagging: what actually changes

Consent Mode v2 and server-side tagging are usually sold as data recovery tools. They are not. Here is what each one genuinely changes about the conversion data your bidding algorithms learn from, the firing order everything depends on, the modelling thresholds Google publishes, and an order of work that keeps your reporting readable.

By SBPO Consulting

The problem is not the number in the report

Almost every conversation about consent starts in the wrong place. Someone opens a dashboard, sees fewer conversions than the CRM records, and concludes that the job is to close the gap. That framing makes the problem sound like accounting. It is not.

The expensive consequence of consent-related data loss is not that reporting undercounts. It is that automated bidding learns from the subset of conversions it can see, and that subset is not a random sample of your customers. Consent rates vary by browser, device, country, age group and by how aggressively the banner is designed. If the people who accept tracking differ systematically from those who decline — and they do — then every value-based bidding strategy in the account is trained on a skewed population and optimises confidently towards it.

That is why this matters more to a paid media programme than to a reporting function. An undercount you know about is survivable; you annotate it and move on. A silently biased training signal is not, because nothing in the interface tells you it is happening. Consent Mode v2 and server-side tagging are the two mechanisms usually proposed as the fix. One of them helps with the bias problem. The other mostly does not, and is frequently sold as though it does.

Consent Mode is a signalling protocol. It does not collect consent — that is your consent management platform. It transmits what the visitor decided so that Google tags can adjust their behaviour accordingly.

Version 2 kept the two original parameters and added two more:

Parameter What it governs
ad_storage Storage of cookies and identifiers used for advertising
analytics_storage Storage used for analytics measurement
ad_user_data Sending user data related to advertising to Google
ad_personalization Use of that data for personalised advertising

The addition matters more than it looks. The original two parameters were about storage on the device. The two added in v2 are about transmission and downstream use. States which used to be inexpressible are therefore now coherent and common: a visitor can decline advertising cookies while permitting analytics, or permit data transmission while refusing personalisation. Your CMP has to be able to express those combinations, and your tags have to respond to them independently rather than treating consent as a single yes-or-no switch. A surprising number of implementations map every consent category to all four parameters and call it finished. That is not a consent implementation; it is a boolean with extra steps.

Alongside the technical protocol sits a commercial one. Google’s EU user consent policy requires advertisers and publishers to obtain consent for cookies or local storage where legally required and for the collection, sharing and use of personal data for ad personalisation — plus records of consent, a clear way to withdraw it, and identification of each party that may process the data. Those obligations are yours as the controller; no tag configuration discharges them.

Default denied, update on choice: the firing order everything depends on

This is the single most common point of failure, and it is a build problem rather than a marketing one.

The sequence Google documents is: set consent defaults before any measurement call runs, load your consent solution (using the wait-for-update option if it loads asynchronously), then issue an update as soon as the visitor interacts with the banner. Google states the consequence of getting this wrong plainly — if the consent code is called out of order, consent defaults will not work.

In practice the failure looks like this. The CMP is deployed through the tag manager as a custom template firing on all pages, alongside the Google tag, also firing on all pages. Which one wins is a race, and races resolve differently on a fast office connection than on a congested mobile network — which is why this passes QA on a developer machine and fails in the field.

The fix belongs in the page template, not the tag manager. The consent default command should be emitted in the document head, before the container loads, so that ordering is guaranteed by document order rather than hoped for. If your CMP cannot support that, it is worth changing the CMP. Getting it right usually means a small change by whoever owns the front-end build, which is a much better conversation to have early than after three months of unusable data.

Two related details are worth setting deliberately. Defaults should be region-specific rather than global, and defaulting anything to granted outside the EEA and UK is a legal choice for your organisation rather than a technical default for an implementer to pick. And the update must fire on withdrawal as well as on acceptance, which is the path nobody tests.

Basic or advanced: the decision that determines what you can model

Google offers two implementation shapes, and the difference between them is consequential.

Basic Advanced
Tags before interaction Blocked; they do not load Load with defaults set to denied
Data sent when consent is denied None — not even the consent state Consent state plus measurement without cookies
What those pings contain Nothing Timestamp, user agent, referrer, and boolean consent state
Modelling available General model Advertiser-specific model

Advanced mode produces materially better modelling, because Google’s systems can calibrate against your own denied traffic rather than a generic pattern. Basic mode produces a general model, because there is nothing specific to calibrate on.

Here is where the industry genuinely disagrees, and it is worth stating rather than glossing over. Advanced mode sends a network request after a visitor has declined. One camp argues this is fine: nothing is stored on or read from the device, so the ePrivacy consent rule is not engaged, and the ping carries no identifier. The other argues that an IP address, user agent and referrer arriving at a third party is processing of personal data needing a lawful basis under the GDPR regardless of what the ePrivacy rule says — and points out that the European Data Protection Board published guidelines on the technical scope of Article 5(3) precisely because that rule was never confined to cookies.

Both positions are argued in good faith by competent people, and the practical answer varies by market and regulator. What we will say is this: it is a legal question, the answer should come from someone qualified to give it, and no agency — including this one — should make that call for you on the grounds that it improves modelling. If your counsel is uncomfortable with advanced mode, run basic mode and plan measurement on the assumption that modelling will be weaker.

Where server-side tagging genuinely helps, and where it is oversold

Google’s stated case for server-side tagging is control over the flow of marketing data, less work for the client because a single stream replaces several near-identical vendor requests, and the ability to enrich data with information that should not be exposed to the browser. It also notes that cookies set with the HttpOnly flag are more durable and more secure. Those claims are accurate. The claims made around them in sales decks frequently are not.

What it genuinely fixes. The strongest argument is cookie lifetime. Safari’s Intelligent Tracking Prevention caps persistent cookies created through document.cookie at a seven-day expiry, and WebKit notes that cookies created that way cannot be HttpOnly. A cookie set in an HTTP response from your own tagging subdomain is not written by JavaScript and is not subject to that cap. If your buying cycle is longer than a week — and in B2B or considered retail it always is — that is a real improvement in returning-visitor attribution rather than a theoretical one.

The second benefit is client-side weight. Instead of dispatching near-identical requests to several vendors from the browser, the page sends one stream and the server fans it out. The effect on Core Web Vitals is genuine but usually modest, and largest on sites carrying many vendor scripts — which is to say, on sites that should probably remove some vendors first.

The third is governance. A server container is the only place you can enforce a rule such as “no email address ever leaves our infrastructure for this vendor”, because you can inspect and redact the payload before it is forwarded. If you have a data protection commitment you need to demonstrate rather than assert, this is how.

What it does not fix.

Claim you may hear What is actually true
Recovers conversions lost to consent refusal No. Consent is established in the browser, and the server has no standing to override it
Removes the need for a cookie banner No. Setting a cookie from your server is still storage on the visitor device
Makes you compliant No. It changes where processing happens, not whether it was permitted
Solves attribution Partly. It extends cookie lifetime; it does not resolve cross-device or walled-garden reporting
Defeats ad blockers permanently Overstated. First-party endpoints match fewer blocklists today. That is an arms race, not an architecture

If the proposal you received leads with the first or the last row, ask the supplier to put the mechanism in writing.

The mechanics are simpler than most implementations make them. The banner captures the choice and passes it to the Google tag; the Google tag adds consent parameters to the HTTP request it sends to your server container; Google product tags inside the container are consent-aware and adjust what they send. Google is explicit that because of this architecture you only need to configure consent mode in the web container.

That sentence is where a great many server-side builds quietly go wrong, because people read it as “consent is handled for me”. It is handled for Google’s own tags. It is not handled for anything else. If you add a server-side tag for another advertising platform, a CRM, a warehouse destination or a custom HTTP request, you are responsible for reading the consent state off the incoming event and gating that tag yourself. Nothing enforces it, nothing warns you, and the tag will fire happily on a declined visitor forever.

Two further cases deserve attention. Events sent to the container from your own back end — a server-to-server purchase confirmation, say — carry no browser consent state unless you attach one, so the decision has to be persisted where your back end can read it. And Google recommends hosting the tagging server on the same origin as your site or a subdomain of it, which is what makes the first-party cookie behaviour work at all. An endpoint on an unrelated domain buys the operational cost with few of the benefits.

Modelling thresholds, and when a modelled number means nothing

Modelling is usually described vaguely, so here are the published numbers.

For behavioural modelling in GA4, Google states two prerequisites: the property collects at least 1,000 events per day with analytics_storage denied for at least seven days, and has at least 1,000 daily users sending events with analytics_storage granted on at least seven of the previous 28 days. Google also says plainly that meeting those external prerequisites does not guarantee eligibility, because the underlying model applies further criteria of its own.

For conversion modelling in Google Ads, the documented threshold is 700 ad clicks over a seven-day period, per country and domain grouping.

Read that last clause carefully, because it decides the answer for most mid-market advertisers. The threshold is not applied to your account in aggregate. It is applied per country and domain grouping. An advertiser running in six European markets can have comfortable total volume and qualify in none of them. If that describes you, modelling is not going to arrive, and the correct planning assumption is that it never will.

Modelled conversions also enter reporting and bidding automatically, and they cannot be joined to a customer record, because there is no record — they are an estimate of activity that was never observed. They are legitimate for judging trend and for feeding bidding, and illegitimate for reconciling against invoiced revenue or handing to sales as leads. Keeping observed and modelled figures visibly separate in the reporting layer prevents an argument between finance and marketing before it starts.

Enhanced conversions and hashed first-party data

Enhanced conversions are the one mechanism here that does not depend on cookies at all, which makes them the most durable thing on this page. First-party customer data you have already collected — email address, name, home address, phone number — is hashed using SHA-256 and sent alongside the conversion for matching. Google specifies the normalisation applied before hashing: strip leading and trailing whitespace, convert to lower case, format phone numbers to E.164, and remove periods from Gmail and Googlemail addresses before the domain. Get that wrong and the hash simply will not match, silently. Two variants are worth distinguishing: enhanced conversions for web measures online events, while enhanced conversions for leads matches an offline outcome back to the website interaction that produced it.

The practical difficulty is rarely the hashing. It is having the data at the moment of conversion, which is a form design and CRM problem — and for transactional sites, a question of what the checkout captures and exposes. Push the identifier into the data layer deliberately at the confirmation step rather than scraping it out of the rendered page, which is the shortcut most implementations take and the reason so many break the next time somebody edits a template. And consent still applies: hashing is a security measure, not a legal basis.

Most implementations are tested once, on the accept path, by the person who built them. That is roughly a third of the coverage you need. Tag Assistant is the right tool: the earliest consent event shows your defaults, the most recent shows the update, the consent tab exposes on-page default and on-page update columns for each parameter, and the tags tab lets you open a tag and confirm it behaved as the consent state required. Run all six of these before calling the work done.

  1. Decline path. Fresh browser profile. Confirm all four parameters read as denied at page load, before any interaction, and that no advertising or analytics cookie is written.
  2. Accept path. Fresh profile. Confirm the update fires on interaction and that every parameter flips as expected.
  3. Partial consent. Accept analytics, decline advertising. This is the state real users select and the state almost nobody tests. Confirm the tags that should fire do, and the tags that should not, do not.
  4. Withdrawal. Accept, then withdraw through the banner. Cookies should stop being written and the update should fire again. Withdrawal is a legal obligation, not a nicety.
  5. Region behaviour. If you configured region-specific defaults, verify each one. Google lists defaults that fail to adapt to visitor location as a documented misconfiguration.
  6. Server container. In preview mode, confirm the consent parameters arrive on the incoming request, and open every non-Google tag to confirm it is explicitly gated.

Repeat all of it after any CMP version bump, any container publish touching the Google tag, and any front-end release that changes the head of the document. This is where consent implementations drift, and drift is invisible until a quarter of data is already wrong.

A rollout order that does not break reporting mid-quarter

The sequence matters as much as the work, because each of these changes moves your numbers and you need to be able to attribute the movement.

  1. Fix conversion definitions first. If a conversion action counts a view of a thank-you page, or counts three different things at once, nothing downstream is worth improving. This is the first step of any Google Ads audit for the same reason.
  2. Fix the data layer second. Consistent event names, consistent parameters, values present where they belong. Consent mode on top of an inconsistent data layer produces consistently wrong data.
  3. Deploy consent mode client-side, then leave it alone. Verify it with the protocol above, annotate the deployment date in your analytics property, and let a full reporting cycle pass so you can see what it did.
  4. Only then introduce the server container, running in parallel with the client-side setup so you can compare before cutting anything over.
  5. Migrate one destination at a time. Analytics first, because it is easiest to validate; advertising destinations after, one platform per change.
  6. Never change consent implementation and attribution settings in the same month. If you do, you will not be able to say which change caused what.

Keep a written change log with dates against each step. In six months, when somebody asks why cost per acquisition moved in March, the difference between a five-minute answer and a two-week investigation is whether that log exists.

How this connects to your banner, your policy and your CMP

Two things sit outside the tag manager and get forgotten.

The first is that consent mode is downstream of the banner, and the banner is a design artefact with legal consequences. If reject is harder to find than accept, you have a regulatory exposure and a data quality problem at once, because coerced consent produces a sample skewed in ways you cannot correct for. The direction of regulation is unambiguous: the Digital Markets Act prohibits gatekeepers from tracking end users outside their core platform service for targeted advertising without effective consent having been granted, and “effective” is doing real work in that sentence. A genuinely neutral banner is uncomfortable to design, and it is the option that leaves you with data you can trust.

The second is your cookie policy. It has to describe what actually runs, and server-side tagging makes that list harder to compile, not easier, because the tags no longer appear in a browser inspection. Somebody has to maintain the inventory by hand. If your policy was generated from an automated scan of the site, it is now describing a subset of what you do — exactly the discrepancy a regulator or a prospective enterprise client will notice.

None of this is difficult work. It is careful work, done in the right order, by someone who will still be there in six months to answer for it. If that person does not exist in your organisation, the honest choice is a simpler measurement setup you can defend rather than a sophisticated one nobody owns. We would rather help you work out which of those you are — through our analytics practice, or as part of a wider marketing programme — than build something elaborate that quietly stops working.

Questions

Common questions

Is Consent Mode v2 mandatory?

It is not a law, and describing it as one confuses two separate obligations. The law — the GDPR together with the ePrivacy Directive as implemented in each member state, and PECR in the UK — requires valid consent before you store or read information on a visitor device for advertising or analytics. That obligation exists whether or not you use any Google product. Consent Mode is the mechanism by which you tell Google what the visitor decided. What is mandatory is the commercial condition: Google requires advertisers and publishers serving users in the EEA and UK to obtain consent under its EU user consent policy, and to pass those signals for personalised advertising features to keep working. So the honest phrasing is that consent is legally required, and Consent Mode v2 is the platform-specific plumbing for reporting it.

Does server-side tracking let me bypass consent?

No, and anyone who implies otherwise is selling you a liability. Consent is a fact established in the browser, by the person using it, and moving your tag processing onto your own infrastructure does not change what that person agreed to. Google is explicit that with a server container you still set up consent mode in the web container, because that is where the choice is made and where the signal originates. The legal position is unchanged too: writing a cookie from your own server is still storing information on someone elses terminal equipment, and the European Data Protection Board has published guidelines specifically on the technical scope of that rule precisely because it was never limited to cookies. Server-side tagging changes where data is processed and who controls it. It does not change whether you were allowed to collect it.

What does a server-side container actually cost to run?

We do not quote a figure, because the answer is a function of your traffic and your uptime expectations and any number produced without those is invented. The drivers are worth knowing, though. Every measurement event becomes a request to infrastructure you are paying for, so a high-traffic content site and a low-volume B2B site are not in the same conversation. Google recommends provisioning production as a cluster rather than a single instance, and separately requires exactly one preview server, so there is a standing baseline before any traffic arrives. Servers should have at most one vCPU, because additional vCPUs are not used and harm autoscaling, which means you scale out rather than up. Then there is egress and logging. The larger cost is usually human: someone has to own the DNS record, the certificate on the tagging subdomain, container updates and an incident runbook.

Will server-side tracking recover all my lost conversions?

No. It will recover some of what you lose to cookie lifetime limits, because a cookie set in an HTTP response from your own subdomain is not subject to the seven-day cap Safari applies to persistent cookies written by JavaScript. That is a real and measurable gain for returning-visitor attribution over longer consideration windows. It will not recover anything you lost to a visitor declining consent, it will not reconstruct cross-device journeys, and it will not change what the ad platforms are willing to report back to you. If the pitch you received described server-side tagging as a fix for consent-related data loss, the pitch was wrong about the mechanism.

How do I verify consent mode is working correctly?

Use Tag Assistant and compare the earliest consent event against the most recent one. The earliest tells you what your defaults were at page load; the most recent tells you whether the update landed after the banner interaction. The consent tab shows on-page default and on-page update columns for each parameter, and the tags tab lets you click an individual tag and confirm it behaved according to the consent state. Google documents the failure patterns worth looking for: no implementation at all, defaults never set, defaults set after tags have already fired, an update that never applies, and region defaults that do not adapt to visitor location. Test the decline path, the accept path and at least one partial-consent combination, because partial consent is the state most implementations have never been tested in.

Related services

If you would rather not do this yourself

Data analytics

Measurement planning, tracking implementation, warehouse modelling and reporting built so the numbers reconcile, the definitions are written down, and decisions stop waiting on a spreadsheet.

PPC management

Google Ads, Microsoft Advertising, Shopping and paid social managed against your unit economics — with the conversion tracking rebuilt and verified before any budget is spent.

Digital marketing

Strategy, search, paid media, content and measurement run as one programme, so you can say which channel earned the enquiry rather than which one claimed it.

Keep reading

Next step

Tell us what you are trying to build.

Send us the problem, the constraint and the deadline. You will get a considered reply from someone who would actually do the work — not a templated proposal.