Implementation

GA4 Consent Mode v2

AgDR seals decisions at the kernel. Analytics should respect the same standard: explicit consent, zero latency impact.

1. GA4 Snippet (Copy-Paste)

Paste in <head>. Replace G-QPHCT8T1KC if needed.

<!-- GA4 + Consent Mode v2 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-QPHCT8T1KC"></script>
<script>
  window.dataLayer=window.dataLayer||[];
  function gtag(){dataLayer.push(arguments);}
  gtag('consent','default',{'ad_storage':'denied','analytics_storage':'denied','ad_user_data':'denied','ad_personalization':'denied','wait_for_update':500});
  gtag('js',new Date());
  gtag('config','G-QPHCT8T1KC',{'anonymize_ip':true,'send_page_view':true});
</script>

2. GA4 Settings

3. Consent Banner (Optional)

Add before </body> for EU/CA compliance:

<div id="consent-banner" style="position:fixed;bottom:0;left:0;right:0;background:#0a0a0a;color:#fff;padding:1rem;text-align:center;border-top:1px solid #2dd4bf;z-index:999;display:none;font-size:0.9rem">
Analytics improve docs. <button onclick="gtag('consent','update',{'analytics_storage':'granted'});document.getElementById('consent-banner').style.display='none'" style="background:#2dd4bf;color:#000;border:none;padding:0.4rem 1rem;margin-left:1rem;cursor:pointer;font-weight:700;border-radius:4px">Accept</button>
<button onclick="document.getElementById('consent-banner').style.display='none'" style="background:transparent;color:#fff;border:1px solid #fff;padding:0.4rem 1rem;margin-left:0.5rem;cursor:pointer;border-radius:4px">Decline</button>
</div>
<script>if(!localStorage.getItem('consent_shown')){document.getElementById('consent-banner').style.display='block';localStorage.setItem('consent_shown','true')}</script>

4. Verify