{
    "schema": "https://saferpage.de/schemas/consent-banner-template.v1",
    "generated_at": "2026-06-08T21:57:50+00:00",
    "domain": "adenauercampus.de",
    "available": true,
    "scan": {
        "id": "0bac6b00-58ac-47e4-8a34-6324a5cdede8",
        "checked_at": "2026-06-08 13:16:02.446919+02"
    },
    "summary": "adenauercampus.de: Banner-Vorlage mit 6 Kategorien, 4 Dienstsignal(en), 2 Prior-Blocking-Regel(n) und Default-Denied Consent Mode.",
    "score": 60,
    "layout": {
        "type": "bottom_dialog",
        "first_layer_buttons": [
            "Ablehnen",
            "Einstellungen",
            "Akzeptieren"
        ],
        "privacy_trigger": "dauerhafter Button \"Datenschutz-Einstellungen\"",
        "accessibility_notes": [
            "role=dialog",
            "aria-labelledby",
            "Tastaturbedienung und Fokusführung vor Produktivstart testen"
        ]
    },
    "categories": [
        {
            "label": "Notwendig",
            "description": "Erforderliche Dienste für Sicherheit und Grundfunktionen.",
            "default_state": "active",
            "button_copy": "Immer aktiv",
            "id": "notwendig",
            "service_count": 2,
            "include_in_first_layer": true
        },
        {
            "label": "Statistik",
            "description": "Reichweitenmessung und Analyse erst nach Einwilligung.",
            "default_state": "denied",
            "button_copy": "Statistik erlauben",
            "id": "statistik",
            "service_count": 0,
            "include_in_first_layer": true
        },
        {
            "label": "Marketing / Tracking",
            "description": "Werbung, Profiling, Retargeting und Tracking erst nach Einwilligung.",
            "default_state": "denied",
            "button_copy": "Marketing erlauben",
            "id": "marketing",
            "service_count": 0,
            "include_in_first_layer": true
        },
        {
            "label": "Externe Medien",
            "description": "Videos, Karten, Captchas, Fonts und eingebettete Inhalte verzögert laden.",
            "default_state": "denied",
            "button_copy": "Externe Inhalte erlauben",
            "id": "externe_medien",
            "service_count": 0,
            "include_in_first_layer": true
        },
        {
            "label": "Komfort",
            "description": "Optionale Funktionen getrennt von Statistik und Marketing steuerbar machen.",
            "default_state": "denied",
            "button_copy": "Komfort erlauben",
            "id": "komfort",
            "service_count": 1,
            "include_in_first_layer": false
        },
        {
            "label": "Unklar / klassifizieren",
            "description": "Unklare Dienste bleiben aus, bis Zweck und Rechtsgrundlage geklärt sind.",
            "default_state": "denied",
            "button_copy": "Nicht aktivieren",
            "id": "unklar",
            "service_count": 1,
            "include_in_first_layer": false
        }
    ],
    "services": [
        {
            "id": "guest_language_id_adenauercampus_de",
            "name": "GUEST_LANGUAGE_ID",
            "provider": "adenauercampus.de",
            "domain": "adenauercampus.de",
            "purpose": "Funktional",
            "category_id": "komfort",
            "category_label": "Komfort",
            "consent_mode_key": "functionality_storage",
            "default_state": "denied",
            "prior_blocking_required": true,
            "pre_consent": true,
            "privacy_relevant": false,
            "evidence": "Vor Consent sichtbar. Aus SaferPage-Scan-Evidenz abgeleitet."
        },
        {
            "id": "cookie_support_adenauercampus_de",
            "name": "COOKIE_SUPPORT",
            "provider": "adenauercampus.de",
            "domain": "adenauercampus.de",
            "purpose": "Unklar",
            "category_id": "unklar",
            "category_label": "Unklar / vor Consent prüfen",
            "consent_mode_key": "functionality_storage",
            "default_state": "denied",
            "prior_blocking_required": true,
            "pre_consent": true,
            "privacy_relevant": false,
            "evidence": "Vor Consent sichtbar. Aus SaferPage-Scan-Evidenz abgeleitet."
        },
        {
            "id": "jsessionid_adenauercampus_de",
            "name": "JSESSIONID",
            "provider": "adenauercampus.de",
            "domain": "adenauercampus.de",
            "purpose": "Notwendig",
            "category_id": "notwendig",
            "category_label": "Notwendig",
            "consent_mode_key": "security_storage",
            "default_state": "active",
            "prior_blocking_required": false,
            "pre_consent": true,
            "privacy_relevant": false,
            "evidence": "Vor Consent sichtbar. Aus SaferPage-Scan-Evidenz abgeleitet."
        },
        {
            "id": "lfr_session_state_20082421_adenauercampus_de",
            "name": "LFR_SESSION_STATE_20082421",
            "provider": "adenauercampus.de",
            "domain": "adenauercampus.de",
            "purpose": "Notwendig",
            "category_id": "notwendig",
            "category_label": "Notwendig",
            "consent_mode_key": "security_storage",
            "default_state": "active",
            "prior_blocking_required": false,
            "pre_consent": true,
            "privacy_relevant": false,
            "evidence": "Vor Consent sichtbar. Aus SaferPage-Scan-Evidenz abgeleitet."
        }
    ],
    "consent_mode_defaults": {
        "ad_storage": "denied",
        "analytics_storage": "denied",
        "ad_user_data": "denied",
        "ad_personalization": "denied",
        "functionality_storage": "denied",
        "security_storage": "granted"
    },
    "snippets": [
        {
            "id": "html_banner",
            "label": "HTML/CSS/JS Banner-Vorlage",
            "placement": "Vor dem ersten nicht notwendigen Tag einbauen; Backend/Consent-Ledger ergänzen.",
            "code": "<div id=\"saferpage-consent\" class=\"sp-consent\" hidden>\n  <div class=\"sp-consent__panel\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"sp-consent-title\">\n    <h2 id=\"sp-consent-title\">Datenschutz-Einstellungen</h2>\n    <p>Wir verwenden notwendige Dienste. Statistik, Marketing und externe Inhalte werden erst nach Ihrer Einwilligung geladen.</p>\n    <div id=\"sp-consent-options\"></div>\n    <div class=\"sp-consent__actions\">\n      <button type=\"button\" data-sp-consent=\"reject\">Ablehnen</button>\n      <button type=\"button\" data-sp-consent=\"settings\">Einstellungen</button>\n      <button type=\"button\" data-sp-consent=\"accept\">Akzeptieren</button>\n    </div>\n  </div>\n</div>\n<button id=\"saferpage-consent-trigger\" type=\"button\">Datenschutz-Einstellungen</button>\n<style>\n.sp-consent{position:fixed;inset:auto 1rem 1rem 1rem;z-index:2147483000;font:16px/1.45 system-ui,sans-serif;color:#12212f}.sp-consent__panel{max-width:720px;margin:auto;background:#fff;border:1px solid #d9e2ec;border-radius:8px;box-shadow:0 24px 80px rgba(15,23,42,.24);padding:1rem}.sp-consent__actions{display:flex;gap:.5rem;flex-wrap:wrap}.sp-consent button{border:1px solid #123047;border-radius:6px;background:#fff;padding:.7rem 1rem;font-weight:700}.sp-consent button[data-sp-consent=accept]{background:#123047;color:#fff}.sp-consent__option{display:flex;gap:.75rem;margin:.65rem 0}.sp-consent__option input{inline-size:1.2rem;block-size:1.2rem}#saferpage-consent-trigger{position:fixed;right:1rem;bottom:1rem;z-index:2147482999}\n</style>\n<script>\n(function(){\n  var categories = [{\"id\":\"notwendig\",\"label\":\"Notwendig\",\"description\":\"Erforderliche Dienste für Sicherheit und Grundfunktionen.\",\"default_state\":\"active\"},{\"id\":\"statistik\",\"label\":\"Statistik\",\"description\":\"Reichweitenmessung und Analyse erst nach Einwilligung.\",\"default_state\":\"denied\"},{\"id\":\"marketing\",\"label\":\"Marketing / Tracking\",\"description\":\"Werbung, Profiling, Retargeting und Tracking erst nach Einwilligung.\",\"default_state\":\"denied\"},{\"id\":\"externe_medien\",\"label\":\"Externe Medien\",\"description\":\"Videos, Karten, Captchas, Fonts und eingebettete Inhalte verzögert laden.\",\"default_state\":\"denied\"},{\"id\":\"komfort\",\"label\":\"Komfort\",\"description\":\"Optionale Funktionen getrennt von Statistik und Marketing steuerbar machen.\",\"default_state\":\"denied\"},{\"id\":\"unklar\",\"label\":\"Unklar / klassifizieren\",\"description\":\"Unklare Dienste bleiben aus, bis Zweck und Rechtsgrundlage geklärt sind.\",\"default_state\":\"denied\"}];\n  var key = 'sp_consent_adenauercampus.de_v1';\n  window.dataLayer = window.dataLayer || [];\n  window.gtag = window.gtag || function(){ dataLayer.push(arguments); };\n  gtag('consent','default',{ad_storage:'denied',analytics_storage:'denied',ad_user_data:'denied',ad_personalization:'denied',functionality_storage:'denied',security_storage:'granted'});\n  var root = document.getElementById('saferpage-consent');\n  var options = document.getElementById('sp-consent-options');\n  var trigger = document.getElementById('saferpage-consent-trigger');\n  function render(){\n    options.innerHTML = categories.map(function(cat){\n      var disabled = cat.id === 'notwendig' ? ' disabled checked' : '';\n      return '<label class=\"sp-consent__option\"><input type=\"checkbox\" value=\"'+cat.id+'\"'+disabled+'><span><b>'+cat.label+'</b><br>'+cat.description+'</span></label>';\n    }).join('');\n  }\n  function update(mode){\n    var granted = {notwendig:true};\n    if(mode === 'accept') categories.forEach(function(cat){granted[cat.id]=true;});\n    if(mode === 'settings') options.querySelectorAll('input').forEach(function(input){granted[input.value]=input.checked;});\n    localStorage.setItem(key, JSON.stringify({version:'v1', updated_at:new Date().toISOString(), categories:granted}));\n    gtag('consent','update',{ad_storage:granted.marketing?'granted':'denied',analytics_storage:granted.statistik?'granted':'denied',ad_user_data:granted.marketing?'granted':'denied',ad_personalization:granted.marketing?'granted':'denied',functionality_storage:(granted.externe_medien||granted.komfort)?'granted':'denied',security_storage:'granted'});\n    root.hidden = true;\n    window.dispatchEvent(new CustomEvent('saferpage-consent-update',{detail:granted}));\n  }\n  render();\n  if(!localStorage.getItem(key)) root.hidden = false;\n  trigger.addEventListener('click', function(){root.hidden=false;});\n  root.addEventListener('click', function(ev){var mode=ev.target && ev.target.getAttribute('data-sp-consent'); if(mode==='reject') update('reject'); if(mode==='accept') update('accept'); if(mode==='settings') update('settings');});\n})();\n</script>"
        },
        {
            "id": "privacy_trigger",
            "label": "Privacy Trigger Link",
            "placement": "Footer, Datenschutzseite und Cookie-Erklärung",
            "code": "<button type=\"button\" id=\"saferpage-consent-trigger\">Datenschutz-Einstellungen</button>"
        },
        {
            "id": "gtm_event",
            "label": "GTM Event",
            "placement": "Tag Manager Trigger nach Consent-Update",
            "code": "window.addEventListener('saferpage-consent-update', function(e){ dataLayer.push({event:'saferpage_consent_update', consent:e.detail}); });"
        }
    ],
    "quality_gates": [
        {
            "id": "default_denied",
            "label": "Default Denied vor Tags",
            "pass_condition": "Google-/Marketing-/Analytics-Tags laden erst nach restriktivem Default."
        },
        {
            "id": "equal_reject",
            "label": "Ablehnen gleichwertig",
            "pass_condition": "Ablehnen ist auf erster Ebene ähnlich sichtbar wie Akzeptieren."
        },
        {
            "id": "persistent_trigger",
            "label": "Widerruf dauerhaft erreichbar",
            "pass_condition": "Privacy Trigger bleibt nach Entscheidung sichtbar."
        },
        {
            "id": "prior_blocking",
            "label": "Prior Blocking",
            "pass_condition": "Dienste mit prior_blocking_required=true werden vor Freigabe technisch blockiert."
        },
        {
            "id": "consent_ledger",
            "label": "Consent Ledger",
            "pass_condition": "Version, Zeit, Kategorie, Region und Widerruf werden im Betreiber-System protokolliert."
        }
    ],
    "autoblocking_plan": {
        "schema": "https://saferpage.de/schemas/consent-autoblocking-plan.v1",
        "generated_at": "2026-06-08T21:57:50+00:00",
        "domain": "adenauercampus.de",
        "summary": "adenauercampus.de: 2 Auto-Blocking-Regel(n) fuer Skripte, Iframes und Tag-Manager-Trigger aus SaferPage-Dienstsignalen.",
        "rule_count": 2,
        "rules": [
            {
                "id": "guest_language_id_adenauercampus_de",
                "service": "GUEST_LANGUAGE_ID",
                "provider": "adenauercampus.de",
                "domain_pattern": "*.adenauercampus.de",
                "category_id": "komfort",
                "default_state": "blocked",
                "activation_event": "saferpage-consent-update:komfort",
                "script_rewrite": "<script type=\"text/plain\" data-saferpage-category=\"komfort\" data-src=\"https://adenauercampus.de/...\"></script>",
                "iframe_rewrite": "<iframe data-saferpage-category=\"komfort\" data-src=\"https://adenauercampus.de/...\" src=\"about:blank\" title=\"GUEST_LANGUAGE_ID\"></iframe>",
                "gtm_trigger": "Fire only when event equals saferpage_consent_update and consent.komfort equals true.",
                "evidence": "Vor Consent sichtbar. Aus SaferPage-Scan-Evidenz abgeleitet."
            },
            {
                "id": "cookie_support_adenauercampus_de",
                "service": "COOKIE_SUPPORT",
                "provider": "adenauercampus.de",
                "domain_pattern": "*.adenauercampus.de",
                "category_id": "unklar",
                "default_state": "blocked",
                "activation_event": "saferpage-consent-update:unklar",
                "script_rewrite": "<script type=\"text/plain\" data-saferpage-category=\"unklar\" data-src=\"https://adenauercampus.de/...\"></script>",
                "iframe_rewrite": "<iframe data-saferpage-category=\"unklar\" data-src=\"https://adenauercampus.de/...\" src=\"about:blank\" title=\"COOKIE_SUPPORT\"></iframe>",
                "gtm_trigger": "Fire only when event equals saferpage_consent_update and consent.unklar equals true.",
                "evidence": "Vor Consent sichtbar. Aus SaferPage-Scan-Evidenz abgeleitet."
            }
        ],
        "loader_snippet": "window.addEventListener('saferpage-consent-update', function(event) {\n  var consent = event.detail || {};\n  document.querySelectorAll('script[type=\"text/plain\"][data-saferpage-category][data-src]').forEach(function(node) {\n    var category = node.getAttribute('data-saferpage-category');\n    if (!consent[category] || node.getAttribute('data-saferpage-loaded') === 'true') return;\n    var script = document.createElement('script');\n    Array.prototype.slice.call(node.attributes).forEach(function(attr) {\n      if (attr.name === 'type' || attr.name === 'data-src' || attr.name === 'data-saferpage-category') return;\n      script.setAttribute(attr.name, attr.value);\n    });\n    script.src = node.getAttribute('data-src');\n    script.async = true;\n    node.setAttribute('data-saferpage-loaded', 'true');\n    node.parentNode.insertBefore(script, node.nextSibling);\n  });\n  document.querySelectorAll('iframe[data-saferpage-category][data-src]').forEach(function(node) {\n    var category = node.getAttribute('data-saferpage-category');\n    if (!consent[category] || node.src === node.getAttribute('data-src')) return;\n    node.src = node.getAttribute('data-src');\n  });\n});",
        "gtm_setup": [
            {
                "step": 1,
                "label": "Consent Initialization",
                "action": "Default Consent Mode vor allen Marketing-/Analytics-Tags auf denied setzen."
            },
            {
                "step": 2,
                "label": "Tag Trigger pruefen",
                "action": "Jeder nicht notwendige Tag braucht Kategoriebedingung aus saferpage_consent_update."
            },
            {
                "step": 3,
                "label": "Unklassifizierte Tags blockieren",
                "action": "Neue oder unbekannte Dienste bleiben aus, bis Kategorie, Zweck und Rechtsgrundlage freigegeben sind."
            },
            {
                "step": 4,
                "label": "Reject/GPC testen",
                "action": "Nach Ablehnen und GPC duerfen keine Marketing-/Analytics-/Embed-Tags nachladen."
            }
        ],
        "placeholder_policy": {
            "visual_embeds": "Videos, Karten, Captchas und Social Widgets mit Platzhalter anzeigen und erst nach Kategorie-Freigabe laden.",
            "copy": "Dieser externe Inhalt ist blockiert, bis Sie die passende Datenschutz-Kategorie aktivieren.",
            "preview_limit": "Keine externen Preview-Bilder laden, wenn diese bereits Drittanbieter-Kontakte ausloesen."
        },
        "links": {
            "blocking_json": "https://saferpage.de/consent-banner/adenauercampus.de/blocking-json",
            "blocking_markdown": "https://saferpage.de/consent-banner/adenauercampus.de/blocking-md",
            "banner_center": "https://saferpage.de/consent-banner/adenauercampus.de",
            "cmp_plan": "https://saferpage.de/consent/adenauercampus.de/cmp-plan",
            "consent_journey": "https://saferpage.de/consent-journey/adenauercampus.de",
            "consent_mode": "https://saferpage.de/consent-mode/adenauercampus.de",
            "guide": "https://saferpage.de/guides/tracking-und-consent-reparieren"
        },
        "disclaimer": "Auto-Blocking-Regeln sind Betreiber-Vorlagen. Produktivbetrieb braucht CMP-Freigabe, Tests je Consent-Zustand, CSP-/Tag-Manager-Abgleich und fachliche Freigabe."
    },
    "links": {
        "banner_center": "https://saferpage.de/consent-banner/adenauercampus.de",
        "json": "https://saferpage.de/consent-banner/adenauercampus.de/export",
        "csv": "https://saferpage.de/consent-banner/adenauercampus.de/export-csv",
        "markdown": "https://saferpage.de/consent-banner/adenauercampus.de/template-md",
        "blocking_json": "https://saferpage.de/consent-banner/adenauercampus.de/blocking-json",
        "blocking_markdown": "https://saferpage.de/consent-banner/adenauercampus.de/blocking-md",
        "consent_center": "https://saferpage.de/consent/adenauercampus.de",
        "cmp_plan": "https://saferpage.de/consent/adenauercampus.de/cmp-plan",
        "consent_ledger": "https://saferpage.de/consent-ledger/adenauercampus.de",
        "consent_region": "https://saferpage.de/consent-region/adenauercampus.de",
        "consent_journey": "https://saferpage.de/consent-journey/adenauercampus.de",
        "consent_mode": "https://saferpage.de/consent-mode/adenauercampus.de",
        "cookie_declaration": "https://saferpage.de/cookies/adenauercampus.de",
        "guide": "https://saferpage.de/guides/tracking-und-consent-reparieren",
        "report": "https://saferpage.de/adenauercampus.de"
    },
    "sources": [
        {
            "title": "Termly Preference Center",
            "url": "https://support.termly.io/hc/en-us/articles/30710537528977-How-can-I-let-my-users-manage-their-cookie-preferences",
            "note": "Referenz für installierbares Preference Center."
        },
        {
            "title": "Cookiebot custom banner",
            "url": "https://support.cookiebot.com/hc/en-us/articles/360003921454-Can-I-build-my-own-fully-customized-cookie-consent-banner",
            "note": "Referenz für anpassbare Banner-Elemente und Kategorien."
        },
        {
            "title": "Usercentrics banner layouts",
            "url": "https://usercentrics.com/knowledge-hub/usercentrics-cmp-consent-banner-layouts/",
            "note": "Referenz für Banner-Layout-Varianten und Widget-Muster."
        }
    ],
    "disclaimer": "Diese Banner-Vorlage ist kein vollständiger CMP-Dienst. Betreiber müssen prior blocking, Backend/Consent-Ledger, Rechtsgrundlagen, Barrierefreiheit, Lokalisierung und Re-Scan vor Produktivstart fachlich freigeben."
}
