---
title: "Academy App"
canonical_url: "https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten"
locale: de
meta:
  "og:title": "Academy App"
---

[Zur Startseite](https://academy.laioutr.com/)

- [Apps](https://academy.laioutr.com/bereiche/apps)

- [Tracking und Consent](https://academy.laioutr.com/leitfaeden/tracking-und-consent-apps)

- [CCM19 als Consent-Banner einrichten](https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten)

# CCM19 als Consent-Banner einrichten

Die App CCM19 zeigt das CCM19-Banner in der Storefront und meldet jeden Zweck, dem Besucher zustimmen, an den Consent-Speicher von Laioutr. Nötig sind Server-URL, API-Key und Domain-ID aus dem CCM19-Dashboard.

## Bevor du startest

<dl>

<dt>Tarif</dt>
<dd>Jede Laioutr-Lizenz; CCM19-Konto in der Cloud oder selbst gehostet</dd>

<dt>Rolle</dt>
<dd>Developer-Rolle in der Umgebung, um Einstellungen in Configuration zu speichern</dd>

<dt>Dauer</dt>
<dd>8 Min.</dd></dl>

### Voraussetzungen

- CCM19-Konto mit eingetragener Domain
- Server-URL, API-Key und Domain-ID aus dem Integrationscode
- IDs eigener Zwecke, falls im Dashboard angelegt

Zuletzt geprüft am 16. Oktober 2026

Bindet das CCM19-Banner ein, ordnet die Zwecke von CCM19 den Consent-Zwecken von Laioutr zu und meldet jede Entscheidung an den Consent-Speicher, dem Tracking und GTM folgen.

[Entwicklerdokumentation](https://docs.laioutr.com/apps/app-docs/ccm19)

## So funktioniert es

1. Domain anlegen, Server-URL, API-Key und Domain-ID ablesenWo: CCM19-Dashboard · Rolle: Datenschutz oder Developer · Dauer: 10 min
2. App installierenWo: Cockpit, Apps · Rolle: Developer · Dauer: 2 min
3. Zugangsdaten eintragen, eigene Zwecke zuordnen, speichernWo: Cockpit, Configuration · Rolle: Developer · Dauer: 5 min
4. Consent Mode einstellen und Cookies einordnenWo: CCM19-Dashboard · Rolle: Datenschutz · Dauer: 20 min
5. Deployment startenWo: Cockpit, Deployments · Rolle: Developer · Dauer: 5 min

## Konfiguration

| Feld | Zweck | Woher | Pflicht | Pro Environment |
| --- | --- | --- | --- | --- |
| `serverUrl` | Adresse des CCM19-Servers, von dem das Widget geladen wird. | CCM19-Dashboard, Integrationscode; in der Cloud meist https://cloud.ccm19.de | Ja | Ja |
| `apiKey` | API-Key der CCM19-Installation, lädt das Widget für das Konto. | CCM19-Dashboard, Integrationscode der Domain | Ja | Ja |
| `domainId` | ID der Domain in CCM19, wählt Banner und Einstellungen der Storefront. | CCM19-Dashboard, Integrationscode der Domain | Ja | Ja |
| `lang` | Feste Sprache des Banners, etwa de\_DE. Leer lässt CCM19 die Sprache erkennen. | Entscheidung im Projekt | Nein | Ja |
| `purposeMapping` | Zuordnung von CCM19-Zweck-IDs zu Laioutr-Zwecken. Ersetzt die eingebaute Zuordnung, daher werden eigene Zwecke zusätzlich zu den eingebauten eingetragen. | CCM19-Dashboard, IDs der eigenen Zwecke | Nein | Ja |

## Häufige Fehler

<dl>

<dt>Das Banner erscheint nicht.</dt>
<dd>**Ursache:** Server-URL, API-Key oder Domain-ID sind falsch, oder die Domain der Storefront ist in CCM19 nicht eingetragen.</dd>
<dd>**Lösung:** Werte in Configuration mit dem Integrationscode vergleichen, Domain in CCM19 ergänzen und neu deployen.</dd>

<dt>Die Zustimmung zu einem eigenen Zweck wirkt nicht.</dt>
<dd>**Ursache:** Die ID des Zwecks fehlt in purposeMapping, oder purposeMapping enthält nur noch die eigenen Zwecke.</dd>
<dd>**Lösung:** Die ID ergänzen, die eingebauten Zwecke beibehalten und neu deployen.</dd>

<dt>Google erhält doppelte Consent-Updates.</dt>
<dd>**Ursache:** CCM19 und die GTM-App senden beide Consent Mode.</dd>
<dd>**Lösung:** In der GTM-App consentUpdates auf external stellen oder Consent Mode im CCM19-Dashboard ausschalten.</dd></dl>

Die App **CCM19** (Paket `@laioutr-app/ccm19`) ist ein Consent-Adapter. Die App lädt das CCM19-Widget, das Banner und Einstellungsdialog zeigt, hört auf seine Ereignisse und meldet jede Entscheidung an den Consent-Speicher von Laioutr. CCM19 läuft in der Cloud oder auf einem eigenen Server.

CCM19 ordnet Einwilligungen nach Zwecken, so wie Laioutr. Die eingebauten Zwecke sind bereits zugeordnet: *Technisch notwendig* zu necessary, *Werbung* zu advertising, *Statistik* zu analytics, *Personalisierung* zu personalization und *Social Media* zu functional, weil Einbettungen eine vom Besucher gewünschte Funktion sind. *Sonstiges* erteilt keinen Zweck. Anders als bei Cookiebot lassen sich Werbung und Personalisierung damit getrennt erlauben. Eigene Zwecke aus dem Dashboard erhalten erst eine Wirkung, wenn ihre ID zugeordnet ist.

Tracking, die Consent-Updates der Google-Tag-Manager-App und eigene Prüfungen in Komponenten folgen der Entscheidung. Beim ersten Rendern auf dem Server gilt nur necessary, bis der Browser die Entscheidung meldet. Banner-Texte, Cookie-Scan und Google Consent Mode werden im CCM19-Dashboard gepflegt.

## Schritt für Schritt

1. 1 ### Schritt 1: Domain in CCM19 einrichten

   Im CCM19-Dashboard die Domain der Storefront anlegen. Aus dem Integrationscode die Server-URL, den API-Key und die Domain-ID ablesen. In der Cloud lautet die Server-URL meist `https://cloud.ccm19.de`.
2. 2 ### Schritt 2: App installieren

   Im Projekt **Apps** öffnen, CCM19 im Tab **Tracking** suchen und **Install** wählen.
3. 3 ### Schritt 3: Zugangsdaten eintragen

   In **Configuration** `serverUrl`, `apiKey` und `domainId` eintragen. `lang` bleibt leer, damit CCM19 die Sprache selbst erkennt, oder erhält einen Wert wie `de_DE`. **Save settings** wählen.
4. 4 ### Schritt 4: Eigene Zwecke zuordnen

   Nur nötig, wenn im Dashboard eigene Zwecke angelegt sind: Die siebenstellige ID jedes eigenen Zwecks notieren und von der Developer-Rolle in `purposeMapping` ergänzen lassen, zusätzlich zu den eingebauten Zwecken.
5. 5 ### Schritt 5: Google Consent Mode festlegen

   Consent Mode v2 entweder in den Einbindungseinstellungen von CCM19 einschalten oder allein über die GTM-App senden lassen. Nur eine der beiden Quellen sendet Updates an Google.
6. 6 ### Schritt 6: Deployment starten

   Unter **Deployments** mit **Deploy** ein neues Deployment starten. Gespeicherte Einstellungen wirken erst mit dem nächsten Deployment.

## Ergebnis prüfen

Die Storefront in einem privaten Fenster öffnen: Das CCM19-Banner erscheint. Nach Ablehnen setzen Tracking-Ziele keine Cookies. Nach Zustimmen zu Statistik erreichen Events die Analytics-Ziele, Werbe-Ziele bleiben ohne Zustimmung zu Werbung aus. Ein Link zu den Cookie-Einstellungen öffnet das Widget erneut.

## Häufige Fragen

Worin unterscheidet sich CCM19 von Cookiebot?

CCM19 meldet Zwecke einzeln, daher lassen sich Werbung und Personalisierung getrennt erlauben. CCM19 lässt sich selbst hosten, und Google Consent Mode wird im CCM19-Dashboard eingestellt statt in der App.

Warum zählt Social Media nur als funktional?

Der Zweck deckt Einbettungen und Teilen-Buttons ab, also eine Funktion, die Besucher selbst wünschen. Wer ein Video freigibt, stimmt damit nicht Werbe-Cookies zu.

Was passiert mit eigenen Zwecken ohne Zuordnung?

Ein solcher Zweck erteilt keinen Laioutr-Zweck, und das Log der Storefront nennt die ID mit einer Warnung. Sobald die ID in `purposeMapping` ergänzt und neu deployt ist, wirkt die Zustimmung.

## Passend dazu

- [Consent-Banner mit Cookiebot oder CCM19 einrichten](https://academy.laioutr.com/artikel/consent-banner-mit-cookiebot-oder-ccm19-einrichten)10 Min.

  Laioutr bindet Cookiebot oder CCM19 als Consent-App an. Nach Installation und Eintrag der Kennungen zeigt die Storefront den Banner, und alle Tracking-Ziele sowie Google Consent Mode v2 folgen automatisch der Entscheidung des Besuchers.
- [Tracking und Consent in den Komponenten](https://academy.laioutr.com/artikel/tracking-und-consent-in-den-komponenten)6 Min.

  Die Komponenten von Laioutr senden Ereignisse wie Seitenaufruf, Produktansicht, In-den-Warenkorb und Kauf über eine einheitliche Analytics-Schicht. Jedes Ereignis erreicht nur die Ziele, für die der Besucher seine Einwilligung gegeben hat.
- [Cookiebot als Consent-Banner einrichten](https://academy.laioutr.com/apps/cookiebot-consent-banner-einrichten)7 Min.

  Die App Cookiebot zeigt das Cookiebot-Banner in der Storefront und meldet die Entscheidung der Besucher an den Consent-Speicher von Laioutr, nach dem sich Tracking, GTM und andere Apps richten. Nötig ist nur die Cookiebot-Domaingruppen-ID (CBID).
- [Google Tag Manager mit Consent Mode v2 einbinden](https://academy.laioutr.com/apps/google-tag-manager-mit-consent-mode-v2)8 Min.

  Die App Google Tag Manager lädt den GTM-Container in die Storefront, setzt alle Consent-Signale vorab auf „denied“ und gibt sie erst nach der Entscheidung der Besucher frei. Storefront-Events landen nach Zustimmung zu Analytics mit GA4-Namen im Data Layer.

## [Tracking und Consent](https://academy.laioutr.com/leitfaeden/tracking-und-consent-apps)

In diesem Leitfaden suchen

1. [Google Tag Manager mit Consent Mode v2 einbinden](https://academy.laioutr.com/apps/google-tag-manager-mit-consent-mode-v2)8 Min.
2. [Cookiebot als Consent-Banner einrichten](https://academy.laioutr.com/apps/cookiebot-consent-banner-einrichten)7 Min.
3. [CCM19 als Consent-Banner einrichten](https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten)8 Min.

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://academy.laioutr.com/#website",
      "@type": "WebSite",
      "inLanguage": "de",
      "name": "Default",
      "url": "https://academy.laioutr.com/",
      "workTranslation": {
        "@id": "https://academy.laioutr.com/#website"
      }
    },
    {
      "@id": "https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten#webpage",
      "name": "Academy App",
      "url": "https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten",
      "@type": [
        "WebPage",
        "FAQPage"
      ],
      "breadcrumb": {
        "@id": "https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten#breadcrumb"
      },
      "isPartOf": {
        "@id": "https://academy.laioutr.com/#website"
      },
      "mainEntity": [
        {
          "@id": "https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten#/schema/question/1"
        },
        {
          "@id": "https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten#/schema/question/2"
        },
        {
          "@id": "https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten#/schema/question/3"
        }
      ],
      "potentialAction": [
        {
          "@type": "ReadAction",
          "target": [
            "https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten"
          ]
        }
      ]
    },
    {
      "@id": "https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten#breadcrumb",
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "name": "Home",
          "item": "https://academy.laioutr.com/",
          "position": 1
        },
        {
          "@type": "ListItem",
          "name": "Apps",
          "item": "https://academy.laioutr.com/bereiche/apps",
          "position": 2
        },
        {
          "@type": "ListItem",
          "name": "Tracking und Consent",
          "item": "https://academy.laioutr.com/leitfaeden/tracking-und-consent-apps",
          "position": 3
        },
        {
          "@type": "ListItem",
          "name": "CCM19 als Consent-Banner einrichten",
          "item": "https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten",
          "position": 4
        }
      ]
    },
    {
      "@id": "https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten#/schema/question/1",
      "@type": "Question",
      "inLanguage": "de",
      "name": "Worin unterscheidet sich CCM19 von Cookiebot?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "<p>CCM19 meldet Zwecke einzeln, daher lassen sich Werbung und Personalisierung getrennt erlauben. CCM19 lässt sich selbst hosten, und Google Consent Mode wird im CCM19-Dashboard eingestellt statt in der App.</p>"
      }
    },
    {
      "@id": "https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten#/schema/question/2",
      "@type": "Question",
      "inLanguage": "de",
      "name": "Warum zählt Social Media nur als funktional?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "<p>Der Zweck deckt Einbettungen und Teilen-Buttons ab, also eine Funktion, die Besucher selbst wünschen. Wer ein Video freigibt, stimmt damit nicht Werbe-Cookies zu.</p>"
      }
    },
    {
      "@id": "https://academy.laioutr.com/apps/ccm19-consent-banner-einrichten#/schema/question/3",
      "@type": "Question",
      "inLanguage": "de",
      "name": "Was passiert mit eigenen Zwecken ohne Zuordnung?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "<p>Ein solcher Zweck erteilt keinen Laioutr-Zweck, und das Log der Storefront nennt die ID mit einer Warnung. Sobald die ID in <code>purposeMapping</code> ergänzt und neu deployt ist, wirkt die Zustimmung.</p>"
      }
    }
  ]
}
```
