Google Consent Mode v2 is Google's API framework for communicating user consent decisions to Google tags (Analytics, Ads, Floodlight, and others). When enabled in Kukie, consent signals are sent to Google automatically - no custom code required. Kukie is a Google CMP Partner (Tag Developer ID: dOTA0OT).
What is Google Consent Mode v2?
Consent Mode v2 lets your Google tags adjust their behaviour based on the consent status of your visitors. Instead of simply blocking or allowing Google scripts, Consent Mode tells Google tags exactly what they are and are not permitted to do. This means Google can still collect anonymised, cookieless data (pings) even when a user has not consented, enabling features like conversion modelling in Google Ads.
Consent Mode v2 introduced four additional parameters compared to the original version: ad_user_data, ad_personalization, functionality_storage, and personalization_storage. All seven parameters are supported by Kukie.
Basic vs Advanced Consent Mode
Google defines two implementation modes. The key difference is whether Google tags can send cookieless pings before the user makes a consent choice.
Basic mode
In Basic mode, Google tags only fire after the user gives consent. If a visitor declines or ignores the banner, no data is sent to Google at all - not even anonymised pings.
- Simpler approach but loses conversion modelling benefits
- No data collection until explicit consent is given
- Google Ads optimisation is limited because gaps in data cannot be filled
In Kukie, Basic mode means disabling the GCM v2 toggle and relying on script blocking only. When GCM is off, Google tags are treated like any other third-party script - Kukie's auto-blocker prevents them from loading until the user consents to the relevant category.
Advanced mode (recommended)
In Advanced mode, Google tags load before consent with all parameters defaulted to denied. The tags send cookieless pings to Google - no cookies are set and no personal data is collected. After the user consents, parameters update to granted and full tracking begins.
- Enables Google's conversion modelling, which fills measurement gaps from non-consented users
- Google Ads receives more complete data for bid optimisation
- Cookieless pings contain no personal data and do not set cookies
In Kukie, Advanced mode is the default when GCM v2 is enabled. Kukie calls gtag('consent', 'default', {...}) with all parameters set to denied before any Google tags load, then updates them to granted after the user consents.
Comparison
| Feature | Basic | Advanced (Kukie default) |
|---|---|---|
| Tags fire before consent | No | Yes (cookieless pings) |
| Conversion modelling | No | Yes |
| Data when user declines | None | Anonymised pings |
| Google Ads optimisation | Limited | Full |
| Setup in Kukie | Disable GCM toggle | Enable GCM toggle (default) |
Consent parameters
Google Consent Mode v2 uses seven parameters. Kukie maps these to cookie consent categories automatically:
| Parameter | Description | Kukie category |
|---|---|---|
analytics_storage |
Google Analytics cookies | Analytics |
ad_storage |
Advertising cookies | Marketing |
ad_user_data |
Send user data to Google for ads | Marketing |
ad_personalization |
Personalised advertising | Marketing |
functionality_storage |
Functional features (e.g. language preferences) | Functional |
personalization_storage |
Personalisation (e.g. video recommendations) | Functional |
security_storage |
Security features (fraud detection, authentication) | Always granted |
Tip: Kukie handles this mapping automatically. You do not need to configure individual parameters - just organise your cookies into the correct categories in the Banner Editor.
How Kukie implements Consent Mode v2
Here is the step-by-step flow when a visitor lands on your site with GCM v2 enabled:
- Consent defaults set: Kukie's banner script loads and immediately calls
gtag('consent', 'default', {...})with all parameters set todenied(exceptsecurity_storage, which is alwaysgranted). - Developer ID registered: Kukie registers its Google CMP Partner developer ID (
dOTA0OT) so Google can identify the CMP. - Banner displayed: The consent banner appears to the visitor.
- User accepts: Kukie calls
gtag('consent', 'update', {...})with accepted categories mapped togranted. - User declines: Parameters stay
denied. Google tags receive cookieless pings only. - GTM injection: If a GTM Container ID is configured, the GTM container loads after consent defaults are set, ensuring it picks up the correct consent state.
- dataLayer event: A
cookie_consent_updateevent is pushed to the dataLayer for GTM trigger conditions.
Tip: Kukie sets consent defaults with
wait_for_update: 500(milliseconds). This tells Google tags to wait up to 500ms for a consent update before proceeding. This is the Google-recommended value.
Enabling Google Consent Mode v2
- Go to your site's Banner Editor
- Open the Integrations tab
- Toggle on Google Consent Mode v2
- (Optional) Enter your GTM Container ID to have Kukie inject GTM automatically
- Click Save to publish your banner configuration
Note: If you manage Google tags via GTM, enter your Container ID in the field provided. Kukie will inject GTM after setting consent defaults, ensuring the correct initialisation order. Do not add the GTM snippet manually to your site if you use this feature.
Important: Enabling Consent Mode is only half the equation. Your consent banner must also meet Google's specific content requirements. See Google's Banner Requirements for Consent Mode.
Using Consent Mode with Google Tag Manager
Option A: Kukie's built-in GTM injection (recommended)
Kukie can inject your GTM container automatically with the correct loading order:
- Enable GCM v2 in the Integrations tab
- Enable the Google Tag Manager toggle
- Enter your Container ID (format:
GTM-XXXXXXX) - Click Save - Kukie handles the rest
Kukie guarantees the correct loading order:
- Consent defaults set to
deniedviagtag('consent', 'default', {...}) - GTM container injected into the page
- GTM reads consent state from the dataLayer
- On consent update, Kukie pushes a
cookie_consent_updateevent to the dataLayer
Tip: With this setup, you do not need to add the GTM snippet to your site manually. Kukie injects it at the correct point in the consent lifecycle.
Option B: Manual GTM with Kukie consent signals
If you prefer to load GTM yourself (e.g. via your CMS or theme):
- Enable GCM v2 in Kukie but leave the GTM toggle off
- Add the GTM snippet to your site as normal
- Kukie will still set consent defaults and fire consent updates via the dataLayer
Important: Ensure the Kukie script loads before the GTM snippet in your HTML. If GTM loads first, tags may fire before consent defaults are set.
Configuring tags in GTM
Google's own tags (GA4, Google Ads, Floodlight) have built-in consent checks. In Advanced mode (the Kukie default), these tags load immediately but adjust their behaviour based on the consent state. No additional GTM configuration is needed for Google tags.
For third-party tags in GTM (Meta Pixel, LinkedIn, TikTok, etc.):
- These do not have built-in consent checks
- You must add consent requirements in GTM: go to Tag Editor > Advanced Settings > Consent Settings > "Require additional consent for tag to fire" and select
ad_storage(oranalytics_storage) - Replace the "All Pages" trigger with a custom trigger on the
cookie_consent_updatedataLayer event - This ensures third-party tags only fire after consent is granted
Important: Google Consent Mode only controls Google's own tags. Third-party tags like Meta Pixel, LinkedIn Insight Tag, and TikTok Pixel must be blocked separately. Use GTM's consent settings or Kukie's auto-blocker to prevent these tags from firing without consent.
Non-Google tags and script blocking
Google Consent Mode does not control non-Google scripts. If your site uses Meta Pixel, LinkedIn, TikTok, HubSpot, Hotjar, or any other third-party tracking, you need a separate blocking mechanism.
Kukie provides two options:
- Auto-blocker: Kukie automatically detects and blocks 30+ known tracker patterns (including Facebook, LinkedIn, TikTok, HubSpot) until the user consents to the relevant category. No configuration needed.
- Manual blocking: Add
data-cc-category="marketing"(or"analytics") to script tags to block them until the matching category is accepted.
See: Auto-block Scripts for full auto-blocker documentation.
Behaviour by consent model
Kukie supports multiple consent models. Here is how each interacts with Google Consent Mode:
| Consent model | Default state | After user action |
|---|---|---|
| Opt-in (EU/EEA) | All denied | Granted for accepted categories |
| Opt-out (CCPA) | All denied, immediately updated to granted | Denied if user opts out |
| Notice only | All denied, immediately updated to granted | Stays granted |
| Hidden | All denied, immediately updated to granted | No banner shown |
In all consent models, Kukie always sets defaults to denied first (as Google requires). For opt-out, notice-only, and hidden models, an immediate update to granted follows. This ensures the consent timeline is correct in Google's systems.
Verifying your implementation
How to check that Consent Mode is working correctly:
- Open your site in an incognito/private window
- Open DevTools (F12) and go to the Console tab
- Before interacting with the banner, type
dataLayerand press Enter - you should see a consent default event with all parameters set todenied - Accept the banner
- Type
dataLayeragain - you should see a consent update event withgrantedvalues for the accepted categories - Check the Network tab: requests to
google-analytics.comorgoogleads.g.doubleclick.netshould appear only after consent
Using Google Tag Assistant
Google Tag Assistant (tagassistant.google.com) provides the most reliable verification:
- Open Tag Assistant and connect to your site
- Check the Consent tab - it shows all consent parameters and their current state
- Before banner interaction: all parameters should show
denied - After accepting: relevant parameters should show
granted - If using GTM: check the Tags tab to verify tags fire according to consent state
Kukie debug mode
Add ?kukie_debug=1 to your URL to see detailed Kukie consent logs in the browser console, including all GCM parameter updates.
Alternatively, use Kukie's free GCM v2 Checker tool to verify any site's Consent Mode implementation.
Region-specific consent defaults
Kukie's region rules allow different consent behaviour per region. When combined with GCM, the consent defaults adapt automatically:
- EU/EEA visitors (opt-in model): All GCM parameters default to
denied. Consent update sent only after explicit user action. - US visitors (opt-out model): GCM defaults to
denied, then immediately updates togranted. User can opt out later. - Rest of world: Follows your default consent model setting.
Configure region rules in Banner Editor > Region Rules tab. Kukie handles the correct GCM default/update sequence for each region automatically - no per-region GCM configuration needed.
Additional Consent Mode (GCM Additional)
Google's Additional Consent mode extends GCM v2 for non-IAB vendors. When enabled in Kukie, the ads_data_redaction parameter is set, which controls whether ad click identifiers are redacted when ad storage consent is denied.
To enable: toggle Additional Consent parameters in the Integrations tab of the Banner Editor.
Troubleshooting
Google tags not firing after consent
- Check that your GTM Container ID is correct (format:
GTM-XXXXXXX) - Ensure the GCM v2 toggle is enabled and the configuration is saved
- If using CDN bundles, regenerate them after making changes to integrations
- Verify that the Kukie script is loading on the page (check the Network tab for
c.js)
Conversion modelling not appearing in GA4/Ads
- Conversion modelling requires Advanced mode (GCM v2 enabled in Kukie)
- Google requires a minimum traffic threshold: approximately 700 ad clicks over 7 days for a given domain and country combination
- Allow 1-2 weeks for modelling data to appear in your reports
- Modelling only works for Google's own tags - third-party conversion tracking is not included
GCM Checker shows issues
- Ensure the Kukie script loads before any Google tags
- If using a manual GTM snippet, consider removing it and using Kukie's built-in GTM injection instead
- Clear your browser cache and cookies, then test again in an incognito window
Related resources
- Google's Banner Requirements for Consent Mode - what your banner must include for Google compliance
- Google Consent Mode v2 overview - Kukie marketing page with feature summary
- GCM v2 Checker - free tool to verify any site's implementation
- Microsoft Clarity Consent Mode - similar integration for Microsoft Clarity
- Auto-block Scripts - automatic third-party script blocking