Consent Mode v2 Deep-Dive: How Google Models Conversions from Cookieless Pings
Consent Mode v2 has been mandatory since March 2024. Four signals, Behavioral Modeling, Conversion Recovery: what happens technically and what it means for your data.
Key Takeaways
- Consent Mode v2 has been a prerequisite for Google Ads remarketing and conversion tracking in the EEA since March 2024
- Four signals control behavior: analytics_storage, ad_storage, ad_user_data, ad_personalization
- With denied, Google sends cookieless pings: requests without identifiers used for Behavioral Modeling
- Conversion Recovery of 50 to 70%: Google models conversions based on consent patterns and aggregated data
Key Takeaways
- 70% consent rate does not mean 30% data loss, but only 10 to 15% thanks to Behavioral Modeling
- ad_personalization denied means no remarketing: every percentage point of consent enlarges your audiences
- Higher consent rate leads to better modeling quality and more precise ROAS values
- GA4 reports show modeled data with triangle icon, Realtime report only observed data
Key Takeaways
- Consent Mode v2 has been mandatory since March 2024, without it access to Modeled Conversions and remarketing lost
- Correct implementation reduces data loss from 35% to 12% at 65% consent rate
- Banner optimization increases consent rate by 5 to 15 percentage points without compliance risk
- Behavioral Modeling requires at least 1,000 events/day, small stores remain below threshold
Key Takeaways
- gtag consent default must be before GTM script, wait_for_update prevents premature tag firing
- gcs parameter encodes consent state (G111 = all granted, G000 = all denied), must be forwarded in SST
- Consent update after page reload must be set immediately, not after banner rendering
- Shopify Customer Privacy API delivers region-dependent defaults, integration with getRegion()
Since March 2024, Consent Mode v2 is no longer a recommendation but a prerequisite. Google requires the implementation for all advertisers in the EEA who use Google Ads remarketing or conversion tracking. Without Consent Mode v2, you lose access to Modeled Conversions, remarketing audiences, and Enhanced Conversions.
This article explains not just what Consent Mode v2 is (that is in Google's documentation), but how it works technically, which data flows at which consent state, and which levers you have to maximize data quality.
For you as a campaign manager: 70% consent rate does not mean 30% data loss. Consent Mode v2 Behavioral Modeling recovers 50-70% of denied conversions. Effective data coverage: 85% instead of 70% (15 percentage points recovery). Without Consent Mode v2 (mandatory since March 2024), you lose remarketing capability completely and Enhanced Conversions access. ad_personalization: denied means no remarketing. Every percentage point higher consent rate enlarges your retargeting audiences.
For you as a decision-maker: Consent Mode v2 mandatory since March 2024 for Google Ads in EEA. Without it: remarketing lost completely, conversion tracking accuracy drops 50-70%, CPA rises 30-50%. Correct implementation at 65% consent rate reduces data loss from 35% to 12% through Behavioral Modeling. Banner optimization increases consent rate 5-15 percentage points. Investment: 2-4 hours UX work on banner. Return: permanently better data quality worth five figures annually.
For developers: Consent Mode v2 extends v1 with two signals: ad_user_data and ad_personalization. If your setup only sends v1 signals, Google treats the missing signals as denied. You must explicitly set all four signals, otherwise Enhanced Conversions and remarketing will not work.
The four signals in detail
Consent Mode v2 works with four signals. Each signal controls a specific dimension of data processing.
analytics_storage
Function: Controls whether GA4 may set cookies and collect analytics data.
When granted: GA4 sets _ga (Client ID, 400 days), _ga_{STREAM} (Session ID, 30 minutes), and additional cookies. Full data collection: pageviews, events, ecommerce, user properties.
When denied: GA4 sets no cookies. Instead, GA4 sends cookieless pings: HTTP requests to google-analytics.com without Client ID, without Session ID, without user identifier. The ping contains: pageview URL, referrer, user agent, screen resolution, language setting, consent state. Google uses these pings for Behavioral Modeling (more on this later).
Special case: analytics_storage is the only signal for which some businesses argue for special treatment. The argument: if data flows through first-party SST and personal data is filtered, analytics_storage: granted could fall under legitimate interest. The German Data Protection Conference (DSK) views this critically. Our GDPR tracking guide covers the legal risk assessment in detail.
ad_storage
Function: Controls whether Google Ads and Floodlight may set cookies.
When granted: Google Ads sets conversion cookies (_gcl_aw, _gcl_dc) that link click IDs with user sessions. Floodlight sets similar cookies for DV360 campaigns. These cookies enable direct attribution of conversions to ad clicks.
When denied: No cookies. Google Ads sends cookieless pings with the gcs parameter (Google Consent State), which encodes the consent status. Attribution of conversions to clicks happens through modeling instead of direct cookie matches.
Campaign impact: Without ad_storage: granted, direct click-to-conversion paths are missing. Smart Bidding has fewer data points for optimization. Google compensates through Behavioral Modeling, but modeling quality depends directly on your consent rate.
ad_user_data
Function: Controls whether user data may be sent to Google for advertising purposes.
When granted: Enhanced Conversions work: hashed email addresses and phone numbers are sent to Google to attribute conversions even without cookies. Customer Match audiences can be created.
When denied: No user data to Google. Enhanced Conversions are disabled. Customer Match is not possible. Conversion attribution is limited to cookie-based and modeled attribution.
Important: ad_user_data was introduced with Consent Mode v2. It did not exist in v1. If your setup only sends v1 signals (analytics_storage and ad_storage), ad_user_data and ad_personalization are missing. Google treats missing signals as denied.
ad_personalization
Function: Controls whether personalized advertising (remarketing) is allowed.
When granted: Remarketing audiences are populated. The user can appear in remarketing campaigns, similar audiences, and Customer Match audiences.
When denied: No remarketing. The user is not added to any audience. Existing audience memberships for this user are not updated.
Practical impact: Remarketing is the most profitable campaign type for many stores. Every percentage point of consent rate you gain directly enlarges your remarketing audiences.
Without ad_personalization: granted you have no remarketing audiences. At 60% consent rate, 40% of your visitors are invisible to remarketing. Increase consent rate to 70%, and your remarketing audience grows by 25%. This is direct impact on your most profitable channel.
The gcs parameter: Google's consent encoding
With every request to Google servers, the current consent state is sent as the gcs parameter. The value is an encoded string that compresses the four signals:
gcs=G111 → All granted
gcs=G100 → analytics_storage granted, rest denied
gcs=G110 → analytics + ad_storage granted, rest denied
gcs=G000 → All denied
The gcs parameter is relevant for server-side tracking: when your SST container forwards the request to Google, the gcs parameter must be passed through correctly. If it is missing, Google does not know which consent state applies and treats the request as "unknown", which leads to data loss.
Checking gcs in practice
Chrome DevTools > Network > Filter for google-analytics.com or googleads.g.doubleclick.net:
- Before consent:
gcs=G000(all denied) - After consent (all accepted):
gcs=G111 - Only analytics accepted:
gcs=G100
If the gcs value does not match the actual consent state, something in your consent implementation is wrong. Our consent debugging article describes the systematic audit process.
Behavioral Modeling: How Google turns pings into conversions
Behavioral Modeling is the mechanism Google uses to transform data from cookieless pings into usable metrics. Google describes the process deliberately vaguely. What is publicly known:
Input data
Google uses for modeling:
- Cookieless pings from users who did not consent (contains URL, referrer, user agent, timestamp, consent state)
- Complete data from users who did consent (contains everything: Client ID, session data, ecommerce events)
- Aggregated patterns across all websites using Consent Mode (global conversion rates per industry, region, device type)
Modeling logic
Google observes the behavior of users with consent and extrapolates to users without consent. Simplified:
If 3% of consented users who arrive from a Google Ads ad and view the product page complete a purchase, Google models a similar rate for non-consented users with comparable behavior patterns (same ad, same page type, similar time period).
Conversion Recovery Rate
The Conversion Recovery Rate describes the share of conversions "recovered" through modeling. Google does not provide an exact formula, but practical experience yields these benchmarks:
| Consent Rate | Conversion Recovery | Effective data coverage |
|---|---|---|
| 80%+ | 60 to 70% of denied conversions | ~94% |
| 60 to 80% | 50 to 65% of denied conversions | ~82% |
| 40 to 60% | 35 to 50% of denied conversions | ~70% |
| Below 40% | 20 to 35% of denied conversions | ~55% |
The logic: the more users consent, the more "real" data Google has as a basis for modeling. With a consent rate of 80%, Google has rich data from which it can reliably extrapolate. At 30% consent rate, modeling becomes uncertain.
At 70% consent rate, Google models back about 50% of denied conversions. That means: effective data coverage of 85% instead of 70%. Your ROAS values have ±10% uncertainty instead of ±25%. This is the difference between "roughly profitable campaign" and "precise budget allocation possible".
Conversion Recovery means: Google estimates missing conversions based on observed patterns. The estimate is better than nothing, but worse than real data. At low consent rates (below 40%), modeling quality becomes poor enough that budget decisions become risky.
Minimum requirements
Behavioral Modeling in GA4 has minimum thresholds:
- Consent Mode must be correctly implemented. Defaults before the first tag, updates after consent changes.
- At least 1,000 events per day with
analytics_storage: deniedover at least 7 days. - At least 1,000 users per day with
analytics_storage: grantedover at least 7 days.
If your store does not reach these thresholds, GA4 shows the original (unmodeled) data. For small stores with under 500 daily visitors, modeling does not activate.
Default vs. Update: Timing is everything
Consent Mode works with two commands:
consent default
gtag('consent', 'default', {
'analytics_storage': 'denied',
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'wait_for_update': 500
});
This command must appear before the GTM script and before any other Google resource. It defines the initial state. If no consent update follows (e.g. because the user ignores the banner), these values remain active.
wait_for_update: Tells Google tags to wait up to 500 milliseconds for a consent update before firing. This matters when the banner loads quickly and the user clicks immediately. Without wait_for_update, tags fire immediately with the default values.
consent update
gtag('consent', 'update', {
'analytics_storage': 'granted',
'ad_storage': 'granted',
'ad_user_data': 'granted',
'ad_personalization': 'granted'
});
This command is sent after the consent decision. On accept: all relevant signals set to granted. On reject: all set to denied (or no update is needed at all, because the defaults are already denied).
Common timing errors
GTM before consent defaults. If the GTM script loads before the consent default command, tags fire without a consent signal. Google treats this as "unknown" and sets its own defaults (which vary by tag type).
wait_for_update missing. Without wait_for_update, tags fire immediately with the default state (denied). If the user consents 300ms later, the first pageview has already fired without consent. This creates cookieless pings even though the user consented.
Consent update after page reload. The user accepts on page A. On page B, the stored consent must be set immediately as a consent update before tags fire. If the banner reads the consent from the cookie only after page load and then sends the update, tags fire for 200 to 500ms with denied.
Race conditions between GTM load and consent update are the most common timing error. Solution: read consent cookie synchronously (not async), set consent update in <head> before GTM, then load GTM. Or: load GTM with data-gtm-wait="consent" attribute, which blocks GTM until the first consent signal.
Implementation with Shopify
Shopify Customer Privacy API as consent source
Shopify's Customer Privacy API is the cleanest consent source for Shopify stores:
// 1. Load Privacy API
Shopify.loadFeatures([{ name: 'consent-tracking-api', version: 0.1 }], function() {
// 2. Check region
const region = Shopify.customerPrivacy.getRegion();
// 3. Set consent defaults (before GTM)
const isEU = EU_REGIONS.includes(region);
const defaultState = isEU ? 'denied' : 'granted';
gtag('consent', 'default', {
'analytics_storage': defaultState,
'ad_storage': defaultState,
'ad_user_data': defaultState,
'ad_personalization': defaultState,
'wait_for_update': isEU ? 500 : 0
});
// 4. React to consent decision
document.addEventListener('visitorConsentCollected', function() {
const analytics = Shopify.customerPrivacy.analyticsProcessingAllowed();
const marketing = Shopify.customerPrivacy.marketingAllowed();
gtag('consent', 'update', {
'analytics_storage': analytics ? 'granted' : 'denied',
'ad_storage': marketing ? 'granted' : 'denied',
'ad_user_data': marketing ? 'granted' : 'denied',
'ad_personalization': marketing ? 'granted' : 'denied'
});
});
});
Consent Mode in GTM Server Container
The GTM Server Container receives requests from the browser. The gcs parameter is automatically included in the GA4 request. The GA4 client in the server container reads this parameter and makes it available for server tags.
Three things that can go wrong:
-
Custom server tags ignore the consent state. If a tag in the server container has no consent check, it fires regardless of the
gcsvalue. Solution: configure consent settings for every server tag. -
gcs parameter is filtered. Some proxy configurations or WAFs filter unknown URL parameters. Verify that the
gcsparameter arrives at the server container. -
Timing mismatch. The browser sends an event with
gcs=G000(before consent). Two seconds later, it sends the same event withgcs=G111(after consent). The server container sees two events. This is not a deduplication problem (different consent states), but it can lead to duplicate pageviews.
Optimizing consent rate
The quality of Behavioral Modeling rises and falls with the consent rate. Every percentage point of additional consent means better modeling and more accurate data.
Legitimate optimizations
Banner design. Present "Accept" and "Reject" with equal prominence (GDPR requirement), but the banner itself can be clear and quickly understandable. The less text, the faster the user decides.
Banner timing. Load the banner immediately after page build. Any delay increases the likelihood that the user ignores the banner or leaves the page.
Region-based consent. Visitors from regions without GDPR requirements do not need a banner. Details in our article on region-based consent management.
Forbidden optimizations
Dark patterns. Hiding "Reject", displaying it smaller, or requiring more clicks. This is a GDPR violation and supervisory authorities are increasingly enforcing against it.
Forced consent. Showing content only after acceptance. This is not a free choice and therefore not valid consent.
Consent wall. Blocking access to the website entirely until the user consents. Legally disputed, impermissible in many jurisdictions.
Banner optimization is the most important lever for data quality. Improving consent rate from 60% to 70% increases effective data coverage from 78% to 85%. This easily justifies 2 to 4 hours of UX work on banner design.
Legitimate banner optimization means: fast loading, clear language, equally sized buttons for accept and reject. Dark patterns (hidden reject, forced acceptance) are GDPR violations and harm the brand long-term. Invest in good UX design instead of tricks.
GA4 reports: Modeled vs. observed data
GA4 marks modeled data in reports with a triangle icon. In BigQuery exports, modeled data is not separately marked.
Where modeling is visible
- Realtime report: Shows only observed (not modeled) data
- Standard reports: Contain modeled data (if modeling is active and thresholds are met)
- Explorations: Can contain modeled data
- BigQuery export: Contains all events, but without marking whether modeled or observed
Reporting strategy
For campaign reporting, we recommend: use Google Ads as the conversion source (not GA4), because Google Ads has its own modeling optimized for campaign data. Use GA4 for website analytics and user journey analysis. And use Shopify orders as ground truth for validating both sources.
Conclusion
Consent Mode v2 is not an on/off switch. It is a complex system of four signals, timing requirements, and a modeling mechanism whose quality depends on your consent rate. Correct implementation requires understanding of defaults, updates, the gcs parameter, and the interaction with server-side tracking.
The good news: when Consent Mode v2 is correctly implemented, at typical consent rates of 60 to 70%, you do not lose 30 to 40% of your data, but only 10 to 15%. Behavioral Modeling closes the gap, even if not completely.
Is your Consent Mode correctly implemented? Our GDPR & Compliance Audit checks the implementation in detail: defaults, updates, timing, gcs parameter, server-side forwarding.
You might also like
GDPR-Compliant Tracking: What Is Allowed, What Is Not, and How to Get Both Right
Legally compliant tracking without losing data. Consent Mode v2, server-side tracking, first-party data: a reference guide for decision-makers and implementers.
Read article → Tracking & ComplianceRegion-Based Consent Management: Why You Should Not Show Every Visitor a Cookie Banner
Visitors from the US do not need a GDPR banner. Shopify's getRegion() detects location, consent defaults adapt. Here is how to maximize data quality without compliance risk.
Read article →Our service
GDPR & Compliance Audit
We analyze your tracking infrastructure. GDPR score, accessibility check, actionable recommendations.