Consent Accept/Reject Not Working: Why Consent State Never Updates
Your cookie banner appears. Users click "Accept" or "Reject." The banner disappears. But nothing changes: reject still tracks, accept doesn't enable conversions, and Google sees no consent state updates. The buttons work visually, but the consent state machine is broken.
The Problem:
When consent state doesn't update, your consent banner becomes cosmetic. Users think they're controlling tracking, but Google never receives consent updates, breaking measurement and potentially violating privacy regulations.
What It Looks Like
You might experience these symptoms:
- Users click "Reject" but tracking continues anyway
- Users click "Accept" but conversions still don't record
- Consent Mode v2 is installed but
gtag('consent', 'update')never fires - Cookie banner UI works but browser console shows no consent state changes
- GTM consent signals remain in default state regardless of user choice
- Google Ads sees no consent updates so it uses modeled data instead of actual conversions
The technical reality: your consent banner JavaScript handles the UI (hiding the banner, showing a message), but it never calls the functions that actually update Google's consent state. The visual feedback works, but the underlying state machine is disconnected. This is one of several common ways Google Ads conversion tracking breaks. For a full breakdown of how consent, timing, and configuration interact, see why Google Ads conversions break.
Why This Happens
Consent state updates require explicit calls to Google's consent APIs. Here are the common failure points:
1. Missing Consent Mode Update Calls
The most common issue: your consent banner JavaScript handles the UI but never calls gtag('consent', 'update').
What happens:
- User clicks "Accept" button
- Banner JavaScript hides the banner
- Banner JavaScript sets a cookie or localStorage flag
- But
gtag('consent', 'update')is never called - Google never knows consent was granted
- Tracking remains in denied state
This is especially common with custom-built consent banners or CMPs that don't properly integrate with Consent Mode v2.
2. Consent Updates Called Too Late
Even if you call gtag('consent', 'update'), timing matters. If tracking scripts have already fired before the update, Google may have already processed requests in the denied state.
The sequence that breaks:
- Page loads with consent default: denied
- Tracking scripts fire (but are suppressed due to denied state)
- User clicks accept
- Consent update is called
- But conversion events that should fire after consent don't fire because the page context has changed
This is why tracking scripts firing before consent and consent state not updating are often related problems.
3. CMP Not Integrated with Consent Mode
Many consent management platforms (CMPs) handle cookie consent but don't automatically update Google Consent Mode. They may:
- Block cookies but not call Consent Mode update functions
- Have Consent Mode integration that's not enabled or configured
- Update consent state but only for their own tracking, not Google's
- Use outdated Consent Mode v1 syntax instead of v2
Even popular CMPs like Cookiebot, OneTrust, or Quantcast require specific configuration to update Consent Mode v2. If that configuration is missing or incorrect, consent state never updates.
4. React/SPA State Management Issues
In single-page applications (SPAs) built with React, Vue, or similar frameworks, consent state might be managed in component state but never propagated to Google's consent APIs.
What happens:
- User clicks accept in React component
- Component state updates (e.g.,
setConsentGranted(true)) - UI updates to reflect consent
- But
gtag('consent', 'update')is never called - Google never receives the consent update
This is common when developers build custom consent banners in React but forget to integrate with Google's consent APIs.
5. GTM Consent Mode Not Configured
If you use Google Tag Manager, consent state updates must be configured in GTM, not just in your page code. GTM has its own consent mode settings that must be enabled and configured.
Common mistakes:
- Consent Mode v2 enabled in page code but not in GTM
- GTM consent settings using v1 instead of v2
- Consent update triggers not configured in GTM
- GTM tags not set to respect consent signals
What It Breaks
Google Ads Conversion Tracking
When consent state never updates:
- Even if users accept consent, Google never receives the update
- Conversions fire but are suppressed because consent state remains "denied"
- Google Ads uses modeled conversions instead of actual data
- Campaign optimization suffers because Google doesn't trust the conversion data
- You see conversions in your dashboard but they're not used for bidding
This problem rarely exists in isolation. It usually appears alongside other consent or timing issues covered in the broader guide on Google Ads conversion failures.
User Privacy Expectations
When users click "Reject" but tracking continues:
- Users believe they've opted out, but they haven't
- This violates GDPR, CCPA, and other privacy regulations
- Legal risk increases because consent mechanism doesn't actually work
- User trust erodes when they discover tracking continues after rejection
GA4 Reporting
GA4 relies on consent state to determine how to process events:
- Events may be marked as "modeled" instead of actual
- Conversion reporting becomes unreliable
- Audience building fails because consent state is unknown
- Attribution models break because consent timing isn't tracked
How to Detect It
You can check if consent state updates using browser developer tools:
- Open your website in a private/incognito window
- Open browser DevTools (F12) and go to the Console tab
- Type:
window.dataLayerand press Enter - Look for consent-related entries in the dataLayer
- Click "Accept" on your consent banner
- Check dataLayer again: you should see a consent update entry
- If no consent update appears, consent state is not updating
Alternatively, check the Network tab:
- Filter by "collect" or "google-analytics"
- Click "Reject" on consent banner
- Check if tracking requests stop (they should)
- Click "Accept" on consent banner
- Check if tracking requests resume (they should)
- If requests don't change based on consent choice, state is not updating
This is exactly what the diagnostic report highlights, with concrete fixes. View sample report →
Quick Test:
Use our free scanner to automatically detect if consent state updates when users accept or reject. It simulates both actions and checks if Google receives consent updates.
Want ongoing alerts when consent or tracking breaks? Monitoring runs weekly scans and emails you only when we detect a change.
The Fix: Properly Update Consent State
The solution is to ensure your consent banner actually calls Google's consent update functions. Here's how:
Option 1: Manual Consent Mode Updates
If you have a custom consent banner, you must call gtag('consent', 'update') when users make a choice:
// When user clicks Accept
function handleAcceptConsent() {
// Update UI
document.getElementById('consent-banner').style.display = 'none';
localStorage.setItem('consent', 'granted');
// CRITICAL: Update Google Consent Mode
gtag('consent', 'update', {
'ad_storage': 'granted',
'analytics_storage': 'granted'
});
// Now tracking can proceed
}
// When user clicks Reject
function handleRejectConsent() {
// Update UI
document.getElementById('consent-banner').style.display = 'none';
localStorage.setItem('consent', 'denied');
// CRITICAL: Update Google Consent Mode
gtag('consent', 'update', {
'ad_storage': 'denied',
'analytics_storage': 'denied'
});
// Tracking should stop
}The key is that both UI updates AND consent state updates must happen. Many implementations only do the UI part.
Option 2: Use a CMP with Consent Mode Integration
If using a consent management platform, ensure it's configured to update Consent Mode v2:
- Enable Consent Mode v2 in CMP settings
- Verify CMP documentation mentions Consent Mode v2 support
- Test that consent updates appear in dataLayer after accept/reject
- Check that CMP is calling
gtag('consent', 'update')internally
Option 3: GTM Consent Mode Configuration
If using Google Tag Manager:
- Enable Consent Mode v2 in GTM container settings
- Configure consent types (ad_storage, analytics_storage)
- Set up consent update triggers
- Ensure tags respect consent signals
- Test that consent updates fire when banner buttons are clicked
Why This Connects Other Issues
Consent state not updating is the underlying issue behind many other problems:
- Cookie banners don't block tracking because consent state never updates to "denied"
- gtag consent default denied doesn't help if updates never fire
- Consent Mode v2 appears installed but doesn't work because updates aren't called
- GA4 consent issues occur because consent state remains in default
- Google Ads tracking breaks because conversions fire but consent state never updates
Fix consent state updates, and many related issues resolve automatically.
The State Machine Problem
Consent management is fundamentally a state machine:
- Initial state: Consent default (denied)
- User action: Click accept or reject
- State transition: Update consent state in Google's systems
- Behavior change: Tracking behavior changes based on new state
When consent state doesn't update, the state machine is broken. User actions don't trigger state transitions, so behavior never changes. The UI suggests everything works, but the underlying state machine is stuck.
This is why tracking before consent and consent state not updating are the two root causes: one breaks the initial state, the other breaks state transitions.
Verify Your Fix
After implementing a fix, verify it works:
- Clear browser cookies and cache
- Visit your site in a private/incognito window
- Open browser console and check dataLayer
- Click "Reject": dataLayer should show consent update with denied values
- Check Network tab: tracking requests should stop
- Click "Accept": dataLayer should show consent update with granted values
- Check Network tab: tracking requests should resume
Not Sure If Your Site Has This Problem?
Run a free scan to automatically detect if consent state updates when users accept or reject. Get a detailed report showing exactly what happens when consent buttons are clicked.
Scan Your Site Free →Part of the Google Ads conversion tracking series:
← Back to: Why Google Ads Conversions Break