{
    "schema": "https://saferpage.de/schemas/consent-integration-playbook.v1",
    "generated_at": "2026-06-08T21:20:01+00:00",
    "domain": "digital.kein-raum-fuer-missbrauch.de",
    "scan": {
        "id": "82888d9c-f5bb-44bf-bcfc-4155235b7a9a",
        "checked_at": "2026-06-08 12:45:27.643702+02"
    },
    "summary": "Integrations-Playbook fuer digital.kein-raum-fuer-missbrauch.de: 5 Einbauprofile, 5 Abnahmechecks und konkrete Snippets fuer CMP, GTM, server-side Tagging und Downstream-Sync.",
    "readiness_metrics": {
        "cmp_detected": false,
        "reject_available": false,
        "google_consent_detected": false,
        "framework_checks": 5,
        "analytics_events": 5,
        "cmp_services": 1
    },
    "links": {
        "consent_center": "https://saferpage.de/consent/digital.kein-raum-fuer-missbrauch.de",
        "integration_json": "https://saferpage.de/consent/digital.kein-raum-fuer-missbrauch.de/integrations-json",
        "integration_csv": "https://saferpage.de/consent/digital.kein-raum-fuer-missbrauch.de/integrations-csv",
        "cmp_plan": "https://saferpage.de/consent/digital.kein-raum-fuer-missbrauch.de/cmp-plan",
        "frameworks": "https://saferpage.de/consent/digital.kein-raum-fuer-missbrauch.de/framework-json",
        "analytics": "https://saferpage.de/consent/digital.kein-raum-fuer-missbrauch.de/analytics-json",
        "autoblocking": "https://saferpage.de/consent-banner/digital.kein-raum-fuer-missbrauch.de/blocking-json",
        "ledger": "https://saferpage.de/consent-ledger/digital.kein-raum-fuer-missbrauch.de",
        "guide": "https://saferpage.de/guides/tracking-und-consent-reparieren"
    },
    "integration_profiles": [
        {
            "id": "direct_script",
            "label": "Direkter Website-Einbau",
            "status": "vorbereiten",
            "placement": "Im Head vor GTM, gtag, Ads-, Analytics- und Drittanbieter-Skripten.",
            "steps": [
                "Consent defaults zuerst laden",
                "Banner/Preference Trigger einbauen",
                "Auto-Blocking-Snippet aktivieren",
                "Reject/GPC im Browser testen"
            ],
            "risk": "Wenn GTM oder Drittanbieter vorher laden, entstehen Pre-Consent-Signale."
        },
        {
            "id": "google_tag_manager",
            "label": "Google Tag Manager",
            "status": "bei Google-/Tag-Setup prüfen",
            "placement": "Consent Initialization Trigger und zusätzliche Consent-Einstellungen je Tag.",
            "steps": [
                "Default denied vor Container sicherstellen",
                "CMP-Update in Data Layer pushen",
                "Nicht notwendige Tags nur nach Kategorie feuern",
                "Consent Debug View prüfen"
            ],
            "risk": "All-Pages-Trigger ohne Consent-Bedingung können das CMP umgehen."
        },
        {
            "id": "server_side_gtm",
            "label": "Server-side GTM / Server-side Tracking",
            "status": "Betreiber-Nachweis",
            "placement": "Consent-Zustand aus Web-Container an Server-Container weiterreichen.",
            "steps": [
                "Consent-Parameter in Event Data aufnehmen",
                "Server-Container blockiert Ads/Analytics bei denied",
                "IP/UA minimieren",
                "Reject/GPC-End-to-End testen"
            ],
            "risk": "Server-side Tracking darf Ablehnung nicht umgehen; denied bleibt denied."
        },
        {
            "id": "cms_wordpress",
            "label": "CMS / WordPress / TYPO3 / Shopware",
            "status": "vorbereiten",
            "placement": "Theme-Head, Plugin-Hook oder Tag-Manager-Slot vor Marketing-Tags.",
            "steps": [
                "Cache/CDN-Ausspielung testen",
                "Mehrsprachigkeit prüfen",
                "Plugin-Updates dokumentieren",
                "Staging und Live vergleichen"
            ],
            "risk": "Caching, Theme Builder oder Shop-Apps können Skripte vor dem CMP injizieren."
        },
        {
            "id": "crm_preference_sync",
            "label": "CRM / Newsletter / Preference Sync",
            "status": "Betreiber-Nachweis",
            "placement": "Backend-Webhook oder Consent-Ledger-Worker.",
            "steps": [
                "Consent-ID statt Klartext-ID verwenden",
                "Opt-out in Suppression Lists synchronisieren",
                "Fehlerqueue und Retry loggen",
                "DSAR/Widerruf verknüpfen"
            ],
            "risk": "Frontend-Widerruf ist unvollständig, wenn CRM, Newsletter oder Vendor-Systeme weiter senden."
        }
    ],
    "snippets": [
        {
            "id": "google_consent_default",
            "label": "Google Consent Mode Default",
            "placement": "Vor GTM/gtag",
            "language": "javascript",
            "code": "window.dataLayer = window.dataLayer || [];\nfunction gtag(){ dataLayer.push(arguments); }\ngtag('consent', 'default', {\n  ad_storage: 'denied',\n  analytics_storage: 'denied',\n  ad_user_data: 'denied',\n  ad_personalization: 'denied',\n  functionality_storage: 'denied',\n  security_storage: 'granted',\n  wait_for_update: 500\n});"
        },
        {
            "id": "data_layer_bridge",
            "label": "SaferPage Data-Layer Bridge",
            "placement": "Nach CMP-Entscheidung",
            "language": "javascript",
            "code": "window.addEventListener('saferpage-consent-update', function(event) {\n  var consent = event.detail || {};\n  window.dataLayer = window.dataLayer || [];\n  window.dataLayer.push({\n    event: 'saferpage_consent_update',\n    consent: consent,\n    analytics_storage: consent.statistik ? 'granted' : 'denied',\n    ad_storage: consent.marketing ? 'granted' : 'denied',\n    ad_user_data: consent.marketing ? 'granted' : 'denied',\n    ad_personalization: consent.marketing ? 'granted' : 'denied',\n    functionality_storage: (consent.externe_medien || consent.komfort) ? 'granted' : 'denied'\n  });\n});"
        },
        {
            "id": "server_sync_example",
            "label": "Server-side Consent Sync Beispiel",
            "placement": "Nur mit eigenem Backend/Consent-Ledger",
            "language": "javascript",
            "code": "fetch('/consent-sync', {\n  method: 'POST',\n  headers: {'Content-Type': 'application/json'},\n  credentials: 'same-origin',\n  body: JSON.stringify({\n    consent_id: '{{consent_id}}',\n    categories: '{{categories_json}}',\n    gpc: navigator.globalPrivacyControl === true,\n    source: 'saferpage_consent_update'\n  })\n});"
        }
    ],
    "validation_checks": [
        {
            "id": "load_order",
            "label": "Ladereihenfolge",
            "pass_condition": "Consent default und CMP/Trigger laden vor GTM, gtag, Pixeln, Embeds und Server-Sync.",
            "owner": "Frontend/Marketing Ops"
        },
        {
            "id": "reject_gate",
            "label": "Reject Gate",
            "pass_condition": "Nach Ablehnen feuern weder Client- noch Server-side Marketing-/Analytics-Events.",
            "owner": "Marketing Ops/IT"
        },
        {
            "id": "gpc_gate",
            "label": "GPC Gate",
            "pass_condition": "GPC/UOOM setzt Tracking/Sharing/Profiling auf denied und wird im Ledger markiert.",
            "owner": "Datenschutz/IT"
        },
        {
            "id": "cache_cdn",
            "label": "Cache/CDN",
            "pass_condition": "Header-/Script-Reihenfolge bleibt bei Cache, CDN, Minifier und Consent-Varianten stabil.",
            "owner": "Webbetrieb"
        },
        {
            "id": "downstream_sync",
            "label": "Downstream Sync",
            "pass_condition": "CRM, Newsletter, Ads, Analytics und Vendor-Systeme erhalten Widerruf/Opt-out oder werden blockiert.",
            "owner": "CRM/Datenschutz"
        }
    ],
    "handoff_fields": [
        {
            "field": "consent_id",
            "system": "Ledger/CRM",
            "purpose": "Entscheidung ohne Klartext-Personenkennung referenzieren."
        },
        {
            "field": "categories",
            "system": "GTM/sGTM/CMP",
            "purpose": "Tag-Freigabe je Kategorie steuern."
        },
        {
            "field": "gpc",
            "system": "CMP/CRM/Vendor",
            "purpose": "Automatisches Opt-out/Widerspruchssignal weitergeben."
        },
        {
            "field": "notice_version",
            "system": "Ledger/Policy",
            "purpose": "Nachweisbar machen, welcher Text galt."
        },
        {
            "field": "sync_status",
            "system": "Downstream Worker",
            "purpose": "Fehlerqueue, Retry und manuelle Korrektur steuern."
        }
    ],
    "disclaimer": "Dieses Playbook ist kein fertiges WordPress-/GTM-/CRM-Plugin. Es liefert Betreiber-Snippets, Einbaupfade und Abnahmechecks, die im jeweiligen System umgesetzt und getestet werden müssen."
}