Vorlage für den Einwilligungsmodus erstellen

Dieser Artikel richtet sich an Entwickler, die eine Lösung zur Einwilligungsverwaltung auf Websites bereitstellen, die Google Tag Manager (GTM) verwenden.

Auf dieser Seite werden Einwilligungsarten in Google Tag Manager vorgestellt und Sie erfahren, wie Sie sie in Ihre Lösung zur Einwilligungsverwaltung einbinden.

Wenn Sie eine Tag-Vorlage zur Verfügung stellen, können Ihre Nutzer Ihre Einwilligungslösung ohne Code einbinden und sparen so erheblichen Zeit- und Arbeitsaufwand.

Nutzer können mithilfe einer Vorlage für den Einwilligungsmodus Standardzustimmungsstatus festlegen und die Optionen für die Einwilligung der Besucher an Google Tag Manager weitergeben. Dadurch wird sichergestellt, dass Google- und Drittanbieter-Tags, die den Einwilligungsmodus unterstützen, optimal funktionieren.

Als Ersteller von Vorlagen können Sie Vorlagen für den Einwilligungsmodus zur internen Verwendung implementieren oder in der Community-Galerie für Vorlagen veröffentlichen, um sie öffentlich zugänglich zu machen. Anbieter von Plattformen zur Einwilligungsverwaltung, die Vorlagen für den Einwilligungsmodus anbieten, haben die Möglichkeit, in unsere Dokumentation zum Einwilligungsmodus aufgenommen zu werden und die Vorlagen in der Vorlagengalerie auszuwählen.

Das Speicherverhalten von Google- und Drittanbieter-Tags wird basierend auf dem Einwilligungsstatus granted oder denied angepasst. Sie können integrierte Einwilligungsprüfungen für jede der folgenden Einwilligungsarten einrichten:

Einwilligungsart Beschreibung
ad_storage Ermöglicht das Speichern werbebezogener Cookies, z. B. Cookies.
ad_user_data Legt die Einwilligung zum Senden von Nutzerdaten an Google für Online-Werbezwecke fest.
ad_personalization Legt die Einwilligung für personalisierte Anzeigen fest
analytics_storage Ermöglicht das Speichern von analysebezogenen Cookies wie Cookies (z. B. Besuchsdauer)
functionality_storage Ermöglicht das Speichern von Daten, die Funktionen der Website oder App unterstützen, z. B. Spracheinstellungen.
personalization_storage Ermöglicht das Speichern von Personalisierungen, z. B. Videoempfehlungen.
security_storage Ermöglicht das Speichern sicherheitsrelevanter Daten, z. B. für Authentifizierungsfunktionen, Betrugsprävention und sonstige Schutzmechanismen für Nutzer

Im Einwilligungsmodus werden die Optionen für die Nutzereinwilligung erfasst. Mit Tag-Einwilligungsprüfungen wird sichergestellt, dass das Tag-Verhalten entsprechend angepasst wird. Befolgen Sie beim Erstellen einer neuen Einwilligungsvorlage die Best Practices:

  • Verwenden Sie anstelle von gtag consent die Tag Manager-APIs für den Einwilligungsmodus (setDefaultConsentState und updateConsentState).

  • Mit dem Trigger Initialisierung der Einwilligung – Alle Seiten können Sie sofort nach dem Auslösen die standardmäßigen Einwilligungsstatus festlegen.

  • Die CMP muss den Besucher so schnell wie möglich auffordern, die Einwilligung für alle anwendbaren Einwilligungsarten zu erteilen oder zu verweigern.

  • Wenn ein Besucher seine Einwilligungsoption angibt, muss die CMP den aktualisierten Einwilligungsstatus übergeben.

1. Neue Vorlage erstellen

Bei diesem Implementierungsansatz wird ein Feld in der Vorlage verwendet, das den standardmäßigen Einwilligungsstatus enthält. Der Implementierungscode liest dieses Feld aus, um den standardmäßigen Einwilligungsstatus zur Laufzeit festzulegen. Für den Befehl „update“ wird versucht, ein Cookie zu lesen, das von der Einwilligungslösung zum Speichern der Einwilligungsoptionen der Besucher gesetzt wurde. Außerdem richten Sie einen Callback für updateConsentState ein, um den Fall zu verarbeiten, dass ein Besucher noch keine Einwilligung erteilt hat oder seine Einwilligung ändert.

  1. Melden Sie sich in Ihrem Google Tag Manager-Konto an.
  2. Wählen Sie im linken Navigationsmenü Vorlagen aus.
  3. Klicken Sie im Bereich Tag-Vorlagen auf Neu.
  1. Wählen Sie den Tab Felder aus und klicken Sie auf Feld hinzufügen > Parametertabelle.
  2. Ändern Sie den Namen in defaultSettings.
  3. Maximieren Sie das Feld.
  4. Ändern Sie Display name (Anzeigename) in Default settings (Anzeigename).
  5. Klicken Sie auf Spalte hinzufügen, wählen Sie Texteingabe aus, ändern Sie den Namen in region und klicken Sie das Kästchen Eindeutige Spaltenwerte verlangen an.
  6. Maximieren Sie die Spalte und ändern Sie den Anzeigenamen in Region (leave blank to have consent apply to all regions). Die Anweisung in Klammern ist Dokumentation für Ihre Vorlagennutzer. Weitere Informationen zum Einrichten von Standardeinstellungen für die Einwilligung für verschiedene Regionen
  7. Klicken Sie auf Spalte hinzufügen, wählen Sie Texteingabe aus und ändern Sie den Namen in granted.
  8. Maximieren Sie die Spalte und ändern Sie den Anzeigenamen in Granted Consent Types (comma separated).
  9. Klicken Sie auf Spalte hinzufügen, wählen Sie Texteingabe aus und ändern Sie den Namen in denied.
  10. Maximieren Sie die Spalte und ändern Sie den Anzeigenamen in Denied Consent Types (comma separated)

Optional: So fügen Sie Unterstützung für das Entfernen von Anzeigendaten hinzu:

  1. Klicken Sie auf Feld hinzufügen, wählen Sie Kästchen aus und ändern Sie den Feldnamen in ads_data_redaction.
  2. Ändern Sie den Anzeigenamen in Redact Ads Data.

Weitere Informationen

Optional: So fügen Sie Unterstützung für die Weitergabe von URL-Parametern hinzu:

  1. Klicken Sie auf Feld hinzufügen, wählen Sie Kästchen aus und ändern Sie den Feldnamen in url_passthrough.
  2. Ändern Sie den Anzeigenamen in Pass through URL parameters.

Weitere Informationen zum Weiterleiten von URL-Parametern

So fügen Sie den Implementierungscode hinzu:

  1. Öffnen Sie im Vorlageneditor den Tab Code.
  2. Bearbeiten Sie im Codebeispiel unten die Platzhalterfelder.
  3. Kopieren Sie den Code und ersetzen Sie den Boilerplate-Code im Vorlageneditor durch diesen.
  4. Speichern Sie die Vorlage.
// The first two lines are optional, use if you want to enable logging
const log = require('logToConsole');
log('data =', data);
const setDefaultConsentState = require('setDefaultConsentState');
const updateConsentState = require('updateConsentState');
const getCookieValues = require('getCookieValues');
const callInWindow = require('callInWindow');
const gtagSet = require('gtagSet');
const COOKIE_NAME = 'Your_cookie_name';
/*
 *   Splits the input string using comma as a delimiter, returning an array of
 *   strings
 */
const splitInput = (input) => {
  return input.split(',')
      .map(entry => entry.trim())
      .filter(entry => entry.length !== 0);
};
/*
 *   Processes a row of input from the default settings table, returning an object
 *   which can be passed as an argument to setDefaultConsentState
 */
const parseCommandData = (settings) => {
  const regions = splitInput(settings['region']);
  const granted = splitInput(settings['granted']);
  const denied = splitInput(settings['denied']);
  const commandData = {};
  if (regions.length > 0) {
    commandData.region = regions;
  }
  granted.forEach(entry => {
    commandData[entry] = 'granted';
  });
  denied.forEach(entry => {
    commandData[entry] = 'denied';
  });
  return commandData;
};
/*
 *   Called when consent changes. Assumes that consent object contains keys which
 *   directly correspond to Google consent types.
 */
const onUserConsent = (consent) => {
  const consentModeStates = {
    ad_storage: consent['adConsentGranted'] ? 'granted' : 'denied',
    ad_user_data: consent['adUserDataConsentGranted'] ? 'granted' : 'denied',
    ad_personalization: consent['adPersonalizationConsentGranted'] ? 'granted' : 'denied',
    analytics_storage: consent['analyticsConsentGranted'] ? 'granted' : 'denied',
    functionality_storage: consent['functionalityConsentGranted'] ? 'granted' : 'denied',
    personalization_storage: consent['personalizationConsentGranted'] ? 'granted' : 'denied',
    security_storage: consent['securityConsentGranted'] ? 'granted' : 'denied',
  };
  updateConsentState(consentModeStates);
};
/*
 *   Executes the default command, sets the developer ID, and sets up the consent
 *   update callback
 */
const main = (data) => {
  /*
   * Optional settings using gtagSet
   */
  gtagSet('ads_data_redaction', data.ads_data_redaction);
  gtagSet('url_passthrough', data.url_passthrough);
  gtagSet('developer_id.your_developer_id', true);
  // Set default consent state(s)
  data.defaultSettings.forEach(settings => {
    const defaultData = parseCommandData(settings);
  // wait_for_update (ms) allows for time to receive visitor choices from the CMP
    defaultData.wait_for_update = 500;
    setDefaultConsentState(defaultData);
  });

  // Check if cookie is set and has values that correspond to Google consent
  // types. If it does, run onUserConsent().
  const settings = getCookieValues(COOKIE_NAME);
  if (typeof settings !== 'undefined') {
    onUserConsent(settings);
  }
  /**
   *   Add event listener to trigger update when consent changes
   *
   *   References an external method on the window object which accepts a
   *   function as an argument. If you do not have such a method, you will need
   *   to create one before continuing. This method should add the function
   *   that is passed as an argument as a callback for an event emitted when
   *   the user updates their consent. The callback should be called with an
   *   object containing fields that correspond to the five built-in Google
   *   consent types.
   */
  callInWindow('addConsentListenerExample', onUserConsent);
};
main(data);
data.gtmOnSuccess();

Als Nächstes konfigurieren Sie die Berechtigungen für den Zugriff auf den Einwilligungsstatus und für den Zugriff auf Cookies.

  1. Wählen Sie den Tab Berechtigungen aus und klicken Sie auf Zugriff auf Einwilligungsstatus.
  2. Klicken Sie auf Einwilligungsart hinzufügen.
  3. Klicken Sie auf das Feld und wählen Sie im Drop-down-Menü ad_storage aus.
  4. Klicken Sie das Kästchen Schreiben an.
  5. Klicken Sie auf Hinzufügen.
  6. Wiederholen Sie die Schritte 2 bis 5 für ad_user_data, ad_personalization und analytics_storage. Wenn Sie zusätzliche Einwilligungsarten benötigen, fügen Sie sie auf dieselbe Weise hinzu.
  7. Klicken Sie auf Speichern.

So fügen Sie Berechtigungen für den Zugriff auf Cookies hinzu:

  1. Wählen Sie den Tab Berechtigungen aus und klicken Sie auf Cookie-Werte lesen.
  2. Geben Sie unter Spezifisch die Namen der Cookies ein, die in Ihrem Code gelesen werden müssen, um die Einwilligungsoptionen des Nutzers zu bestimmen. Verwenden Sie einen Namen pro Zeile.
  3. Klicken Sie auf Speichern.

2. Einheitentests erstellen

Informationen zum Erstellen von Tests für Ihre Vorlage finden Sie unter Tests.

Der folgende Code zeigt ein Beispiel dafür, wie diese Vorlage durch Hinzufügen eines Listeners in den Code Ihrer Lösung zur Einwilligungsverwaltung eingebunden werden kann:

// Array of callbacks to be executed when consent changes
const consentListeners = [];

/**
 *   Called from GTM template to set callback to be executed when user consent is provided.
 *   @param {function} Callback to execute on user consent
 */
window.addConsentListenerExample = (callback) => {
  consentListeners.push(callback);
};

/**
 *   Called when user grants/denies consent.
 *   @param {Object} Object containing user consent settings.
 */
const onConsentChange = (consent) => {
  consentListeners.forEach((callback) => {
    callback(consent);
  });
};

Nachdem ein Websitebesucher seine Einwilligungsentscheidungen getroffen hat, in der Regel durch Interaktion mit einem Einwilligungsbanner, sollte der Vorlagencode die Einwilligungsstatus entsprechend mit der updateConsentState API aktualisieren.

Das folgende Beispiel zeigt den updateConsentState-Aufruf für einen Besucher, der angegeben hat, dass er allen Speichertypen zugestimmt hat. Auch in diesem Beispiel werden hartcodierte Werte für granted verwendet. In der Praxis sollten diese Werte aber zur Laufzeit mit der Einwilligung des Besuchers ermittelt werden, die von der CMP erfasst wird.

const updateConsentState = require('updateConsentState');

updateConsentState({
  'ad_storage': 'granted',
  'ad_user_data': 'granted',
  'ad_personalization': 'granted',
  'analytics_storage': 'granted',
  'functionality_storage': 'granted',
  'personalization_storage': 'granted',
  'security_storage': 'granted'
});

Regionsspezifisches Verhalten

Wenn Sie standardmäßige Einwilligungsstatus für Besucher aus bestimmten Regionen festlegen möchten, geben Sie in der Vorlage eine Region gemäß ISO 3166-2 an. Mit Regionswerten können Vorlagennutzer regionale Vorschriften einhalten, ohne Informationen von Besuchern außerhalb dieser Regionen zu verlieren. Wenn in einem setDefaultConsentState-Befehl keine Region angegeben ist, gilt der Wert für alle anderen Regionen.

Im folgenden Beispiel wird der Standardstatus für analytics_storage für Besucher aus Spanien und Alaska auf denied und für alle anderen Nutzer analytics_storage auf granted festgelegt:

const setDefaultConsentState = require('setDefaultConsentState');

setDefaultConsentState({
  'analytics_storage': 'denied',
  'region': ['ES', 'US-AK']
});
setDefaultConsentState({
  'analytics_storage': 'granted'
});

Die genauesten Angaben haben Vorrang

Wenn auf derselben Seite zwei standardmäßige Einwilligungsbefehle mit Werten für eine Region und eine Unterregion vorhanden sind, wird der mit der spezifischeren Region angewendete wirksam. Wenn Sie beispielsweise ad_storage auf 'granted' für die Region US und ad_storage auf 'denied' für die Region US-CA festgelegt haben, wird für einen Besucher aus Kalifornien die spezifischere Einstellung US-CA wirksam.

Region ad_storage Behavior
USA 'granted' Gilt für Nutzer in den USA, die sich nicht in Kanada befinden
US-CA 'denied' Gilt für Nutzer in den USA
Ohne Angabe 'granted' Verwendet den Standardwert 'granted'. In diesem Beispiel gilt das für Nutzer, die sich nicht in den USA oder in Kanada befinden

Zusätzliche Metadaten

Mit der gtagSet API können Sie die folgenden optionalen Parameter festlegen:

Diese APIs sind nur in der Sandbox-Umgebung für GTM-Vorlagen verfügbar.

Informationen zum Anzeigenklick, zur Client-ID und zur Sitzungs-ID in URLs weiterleiten

Wenn ein Besucher nach dem Klick auf eine Anzeige auf die Website eines Werbetreibenden gelangt, werden möglicherweise Informationen zur Anzeige als Suchparameter an die Landingpage-URLs angehängt. Um die Conversion-Genauigkeit zu verbessern, speichern Google-Tags diese Informationen in der Regel in eigenen Cookies auf der Domain des Werbetreibenden.

Wenn ad_storage jedoch denied ist, speichern Google-Tags diese Informationen nicht lokal. Um in diesem Fall die Messqualität für Anzeigenklicks zu verbessern, können Werbetreibende optional Informationen zu Anzeigenklicks über URL-Parameter zwischen Seiten übertragen. Dazu wird die Funktion „URL-Passthrough“ verwendet.

Wenn analytics_storage auf „Abgelehnt“ gesetzt ist, kann URL-Passthrough verwendet werden, um ereignisbasierte und sitzungsbasierte Analysen (einschließlich Conversions) ohne Cookies seitenübergreifend zu senden.

Die folgenden Bedingungen müssen erfüllt sein, um URL-Passthrough verwenden zu können:

  • Auf der Seite sind Google-Tags vorhanden, die den Einwilligungsstatus berücksichtigen.
  • Die Website hat die Verwendung der URL-Passthrough-Funktion aktiviert.
  • Der Einwilligungsmodus ist auf der Seite implementiert.
  • Der ausgehende Link verweist auf dieselbe Domain wie die Domain der aktuellen Seite.
  • Die URL enthält den Parameter „gclid“ oder „dclid“ (nur Google Ads- und Floodlight-Tags).

Der Vorlagennutzer sollte in der Vorlage konfigurieren können, ob diese Einstellung aktiviert werden soll. Mit dem folgenden Vorlagencode wird "url_passthrough" auf "true" festgelegt:

gtagSet('url_passthrough', true);

Anzeigendaten entfernen

Wenn ad_storage abgelehnt wird, werden keine neuen Cookies zu Werbezwecken gesetzt. Außerdem werden Drittanbieter-Cookies, die zuvor auf google.com und doubleclick.net gesetzt wurden, nicht verwendet. An Google gesendete Daten enthalten weiterhin die vollständige Seiten-URL, einschließlich aller Informationen zu Anzeigenklicks in den URL-Parametern.

Wenn Sie möchten, dass Ihre Anzeigendaten weiter entfernt werden, wenn ad_storage abgelehnt wird, setzen Sie ads_data_redaction auf „true“.

Wenn ads_data_redaction „true“ ist und ad_storage abgelehnt wird, werden Kennungen für Anzeigenklicks entfernt, die in Netzwerkanfragen von Google Ads und Floodlight-Tags gesendet werden.

gtagSet('ads_data_redaction', true);

Entwickler-ID

Wenn Sie ein CMP-Anbieter mit einer von Google ausgestellten Entwickler-ID sind, verwenden Sie die folgende Methode, um dies so früh wie möglich in Ihrer Vorlage festzulegen.

Sie benötigen nur dann eine Entwickler-ID, wenn Ihre Implementierung von nicht verbundenen Unternehmen oder Rechtssubjekten auf mehreren Websites verwendet wird. Wenn die Implementierung von einer Website oder einem Rechtssubjekt verwendet wird, beantragen Sie keine Entwickler-ID.

gtagSet('developer_id.<your_developer_id>', true);

Dokumentation für Nutzer bereitstellen

Ihre Nutzer verwenden Ihre Einwilligungsvorlage, um ein Tag einzurichten, über das die Nutzereinwilligung erfasst wird. Stellen Sie eine Dokumentation für Ihre Nutzer zur Verfügung, in der die folgenden Best Practices erläutert werden:

  • Standardeinstellungen für die Einwilligung in der Tabelle Einstellungen festlegen
  • Standardeinstellungen für die Einwilligung für verschiedene Regionen durch Hinzufügen zusätzlicher Tabellenzeilen einrichten
  • Das Tag wird durch den Trigger Initialisierung der Einwilligung – Alle Seiten ausgelöst.

Nächste Schritte

Wenn Sie Ihre Vorlage allen Tag Manager-Nutzern zur Verfügung stellen möchten, laden Sie sie in die Community-Galerie für Vorlagen hoch.