How to enable Google Consent Mode v2
Fix Google Ads and GA4 in the EU — zero configuration. KukiBot handles everything automatically.
What is Google Consent Mode v2?
It's a Google API that tells Google Ads and Analytics whether a visitor has consented to tracking. It uses four consent signals:
ad_storage— can Google Ads set advertising cookies?analytics_storage— can GA4 set analytics cookies?ad_user_data— can user data be sent to Google for ad personalisation?ad_personalization— can Google show personalised ads to this user?
When a visitor declines, Google uses modelled conversions to estimate the impact — so your reports stay useful even without full tracking.
What you need
- A KukiBot account — free, no credit card
- Google Analytics 4 or Google Ads running on your site
- Access to add a script tag to your site (or the WordPress plugin)
Step 1 — Add your site to KukiBot
Sign up and click Add site in your dashboard. Enter your domain — KukiBot auto-detects your brand color and configures the banner.
Step 2 — Add the KukiBot script before your Google tag
Paste your snippet before your Google tag or GTM container — order is critical:
<!-- 1. KukiBot FIRST — sets consent defaults before Google loads -->
<script src="https://kukibot.com/cb.js" data-site-id="YOUR_SITE_ID" async></script>
<!-- 2. Then your existing Google tag -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>Step 3 — That's it. Here's what KukiBot does automatically.
No additional configuration needed. On every page load, KukiBot:
- Sets all signals to denied — before any Google tag fires
- Shows the consent banner — in the visitor's language, for the right countries
- On "Accept All" — updates all signals to
granted - On "Reject All" — keeps signals denied; Google uses modelling
- On custom choices — sets each signal based on the visitor's exact preferences
- On return visits — reads the stored decision and applies it instantly, without showing the banner again
How it works technically
// KukiBot sets this immediately on page load (before your Google tag):
gtag('consent', 'default', {
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
analytics_storage: 'denied',
functionality_storage: 'granted', // necessary cookies always allowed
security_storage: 'granted',
wait_for_update: 500, // wait up to 500ms for consent decision
});
// When visitor clicks "Accept All":
gtag('consent', 'update', {
ad_storage: 'granted',
ad_user_data: 'granted',
ad_personalization: 'granted',
analytics_storage: 'granted',
});The wait_for_update: 500 tells Google to wait 500ms before firing, giving the banner time to check if the visitor already consented (return visit). This prevents losing data on fast return visits.
Using Google Tag Manager?
Set the KukiBot tag trigger to Consent Initialization — All Pages — not "All Pages". This fires before any other GTM tags.
See the full GTM setup guide →
Verify it's working — 3 ways
1. KukiBot dashboard
Click Verify Google tag in your site detail page — opens Google Tag Assistant pre-loaded with your domain.
2. Google Tag Assistant
Visit tagassistant.google.com, enter your domain. Before clicking Accept on your banner, you should see all consent signals as denied. After clicking Accept, they should update to granted.
3. GA4 Admin panel
In GA4 → Admin → Data collection → Consent settings — you should see "Consent mode: Active" with a green indicator within 24–48 hours of deploying.
Frequently asked questions
Will my conversion numbers drop?
For EU visitors who decline, yes — Google won't track those conversions directly. But Google uses modelled conversions to estimate the impact. You'll see these as "modelled" rows in Google Ads reports. Total numbers may drop 10–30% for EU traffic, but this is accurate — before, you were tracking without consent (which was illegal).
My Google Ads says Consent Mode not detected
- Check that the KukiBot script appears before your Google Ads tag in the page source
- If using GTM: confirm the KukiBot tag uses the Consent Initialization trigger
- Allow 24–48 hours for Google Ads to detect the signals
- Verify using Google Tag Assistant as described above
Does this work with WooCommerce / WordPress?
Yes. The WordPress plugin injects the script at priority 1 in wp_head — before any other scripts including GA4 and Google Ads.
What about non-EU visitors?
Set KukiBot to EU+UK only mode in your dashboard settings. Non-EU visitors see no banner and Google tags fire normally without consent restrictions — maximising data quality for your non-EU traffic.
Ready to fix your Google Ads?
Free for 1 domain. Setup takes 5 minutes.