Vorlage für den Einwilligungsmodus erstellen

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

Auf dieser Seite werden die Einwilligungstypen 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, was Zeit und Aufwand erheblich spart.

Nutzer können mithilfe einer Vorlage für den Einwilligungsmodus Standardstatus für die Einwilligung festlegen und die Einwilligungsentscheidungen der Besucher an Google Tag Manager senden. So wird die optimale Funktion von Google- und Drittanbieter-Tags gewährleistet, die den Einwilligungsmodus unterstützen.

Als Vorlagen-Entwickler können Sie Vorlagen für den Einwilligungsmodus für den internen Gebrauch implementieren oder sie in der Community-Galerie für Vorlagen veröffentlichen, um sie öffentlich verfügbar zu machen. Anbieter von Plattformen zur Einwilligungsverwaltung (Consent Management Platforms, CMPs), die Vorlagen für den Einwilligungsmodus anbieten, können in unserer Dokumentation zum Einwilligungsmodus aufgeführt werden und ihre Vorlagen in der Vorlagengalerie präsentieren.

Das Speicherverhalten von Google- und Drittanbieter-Tags wird anhand des Einwilligungsstatus granted oder denied angepasst. Das Team kann integrierte Einwilligungsprüfungen für die folgenden Einwilligungsarten haben:

Einwilligungsart Beschreibung
ad_storage Ermöglicht das Speichern von werbebezogenen Daten wie Cookies.
ad_user_data Legt die Einwilligung für das Senden von Nutzerdaten zu Online-Werbezwecken an Google fest.
ad_personalization Legt die Einwilligung für personalisierte Anzeigen fest
analytics_storage Ermöglicht das Speichern von analysebezogenen Daten wie Cookies, z. B. zur Besuchsdauer.
functionality_storage Ermöglicht das Speichern von Daten, die die Funktion der Website oder App unterstützen, z. B. die Spracheinstellungen.
personalization_storage Ermöglicht das Speichern von Daten mit Bezug zur Personalisierung, z. B. Videoempfehlungen.
security_storage Ermöglicht das Speichern von sicherheitsbezogenen Daten, z. B. für Authentifizierungsfunktionen, Betrugsprävention und andere Schutzmechanismen für Nutzer

Im Einwilligungsmodus werden die Einwilligungsentscheidungen der Besucher erfasst und die Tag-Einwilligungsüberprüfungen sorgen dafür, dass das Tag-Verhalten entsprechend angepasst wird. Beachten Sie beim Erstellen einer neuen Einwilligungsvorlage die folgenden Best Practices:

  • Verwenden Sie die Tag Manager-Einwilligungsmodus APIs setDefaultConsentState und updateConsentState anstelle von gtag consent.

  • Mit dem Trigger Initialisierung der Einwilligung – Alle Seiten können Sie sofort nach der Auslösung den Standardstatus für die Einwilligung festlegen.

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

  • Wenn ein Besucher seine Einwilligungsentscheidung trifft, muss die CMP den aktualisierten Einwilligungsstatus weitergeben.

1. Neue Vorlage erstellen

Bei diesem Implementierungsansatz wird ein Feld in der Vorlage verwendet, um den Standardstatus der Einwilligung zu speichern. Der Implementierungscode liest dieses Feld, um den Standardeinwilligungsstatus zur Laufzeit festzulegen. Für den Befehl „update“ versucht der Code, ein von der Einwilligungslösung festgelegtes Cookie zu lesen, um die Einwilligungsentscheidungen der Besucher zu speichern. Außerdem richten Sie einen Callback für updateConsentState ein, um den Fall zu behandeln, dass ein Besucher noch keine Einwilligungsoption ausgewählt hat oder seine Einwilligung ändern möchte.

  1. Melden Sie sich in Ihrem Google Tag Manager-Konto an.
  2. Wählen Sie im linken Navigationsbereich 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 den Anzeigenamen in Default settings.
  5. Klicken Sie auf Spalte hinzufügen, wählen Sie Texteingabe aus, ändern Sie den Namen in region und klicken Sie das Kästchen Spaltenwerte müssen eindeutig sein an.
  6. Maximieren Sie die Spalte und ändern Sie den Anzeigenamen in Region (leave blank to have consent apply to all regions). Die in Klammern stehende Anweisung ist eine Dokumentation für die Nutzer der Vorlage. Weitere Informationen zum Festlegen 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 zum Cookie-Verhalten bei der Entfernung von Anzeigendaten

Optional: So fügen Sie die Unterstützung für die Weiterleitung 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. Anzeigenamen in Pass through URL parameters ändern

Weitere Informationen zum Weitergeben von URL-Parametern

So fügen Sie den Implementierungscode hinzu:

  1. Öffnen Sie im Vorlageneditor den Tab Code.
  2. Bearbeiten Sie im folgenden Codebeispiel die Platzhalterfelder.
  3. Kopieren Sie den Code und ersetzen Sie damit den Boilerplate-Code im Vorlageneditor.
  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();

Konfigurieren Sie als Nächstes die Berechtigungen für den Zugriff auf den Einwilligungsstatus und 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. Setzen Sie ein Häkchen bei Schreiben.
  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 die gleiche 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 Bestimmt die Namen aller Cookies ein, die Ihr Code lesen muss, um die Einwilligungsentscheidungen des Nutzers zu ermitteln. Geben Sie jeweils einen Namen pro Zeile ein.
  3. Klicken Sie auf Speichern.

2. Einheitentests erstellen

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

Im folgenden Code wird veranschaulicht, wie diese Vorlage in den Code Ihrer Lösung zur Einwilligungsverwaltung eingebunden werden kann, indem ein Listener hinzugefügt wird:

// 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 seine Einwilligung für alle Speichertypen erteilt hat. Auch in diesem Beispiel werden hartcodierte Werte für granted verwendet. In der Praxis sollten diese jedoch zur Laufzeit anhand der Einwilligung des Besuchers bestimmt werden, die über die 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 Standardstatus für die Einwilligung festlegen möchten, die für Besucher aus bestimmten Regionen gelten, geben Sie in der Vorlage eine Region gemäß ISO 3166-2 an. Mithilfe von 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 analytics_storage auf granted gesetzt:

const setDefaultConsentState = require('setDefaultConsentState');

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

Das spezifischeste Element hat Vorrang.

Wenn auf derselben Seite zwei Standardbefehle für die Einwilligung mit Werten für eine Region und eine Unterregion vorhanden sind, wird derjenige mit der spezifischeren Region angewendet. 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 Besucher aus Kalifornien die spezifischere Einstellung US-CA angewendet.

Region ad_storage Verhalten
USA 'granted' Gilt für Nutzer in den USA, die sich nicht in Kalifornien befinden
US-CA 'denied' Gilt für Nutzer in Kanada (USA)
Ohne Angabe 'granted' Der Standardwert 'granted' wird verwendet. In diesem Beispiel gilt das für Nutzer, die sich nicht in den USA oder in den USA-CA befinden.

Zusätzliche Metadaten

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

Diese APIs sind nur in der Sandbox-Umgebung der GTM-Vorlage verfügbar.

Informationen zu Anzeigenklicks, Client-IDs und Sitzungs-IDs in URLs übergeben

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

Wenn ad_storage jedoch denied ist, werden diese Informationen nicht lokal in Google-Tags gespeichert. Um in diesem Fall die Qualität der Analyse von Anzeigenklicks zu verbessern, können Werbetreibende mithilfe einer Funktion namens URL-Passthrough Informationen zu Anzeigenklicks über URL-Parameter seitenübergreifend weitergeben.

Wenn analytics_storage auf „Abgelehnt“ gesetzt ist, kann die URL-Weiterleitung verwendet werden, um Ereignis- und Sitzungsanalysen (einschließlich Conversions) ohne Cookies über Seiten hinweg zu senden.

Für die URL-Weiterleitung müssen die folgenden Bedingungen erfüllt sein:

  • Die Seite enthält Google-Tags, bei denen die Einwilligung der Nutzer berücksichtigt wird.
  • 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 eine GCLID oder DCLID (nur Google Ads- und Floodlight-Tags)

Ihre Vorlage sollte es dem Vorlagennutzer ermöglichen zu konfigurieren, ob er diese Einstellung aktivieren möchte. Mit dem folgenden Vorlagencode wird „url_passthrough“ auf „wahr“ gesetzt:

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 festgelegt wurden, nicht verwendet. Die an Google gesendeten Daten enthalten weiterhin die vollständige Seiten-URL, einschließlich aller Informationen zu Anzeigenklicks in den URL-Parametern.

Wenn die Anzeigendaten weiter entfernt werden sollen, wenn ad_storage abgelehnt wird, setzen Sie ads_data_redaction auf „true“.

Wenn ads_data_redaction wahr und ad_storage abgelehnt ist, werden Anzeigenklick-IDs, die über Google Ads- und Floodlight-Tags in Netzwerkanfragen gesendet werden, entfernt.

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 diese so früh wie möglich in Ihrer Vorlage festzulegen.

Sie benötigen nur dann eine Entwickler-ID, wenn Ihre Implementierung auf mehreren Websites von unabhängigen Unternehmen oder Rechtssubjekten verwendet wird. Wenn die Implementierung von einer Website oder Entität verwendet wird, beantragen Sie keine Entwickler-ID.

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

Dokumentation für Ihre Nutzer bereitstellen

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

  • Standardeinstellungen für die Einwilligung in der Tabelle Einstellungen festlegen
  • So legen Sie Standardeinstellungen für die Einwilligung für verschiedene Regionen fest, indem Sie zusätzliche Tabellenzeilen hinzufügen.
  • Lösen Sie das Tag beim Trigger Initialisierung der Einwilligung – Alle Seiten aus.

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.