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
- Data Retention: 2 months
- IP Anonymization: Enabled
- Bot Filtering: Enabled
- Google Signals: Disabled
- User-ID: Disabled
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
- Tag Assistant → Consent Mode v2 active
- GA4 Realtime → Page views after consent
- Lighthouse → Performance ≥95