Q2 2026 · Google offers $3,000 grant for GTG deployment

On average 14% of your conversions are invisible.

InCookie is a lightweight consent manager deployed via Google Tag Manager - no code changes on your site. Together with Google Tag Gateway it recovers signals blocked by ad blockers and Safari ITP.

Deploy in 3 minutes
GDPR / ePrivacy Google Consent Mode v2 15 KB · zero dependencies MIT
dataLayer.push — consent_update
live
// 1. Default: all denied gtag('consent', 'default', { analytics_storage: 'denied', ad_storage: 'denied', ad_user_data: 'denied', ad_personalization: 'denied', }); // 2. On accept: update CookieConsent.run({ onAccept: ({ categories }) => { gtag('consent', 'update', { analytics_storage: categories.includes('analytics') ? 'granted' : 'denied', ad_storage: categories.includes('marketing') ? 'granted' : 'denied', }); } });
+22% signals after GTG deployment
/measured Q1 2026, n=84 clients
Works with your stack
Google Analytics 4 Google Ads Bing Ads Google Tag Manager Cloudflare Workers
// why it matters

Numbers that hurt, and numbers that save.

Without a consent manager Google blocks signals. Without Google Tag Gateway, ad blockers do it. After deploying both - you recover what you can't see in reports today.

14%
average conversion gap
Ad blockers, Safari ITP and missing consent cut every 7th signal. These conversions exist - Google just doesn't count them.
+22%
recovery after GTG
Google scripts served from your domain via Cloudflare Worker. Ad blockers see a first-party request and let it through.
15KB
gzip, zero dependencies
CookieConsent v3 (MIT, Orestbida). Loads faster than a single OneTrust poll. No React, no jQuery.
// how it works

Four steps. Zero code on your site. Three minutes in GTM.

Deployment is two tags in Google Tag Manager - defaults and banner. No backend, no frontend, no waking up a developer at 10 PM.

01
Blocks by default
Consent Mode v2 starts in denied state. Google Tag holds cookies and signals until the user decides.
~50 ms
02
Shows banner
Box inline in the bottom left corner - doesn't block content, no wall to click through. Accept / Reject / Customize.
<1 LCP impact
03
Pushes to dataLayer
After choice - consent_update to GTM. GA4 and Ads tags fire only now, with the right flags.
Consent Mode v2
04
Remembers choice
Cookie cc_cookie (6 months) holds preferences. Re-prompt only when you change policy or categories.
180 days
// consent categories

Three categories. Granular control for the user, clear flags for Google.

1:1 mapping to Google Consent Mode v2. Necessary is always on. Analytics and Marketing - off by default.

Necessary
necessary — always on · functionality_storage
Session, language, cart, CSRF token. Site doesn't work without these. No consent required under GDPR (Art. 6(1)(f)).
Cookies
Analytics
analytics — analytics_storage
Google Analytics 4: how users navigate the site, source/medium, conversions.
Cookies
Marketing
marketing — ad_storage · ad_user_data · ad_personalization
Google Ads and Bing Ads: remarketing and conversion tracking. Without this, campaign optimizer doesn't know who bought.
Cookies
// GTM setup

Two tags in Google Tag Manager. Third if you want +22% signals.

Paste, save, publish. No developer or code access needed.

Trigger
Consent Initialization — All Pages
gtm-consent-defaults.html JavaScript
1<script>
2 window.dataLayer = window.dataLayer || [];
3 function gtag(){dataLayer.push(arguments);}
4
5 gtag('consent', 'default', {
6 analytics_storage: 'denied',
7 ad_storage: 'denied',
8 ad_user_data: 'denied',
9 ad_personalization: 'denied',
10 wait_for_update: 500,
11 });
12</script>
// compliance & i18n

Legally compliant. Understandable to users in 8 languages.

Language detection from document.documentElement.lang - banner auto-selects the right translation.

GDPR / RODO
Granular consent, withdrawal option, decision log. Maps to GDPR Art. 7.
ePrivacy
Directive 2002/58/EC. Cookies only after consent. Only necessary without consent.
Consent Mode v2
All 4 signals: ad_storage, analytics_storage, ad_user_data, ad_personalization.
MIT License
Open source (Orestbida CookieConsent). You can audit, fork, self-host.
🇵🇱 PL Polski 🇬🇧 EN English 🇩🇪 DE Deutsch 🇪🇸 ES Español 🇫🇷 FR Français 🇺🇦 UK Українська 🇨🇿 CZ Čeština 🇸🇰 SK Slovenčina
// even when the user declines

Cookieless GA4 isn't empty.

Without marketing consent Google doesn't set cookies - but receives an ad_storage: denied signal. Consent Mode v2 then models conversions based on aggregates.

  • Cookieless ping instead of cookie - full session in GA4
  • Conversion modeling in Ads (Smart Bidding still works)
  • Behavioral & conversion modeling report active from day one
  • No raw personal data - 100% GDPR-compliant
GA4 · user_engagement
modeled
SourceSessionsConversions
Direct · consented4 218187
Google / cpc · consented2 904142
Direct · modeled+ 612+ 26
Google / cpc · modeled+ 388+ 19
Total (after InCookie deployment)8 122374
// what's next

InCookie is the first widget from Intum Widget Platform.

Eventually one JavaScript snippet will handle cookies, chat, helplinks, forms and A/B flags. One GTM tag instead of five.

Cookie consent
● live
Live chat
Q3 2026
Help links
Q3 2026
Lead forms
Q4 2026
Banners
Q4 2026
A/B flags
2027
Setup in 3 minutes. Free with InCookie branding.

Deploy consent manager today - recover 14-22% of signals next week.

Leave your email - we'll send a GTM container package (consent defaults + banner + GTG worker) and a short calibration call.

$ npm - not needed · < 3 min - your time · $0 - basic version