""" Google Consent Mode v2 Configuration Generator Generates consent mode configuration snippets for different CMP platforms and jurisdictions. Requirements: No external dependencies (uses standard library only) """ import json import os from datetime import datetime, timezone # EEA country codes (27 EU + 3 EEA) EEA_COUNTRIES = [ "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE", "IS", "LI", "NO", ] # US states with privacy laws requiring consent/opt-out US_PRIVACY_STATES = { "US-CA": {"law": "CCPA/CPRA", "model": "opt-out", "gpc_required": True}, "US-CO": {"law": "CPA", "model": "opt-out", "gpc_required": True}, "US-CT": {"law": "CTDPA", "model": "opt-out", "gpc_required": True}, "US-VA": {"law": "VCDPA", "model": "opt-out", "gpc_required": False}, "US-MT": {"law": "MCDPA", "model": "opt-out", "gpc_required": True}, "US-TX": {"law": "TDPSA", "model": "opt-out", "gpc_required": True}, "US-OR": {"law": "OCPA", "model": "opt-out", "gpc_required": True}, } # Consent parameter definitions CONSENT_PARAMETERS = { "ad_storage": { "description": "Controls advertising cookies (e.g., _gcl_*, IDE)", "default_eea": "denied", "default_us": "granted", "default_other": "granted", }, "ad_user_data": { "description": "Controls sending user data to Google for advertising", "default_eea": "denied", "default_us": "granted", "default_other": "granted", }, "ad_personalization": { "description": "Controls ad personalization and remarketing", "default_eea": "denied", "default_us": "granted", "default_other": "granted", }, "analytics_storage": { "description": "Controls analytics cookies (e.g., _ga, _gid)", "default_eea": "denied", "default_us": "granted", "default_other": "granted", }, "functionality_storage": { "description": "Controls functionality cookies (e.g., language)", "default_eea": "granted", "default_us": "granted", "default_other": "granted", }, "personalization_storage": { "description": "Controls personalization cookies", "default_eea": "denied", "default_us": "granted", "default_other": "granted", }, "security_storage": { "description": "Controls security cookies (e.g., authentication)", "default_eea": "granted", "default_us": "granted", "default_other": "granted", }, } def generate_gtag_config( ga4_measurement_id: str, google_ads_id: str = "", strict_mode: bool = True, ) -> str: """Generate gtag.js consent mode configuration.""" config = f""" """ return config def generate_gtm_datalayer_config() -> str: """Generate GTM dataLayer consent configuration.""" return """ """ def generate_consent_parameter_docs() -> str: """Generate documentation for consent parameters.""" docs = "# Consent Mode v2 Parameter Reference\n\n" docs += "| Parameter | Description | EEA Default | US Default |\n" docs += "|-----------|-------------|-------------|------------|\n" for param, info in CONSENT_PARAMETERS.items(): docs += f"| `{param}` | {info['description']} | {info['default_eea']} | {info['default_us']} |\n" return docs def main(): """Generate Consent Mode v2 configurations for Pinnacle E-Commerce Ltd.""" output_dir = os.path.join(os.path.dirname(__file__), "..", "assets") os.makedirs(output_dir, exist_ok=True) # Generate gtag.js configuration gtag_config = generate_gtag_config( ga4_measurement_id="G-PINNACLE123", google_ads_id="AW-PINNACLE456", ) with open(os.path.join(output_dir, "consent_mode_gtag.html"), "w") as f: f.write(gtag_config) # Generate GTM dataLayer configuration gtm_config = generate_gtm_datalayer_config() with open(os.path.join(output_dir, "consent_mode_gtm.html"), "w") as f: f.write(gtm_config) # Generate parameter documentation param_docs = generate_consent_parameter_docs() with open(os.path.join(output_dir, "consent_parameters.md"), "w") as f: f.write(param_docs) print("=== Google Consent Mode v2 Configuration Generated ===") print(f"Output directory: {output_dir}") print("Files generated:") print(" - consent_mode_gtag.html (gtag.js implementation)") print(" - consent_mode_gtm.html (GTM dataLayer implementation)") print(" - consent_parameters.md (parameter reference)") print(f"\nEEA countries configured: {len(EEA_COUNTRIES)}") print(f"US privacy states tracked: {len(US_PRIVACY_STATES)}") if __name__ == "__main__": main()