Tworzenie szablonu trybu uzyskiwania zgody

Ten artykuł jest przeznaczony dla deweloperów, którzy korzystają z rozwiązania do zarządzania zgodą użytkowników w witrynach korzystających z Menedżera tagów Google.

Na tej stronie omawiamy rodzaje zgody w Menedżerze tagów Google oraz wskazujemy, jak zintegrować je z innym narzędziem do zarządzania zgodą użytkowników.

Gdy udostępnisz szablon tagu, użytkownicy będą mogli zintegrować Twoje rozwiązanie do uzyskiwania zgody bez użycia kodu bez użycia kodu, co pozwala oszczędzić czas i wysiłek.

Użytkownicy mogą ustawiać domyślne stany zgody użytkownika za pomocą szablonu trybu uzyskiwania zgody, a także informować Menedżera tagów Google o wyborach użytkowników dotyczących zgody na przetwarzanie danych. Zapewnia to optymalne działanie tagów Google i tagów innych firm, które obsługują tryb uzyskiwania zgody.

Jako twórca szablonów możesz wdrożyć szablony trybu uzyskiwania zgody do użytku wewnętrznego lub opublikować je w Galerii szablonów, aby udostępnić je publicznie. Dostawcy platform do zarządzania zgodą użytkowników, którzy oferują szablony trybu uzyskiwania zgody, mogą znajdować się na liście w naszej dokumentacji trybu uzyskiwania zgody i udostępniać szablony w selektorze Galerii szablonów.

Tagi Google i innych usług dostosowują swoje działanie dotyczące miejsca na dane na podstawie stanu zgody wynoszącego granted lub denied. Mogą mieć wbudowane mechanizmy sprawdzania zgody użytkownika na potrzeby dowolnego z tych typów zgody:

Rodzaj zgody Opis
ad_storage Umożliwia przechowywanie danych, np. plików cookie, związanych z reklamami.
ad_user_data Wskazuje zgodę na wysyłanie danych użytkownika do Google w celach związanych z reklamami online.
ad_personalization Określa stan zgody na reklamy spersonalizowane.
analytics_storage Umożliwia przechowywanie danych, np. plików cookie, związanych ze statystykami (np. czasem trwania wizyty).
functionality_storage Włącza pamięć, która obsługuje funkcje witryny lub aplikacji, np. ustawienia języka.
personalization_storage Umożliwia przechowywanie danych na potrzeby personalizacji, np. rekomendacji filmów.
security_storage Umożliwia przechowywanie danych związanych z zabezpieczeniami, takimi jak funkcja uwierzytelniania, zapobieganie oszustwom i inne mechanizmy ochrony użytkowników

Tryb uzyskiwania zgody śledzi wybory użytkowników dotyczące zgody użytkownika, a mechanizmy sprawdzania zgody tagów zapewniają odpowiednie dostosowanie działania tagów. Tworząc nowy szablon zgody, postępuj zgodnie ze sprawdzonymi metodami:

  • Zamiast gtag consent używaj interfejsów API trybu uzyskiwania zgody Menedżera tagów setDefaultConsentState i updateConsentState.

  • Za pomocą reguły Inicjacja zgody – Wszystkie strony ustaw domyślne stany zgody użytkownika natychmiast po uruchomieniu tagu.

  • Platforma do zarządzania zgodą użytkowników musi jak najszybciej poprosić użytkownika o udzielenie lub odmowę zgody w przypadku wszystkich odpowiednich typów zgód.

  • Gdy użytkownik wybierze opcję zgody, platforma do zarządzania zgodą użytkowników musi przekazać zaktualizowany stan zgody.

1. Tworzenie nowego szablonu

Ta metoda implementacji wykorzystuje jedno pole w szablonie do przechowywania domyślnego stanu zgody użytkownika. Kod implementacji odczytuje to pole, aby ustawić domyślny stan zgody użytkownika w czasie działania. W przypadku polecenia aktualizacji Twój kod próbuje odczytać plik cookie ustawiany przez rozwiązanie do uzyskiwania zgody użytkownika w celu zapisania ich wyborów użytkownika. Skonfigurujesz też wywołanie zwrotne dla metody updateConsentState, które będzie służyć do obsługi sytuacji, gdy użytkownik jeszcze nie dokonał wyboru lub zdecyduje się zmienić swoją zgodę.

  1. Zaloguj się na konto Menedżera tagów Google.
  2. W menu po lewej stronie kliknij Szablony.
  3. W panelu Szablony tagów kliknij Nowy.
  1. Wybierz kartę Pola i kliknij Dodaj pole > Tabela z parametrami.
  2. Zmień nazwę na defaultSettings.
  3. Rozwiń pole.
  4. Zmień Wyświetlaną nazwę na Default settings.
  5. Kliknij Dodaj kolumnę, wybierz Dane wejściowe – tekst, zmień nazwę na region i zaznacz pole Wymagaj unikalnych wartości kolumn.
  6. Rozwiń kolumnę i zmień wyświetlaną nazwę na Region (leave blank to have consent apply to all regions). Instrukcja w nawiasach stanowi dokumentację dla użytkowników szablonu. Dowiedz się więcej o konfigurowaniu domyślnych ustawień uzyskiwania zgody w różnych regionach.
  7. Kliknij kolejno Dodaj kolumnę, Dane wejściowe i zmień nazwę na granted.
  8. Rozwiń kolumnę i zmień wyświetlaną nazwę na Granted Consent Types (comma separated).
  9. Kliknij kolejno Dodaj kolumnę, Dane wejściowe i zmień nazwę na denied.
  10. Rozwiń kolumnę i zmień wyświetlaną nazwę na Denied Consent Types (comma separated)

Opcjonalnie: aby dodać obsługę pomijania danych reklam:

  1. Kliknij Dodaj pole, wybierz Pole wyboru i zmień nazwę pola na ads_data_redaction.
  2. Zmień wyświetlaną nazwę na Redact Ads Data

Dowiedz się więcej o działaniu plików cookie dzięki pomijaniu danych reklam.

Opcjonalnie: aby dodać obsługę przekazywania parametrów adresu URL:

  1. Kliknij Dodaj pole, wybierz Pole wyboru i zmień nazwę pola na url_passthrough.
  2. Zmień wyświetlaną nazwę na Pass through URL parameters

Dowiedz się więcej o przekazywaniu parametrów adresu URL.

Aby dodać kod implementacji:

  1. W edytorze szablonów otwórz kartę Kod.
  2. W przykładowym kodzie poniżej edytuj pola zmiennych.
  3. Skopiuj kod i zastąp nim kod stały w edytorze szablonów.
  4. Zapisz szablon.
// 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();

Następnie skonfiguruj uprawnienia dostępu do stanu zgody i plików cookie.

  1. Wybierz kartę Uprawnienia i kliknij Dostęp do stanu zgody użytkownika.
  2. Kliknij Dodaj rodzaj zgody.
  3. Kliknij pole i wybierz ad_storage z menu.
  4. Zaznacz Zapis.
  5. Kliknij Dodaj.
  6. Powtórz kroki 2–5 dla właściwości ad_user_data, ad_personalization i analytics_storage. Jeśli potrzebujesz dodatkowych rodzajów zgody, dodaj je w ten sam sposób.
  7. Kliknij Zapisz.

Aby dodać uprawnienia dostępu do plików cookie:

  1. Wybierz kartę Uprawnienia i kliknij Odczytuje wartości plików cookie.
  2. W sekcji Konkretne wpisz nazwy wszystkich plików cookie, które musi odczytać kod, aby określić wybór użytkownika dotyczący zgody użytkownika (po 1 nazwie w wierszu).
  3. Kliknij Zapisz.

2. Tworzenie testów jednostkowych

W sekcji Testy znajdziesz informacje o tworzeniu testów szablonu.

Poniższy kod pokazuje jeden z przykładów, jak ten szablon można zintegrować z kodem rozwiązania do zarządzania zgodą użytkowników przez dodanie odbiornika:

// 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);
  });
};

Gdy użytkownik strony wskaże swój wybór, zwykle w wyniku interakcji z banerem z prośbą o zgodę na przetwarzanie danych, kod szablonu powinien zaktualizować stany zgody użytkownika za pomocą interfejsu API updateConsentState.

Ten przykład przedstawia wywołanie updateConsentState w przypadku użytkownika, który wskazuje, że wyraził zgodę na wszystkie rodzaje przechowywania. W tym przykładzie użyto zakodowanych na stałe wartości parametru granted, ale w praktyce należy je określać w czasie działania na podstawie zgody użytkownika zebranej przez platformę CMP.

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'
});

Działania zależne od regionu

Aby ustawić domyślne stany zgody użytkownika z określonych obszarów, podaj w szablonie region (zgodnie z normą ISO 3166-2). Używanie wartości dotyczących regionu umożliwia użytkownikom szablonów zachowanie zgodności z przepisami regionalnymi bez utraty informacji od użytkowników spoza tych regionów. Jeśli region nie został określony w poleceniu setDefaultConsentState, wartość jest stosowana do wszystkich innych regionów.

Na przykład ta opcja ustawia domyślny stan analytics_storage na denied w przypadku użytkowników z Hiszpanii i Alaski, a w przypadku wszystkich innych powoduje ustawienie analytics_storage na granted:

const setDefaultConsentState = require('setDefaultConsentState');

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

Najdokładniejsze ma pierwszeństwo

Jeśli na tej samej stronie pojawią się 2 domyślne polecenia dotyczące zgody z wartościami dla regionu i podregionu, zostanie zastosowane to, które ma bardziej określony region. Jeśli na przykład ustawisz ad_storage jako 'granted' dla regionu US i ad_storage na 'denied' dla regionu US-CA, użytkownik z Kalifornii będzie mieć zastosowanie bardziej szczegółowego ustawienia US-CA.

Region ad_storage Sposób działania
Stany Zjednoczone 'granted' Dotyczy użytkowników w Stanach Zjednoczonych, którzy nie znajdują się w Kanadzie
Kanada, USA 'denied' Dotyczy użytkowników ze Stanów Zjednoczonych i Kanady
Brak informacji 'granted' Używana jest wartość domyślna 'granted'. W tym przykładzie dotyczy to użytkowników spoza USA ani Kanady.

Dodatkowe metadane

Za pomocą interfejsu API gtagSet możesz ustawić te parametry opcjonalne:

Te interfejsy API są dostępne tylko w środowisku piaskownicy szablonów Menedżera tagów Google.

Przekazywanie w adresach URL informacji o kliknięciu reklamy, identyfikatorze klienta i sesji

Gdy użytkownik wejdzie na stronę reklamodawcy po kliknięciu reklamy, informacje o tej reklamie mogą zostać dołączone do adresów URL stron docelowych jako parametr zapytania. Aby zwiększyć dokładność konwersji, tagi Google zwykle przechowują te informacje we własnych plikach cookie w domenie reklamodawcy.

Jeśli jednak ad_storage ma wartość denied, tagi Google nie zapiszą tych informacji lokalnie. Aby poprawić jakość pomiaru kliknięć reklamy, reklamodawcy mogą opcjonalnie przekazywać informacje o kliknięciu reklamy na różnych stronach, używając funkcji przekazywania adresu URL.

Podobnie jeśli parametr analytics_storage ma wartość „Odmowa”, przekazywanie adresów URL może służyć do przesyłania między stronami analiz opartych na zdarzeniach i sesjach (w tym o konwersjach) bez plików cookie.

Aby można było korzystać z przekazywania adresów URL, muszą być spełnione te warunki:

  • Na stronie znajdują się tagi Google pozwalające na uzyskanie zgody użytkownika.
  • Witryna włączyła funkcję przekazywania adresów URL.
  • Tryb uzyskiwania zgody jest zaimplementowany na stronie.
  • Link wychodzący odnosi się do tej samej domeny co domena bieżącej strony.
  • URL zawiera parametr gclid/dclid (tylko w przypadku tagów Google Ads i Floodlight).

Szablon powinien umożliwiać użytkownikowi określenie, czy chce włączyć to ustawienie. Aby ustawić wartość url_passthrough na wartość true, użyj tego kodu szablonu:

gtagSet('url_passthrough', true);

Usuwanie danych reklam

Jeśli ad_storage jest odrzucany, żadne nowe pliki cookie nie są tworzone do celów reklamowych. Nie będą też używane pliki cookie innych firm ustawione wcześniej na stronach google.com i doubleclick.net. Dane wysyłane do Google nadal zawierają pełny adres URL strony, w tym wszelkie informacje o kliknięciu reklamy w parametrach adresu URL.

Aby jeszcze bardziej pomijać dane reklam, gdy zasada ad_storage jest odrzucona, ustaw ads_data_redaction na wartość „true”.

Jeśli zasada ads_data_redaction ma wartość prawda, a zasada ad_storage jest odrzucona, identyfikatory kliknięć reklam wysyłane w żądaniach sieciowych przez Google Ads i tagi Floodlight będą usuwane.

gtagSet('ads_data_redaction', true);

Identyfikator dewelopera

Jeśli jesteś dostawcą platformy do zarządzania zgodą użytkowników i masz identyfikator dewelopera wydany przez Google, użyj tej metody, aby jak najszybciej ustawić ten identyfikator w szablonie.

Identyfikator dewelopera jest potrzebny tylko wtedy, gdy Twoja implementacja będzie używana w wielu witrynach przez niepowiązane firmy lub podmioty. Jeśli implementacja będzie wykorzystywana przez jedną witrynę lub jeden podmiot, nie wysyłaj prośby o identyfikator dewelopera.

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

Udostępnianie dokumentacji użytkownikom

Użytkownicy będą korzystać z szablonu zgody, aby skonfigurować tag, który będzie zbierać informacje o tym rodzaju zgody. Udostępnij użytkownikom dokumentację opisującą te sprawdzone metody:

  • Domyślne ustawienia dotyczące zgody możesz określić w tabeli Ustawienia.
  • Jak skonfigurować domyślne ustawienia zgody dla różnych regionów przez dodanie kolejnych wierszy w tabeli.
  • Uruchom tag w regule Inicjacja zgody – Wszystkie strony.

Dalsze kroki

Jeśli chcesz udostępnić swój szablon wszystkim użytkownikom Menedżera tagów, prześlij go do Galerii szablonów.