İzin modu şablonu oluşturma

Bu belge, Google Etiket Yöneticisi'ni (GTM) kullanan web sitelerinde kullanıcı rızası yönetim çözümü bulunduran geliştiriciler içindir.

Bu sayfada, Google Etiket Yöneticisi'ndeki izin türleri tanıtılmakta ve bunları kullanıcı rızası yönetim çözümünüzle nasıl entegre edeceğiniz gösterilmektedir.

Etiket şablonu sağladığınızda kullanıcılarınız izin çözümünüzü kodsuz bir şekilde entegre edebilir. Bu sayede önemli ölçüde zaman ve çaba tasarrufu sağlanır.

Kullanıcılar, izin modu şablonunu kullanarak varsayılan izin durumlarını ayarlayabilir ve ziyaretçi izin tercihlerini Google Etiket Yöneticisi'ne iletebilir. Bu, izin modunu destekleyen Google ve üçüncü taraf etiketlerinin optimum şekilde çalışmasını sağlar.

Şablon oluşturucu olarak, izin modu şablonlarını dahili kullanım için uygulayabilir veya herkese açık olarak kullanılabilmeleri için Topluluk Şablon Galerisi'nde yayınlayabilirsiniz. İzin modu şablonları sunan kullanıcı rızası yönetim platformu (CMP) sağlayıcıları, izin modu dokümanlarımızda listelenme ve şablon galerisi seçicisinde şablonlarının yer alması fırsatına sahip olur.

Google ve üçüncü taraf etiketleri, depolama davranışlarını granted veya denied izin durumuna göre ayarlar. Aşağıdaki izin türlerinden herhangi biri için yerleşik izin kontrolleri olabilir:

İzin Türü Açıklama
ad_storage Reklamcılıkla ilgili bilgilerin çerezler gibi yöntemlerle depolanmasını etkinleştirir.
ad_user_data Kullanıcı verilerinin internet reklamcılığı amacıyla Google'a gönderilmesine yönelik izinleri belirler.
ad_personalization Kişiselleştirilmiş reklamcılığa yönelik izni belirler.
analytics_storage Analizle ilgili bilgilerin (ör. ziyaret süresi) çerezler gibi yöntemlerle depolanmasını etkinleştirir.
functionality_storage Web sitesinin veya uygulamanın işlevlerini destekleyen bilgilerin (ör. dil ayarları) depolanmasını etkinleştirir.
personalization_storage Kişiselleştirmeyle ilgili bilgilerin (ör. video önerileri) depolanmasını etkinleştirir.
security_storage Kimlik doğrulama işlevi, sahtekarlığı önleme ve diğer kullanıcı koruma işlevleri gibi güvenlikle ilgili bilgilerin depolanmasını etkinleştirir.

İzin modu, ziyaretçilerin izin tercihlerini takip eder ve etiket izin kontrolleri, etiket davranışının buna göre ayarlanmasını sağlar. Yeni bir izin şablonu oluştururken en iyi uygulamaları izleyin:

  • gtag consent yerine Etiket Yöneticisi izin modu API'leri setDefaultConsentState ve updateConsentState'i kullanın.

  • İzin Başlatma - Tüm Sayfalar tetikleyicisini kullanarak varsayılan izin durumlarını hemen etkinleştirme üzerine ayarlayın.

  • CMP, ziyaretçiden geçerli tüm izin türleri için izin vermesini veya reddetmesini en kısa sürede istemelidir.

  • Ziyaretçi izin seçimini belirttiğinde CMP, güncellenmiş izin durumunu iletmelidir.

1. Yeni şablon oluşturma

Bu uygulama yaklaşımında, varsayılan izin durumunu tutmak için şablonda bir alan kullanılır. Uygulama kodu, çalışma zamanında varsayılan izin durumunu ayarlamak için bu alanı okur. Güncelleme komutu için kodunuz, ziyaretçi izni tercihlerini depolamak üzere izin çözümü tarafından ayarlanan bir çerezi okumaya çalışıyor. Ayrıca, ziyaretçinin henüz rıza seçimlerini yapmadığı veya rızasını değiştirmeye karar verdiği durumlarda updateConsentState için geri arama ayarlarsınız.

  1. Google Etiket Yöneticisi hesabınıza giriş yapın.
  2. Soldaki gezinme menüsünde Şablonlar'ı seçin.
  3. Etiket Şablonları bölmesinde Yeni'yi tıklayın.
  1. Alanlar sekmesini seçin, Alan Ekle > Parametre tablosu'nu tıklayın.
  2. Adı defaultSettings olarak değiştirin.
  3. Alanı genişletin.
  4. Görünen adı Default settings olarak güncelleyin.
  5. Sütun ekle'yi tıklayın, Metin girişi'ni seçin, adı region olarak değiştirin ve Sütun değerlerinin benzersiz olması gerekir kutusunu işaretleyin.
  6. Sütunu genişletin ve görünen adı Region (leave blank to have consent apply to all regions) olarak değiştirin. Parantez içindeki ifade, şablon kullanıcılarınız için dokümantasyondur. Farklı bölgeler için varsayılan izin ayarlarını belirleme hakkında daha fazla bilgi edinin.
  7. Sütun ekle'yi tıklayın, Metin girişi'ni seçin ve adı granted olarak değiştirin.
  8. Sütunu genişletin ve görünen adı Granted Consent Types (comma separated) olarak değiştirin.
  9. Sütun ekle'yi tıklayın, Metin girişi'ni seçin ve adı denied olarak değiştirin.
  10. Sütunu genişletin ve görünen adı Denied Consent Types (comma separated) olarak değiştirin.

İsteğe bağlı: Reklam verilerinin karartılması için destek eklemek istiyorsanız:

  1. Alan Ekle'yi tıklayın, Onay Kutusu'nu seçin ve alan adını ads_data_redaction olarak değiştirin.
  2. Görünen adı Redact Ads Data olarak güncelleyin

Reklam verilerinde azaltma ile çerez davranışı hakkında daha fazla bilgi edinin.

İsteğe bağlı: URL parametrelerinin iletilmesi için destek eklemek üzere:

  1. Alan Ekle'yi tıklayın, Onay Kutusu'nu seçin ve alan adını url_passthrough olarak değiştirin.
  2. Görünen adı Pass through URL parameters olarak güncelleyin

URL parametrelerini iletme hakkında daha fazla bilgi edinin.

Uygulama kodunu eklemek için:

  1. Şablon düzenleyicide Kod sekmesini açın.
  2. Aşağıdaki kod örneğinde yer tutucu alanları düzenleyin.
  3. Kodu kopyalayın ve şablon düzenleyicideki ortak metin kodu ile değiştirin.
  4. Şablonu kaydedin.
// 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 JSON = require('JSON');
const COOKIE_NAME = 'Your_cookie_name';
/*
 *   Splits the input string using comma as a delimiter, returning an array of
 *   strings
 */
const splitInput = (input) => {
  if (!input) return [];
  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). Add optional chaining to safely handle cases
  // where defaultSettings might be null or undefined.
  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 cookieValues = getCookieValues(COOKIE_NAME);
  if (cookieValues && cookieValues.length > 0) {
    try {
      const settings = JSON.parse(cookieValues[0]);
      if (settings) {
        onUserConsent(settings);
      }
    } catch (e) {
      // Log an error if the cookie value is not valid JSON.
    }
  }
  /**
   *   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();

Ardından, izin durumuna ve çerezlere erişim için izinleri yapılandırın.

  1. İzinler sekmesini seçin ve Erişim izni durumuna erişir'i tıklayın.
  2. İzin türü ekle'yi tıklayın.
  3. Kutuyu tıklayın ve açılır menüden ad_storage simgesini seçin.
  4. Yaz'ı işaretleyin.
  5. Ekle'yi tıklayın.
  6. ad_user_data, ad_personalization ve analytics_storage için 2-5 arasındaki adımları tekrarlayın. Başka izin türlerine ihtiyacınız varsa bunları aynı şekilde ekleyin.
  7. Kaydet'i tıklayın.

Çerezlere erişim izni eklemek için:

  1. İzinler sekmesini seçin ve Çerez değerlerini okuma'yı tıklayın.
  2. Belirli bölümünde, kodunuzun kullanıcının izin tercihlerini belirlemek için okuması gereken her çerez adını satır başına bir ad olacak şekilde girin.
  3. Kaydet'i tıklayın.

2. Birim testleri oluşturma

Şablonunuz için test oluşturma hakkında bilgi edinmek üzere Testler başlıklı makaleyi inceleyin.

Aşağıdaki kodda, bu şablonun bir işleyici eklenerek kullanıcı rızası yönetim çözümünüzün koduyla nasıl entegre edilebileceğine dair bir örnek gösterilmektedir:

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

Bir web sitesi ziyaretçisi izin tercihlerini (genellikle bir izin banner'ıyla etkileşimde bulunarak) belirttikten sonra şablon kodu, izin durumlarını updateConsentState API'si ile buna göre güncellemelidir.

Aşağıdaki örnekte, tüm depolama türlerine izin verdiğini belirten bir ziyaretçi için updateConsentState çağrısı gösterilmektedir. Bu örnekte granted için yine sabit kodlanmış değerler kullanılmaktadır ancak uygulamada bunlar, CMP tarafından toplanan ziyaretçi izni kullanılarak çalışma zamanında belirlenmelidir.

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

Bölgeye özgü davranış hakkında

Belirli bölgelerden gelen ziyaretçiler için geçerli olacak varsayılan izin durumlarını ayarlamak üzere şablonda bir bölge (ISO 3166-2'ye göre) belirtin. Bölge değerlerinin kullanılması, şablon kullanıcılarının bu bölgelerin dışındaki ziyaretçilerden bilgi kaybetmeden bölgesel düzenlemelere uymasını sağlar. Bir setDefaultConsentState komutunda bölge belirtilmediğinde değer, diğer tüm bölgeler için geçerli olur.

Örneğin, aşağıdaki ayarlar İspanya ve Alaska'dan gelen ziyaretçiler için analytics_storage varsayılan durumunu denied olarak, diğer tüm ziyaretçiler için ise analytics_storage varsayılan durumunu granted olarak ayarlar:

const setDefaultConsentState = require('setDefaultConsentState');

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

En spesifik olan önceliklidir

Aynı sayfada bir bölge ve alt bölge değerleriyle iki varsayılan izin komutu varsa daha belirli bir bölgeye sahip olan komut geçerli olur. Örneğin, US bölgesi için ad_storage ayarını 'granted', US-CA bölgesi için ad_storage ayarını 'denied' olarak belirlediyseniz Kaliforniya'dan gelen bir ziyaretçi için daha spesifik olan US-CA ayarı geçerli olur.

Bölge ad_storage Davranış
ABD 'granted' ABD'de bulunan ve CA'da olmayan kullanıcılar için geçerlidir.
ABD-CA 'denied' ABD ve Kanada'daki kullanıcılar için geçerlidir.
Belirtilmedi 'granted' 'granted' varsayılan değerini kullanır. Bu örnekte, ABD veya ABD-CA'da bulunmayan kullanıcılar için geçerlidir.

Ek meta veriler

Aşağıdaki isteğe bağlı parametreleri ayarlamak için gtagSet API'sini kullanabilirsiniz:

Bu API'ler yalnızca GTM şablonu korumalı alan ortamında kullanılabilir.

URL'lerde reklam tıklaması, istemci kimliği ve oturum kimliği bilgilerini iletme

Bir ziyaretçi reklamı tıkladıktan sonra reklamverenin web sitesine ulaştığında, reklamla ilgili bilgiler açılış sayfası URL'lerine sorgu parametresi olarak eklenebilir. Dönüşüm doğruluğunu artırmak için Google etiketleri genellikle bu bilgileri reklamverenin alanındaki birinci taraf çerezlerinde depolar.

Ancak ad_storage denied ise Google etiketleri bu bilgileri yerel olarak kaydetmez. Bu durumda reklamverenler, reklam tıklama ölçümü kalitesini artırmak için URL geçişi adı verilen bir özelliği kullanarak reklam tıklama bilgilerini URL parametreleri aracılığıyla sayfalar arasında isteğe bağlı olarak iletebilir.

Benzer şekilde, analytics_storage reddedildi olarak ayarlanırsa URL geçişi, sayfalar arasında çerez kullanılmadan etkinlik ve oturum tabanlı analizler (dönüşümler dahil) göndermek için kullanılabilir.

URL geçişini kullanmak için aşağıdaki koşulların karşılanması gerekir:

  • Sayfada izin odaklı Google etiketleri bulunmalıdır.
  • Site, URL iletme özelliğini kullanmayı etkinleştirmiştir.
  • İzin modu sayfada uygulanmış olmalıdır.
  • Giden bağlantı, geçerli sayfanın alanıyla aynı alanı ifade ediyor.
  • URL'de bir gclid/dclid bulunuyor (yalnızca Google Ads ve Floodlight etiketleri)

Şablonunuz, şablon kullanıcısının bu ayarı etkinleştirmek isteyip istemediğini yapılandırmasına olanak tanımalıdır. Aşağıdaki şablon kodu, url_passthrough'u doğru olarak ayarlamak için kullanılır:

gtagSet('url_passthrough', true);

Reklam verilerini çıkartma

ad_storage reddedildiğinde reklamcılık amacıyla yeni çerezler ayarlanmaz. Ayrıca, daha önce google.com ve doubleclick.net'te ayarlanan üçüncü taraf çerezleri kullanılmaz. Google'a gönderilen veriler, URL parametrelerindeki reklam tıklama bilgileri de dahil olmak üzere tam sayfa URL'sini içermeye devam eder.

ad_storage reddedildiğinde reklam verilerinizi daha fazla anonimleştirmek için ads_data_redaction değerini true olarak ayarlayın.

ads_data_redaction doğru olduğunda ve ad_storage reddedildiğinde, Google Ads ve Floodlight etiketleri tarafından ağ isteklerinde gönderilen reklam tıklama tanımlayıcıları çıkarılır.

gtagSet('ads_data_redaction', true);

Geliştirici kimliği

Google tarafından verilmiş bir geliştirici kimliğine sahip bir CMP tedarikçisiyseniz şablonunuzda bunu mümkün olduğunca erken ayarlamak için aşağıdaki yöntemi kullanın.

Yalnızca uygulamanız alakasız şirketler veya tüzel kişiler tarafından birden fazla web sitesinde kullanılacaksa geliştirici kimliğine ihtiyacınız vardır. Uygulama tek bir site veya tüzel kişi tarafından kullanılacaksa geliştirici kimliği için başvurmayın.

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

Kullanıcılarınız için doküman sağlama

Kullanıcılarınız, kullanıcı iznini toplayan bir etiket oluşturmak için izin şablonunuzu kullanır. Kullanıcılarınıza aşağıdaki en iyi uygulamaları açıklayan belgeler sağlayın:

  • Ayarlar tablosunda varsayılan izin ayarlarını belirleme
  • Ek tablo satırları ekleyerek farklı bölgeler için izin varsayılanlarını ayarlama
  • Etiketi İzin Başlatma - Tüm Sayfalar tetikleyicisinde tetikleyin.

Sonraki adımlar

Şablonunuzu tüm Etiket Yöneticisi kullanıcılarına sunmak istiyorsanız Topluluk Şablon Galerisi'ne yükleyin.