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.
İzin için neden etiket şablonu kullanmalısınız?
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.
İzin durumu ve izin türleri
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. |
Yeni bir izin şablonu oluşturma
İ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 consentyerine 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
updateConsentStateiçin geri arama ayarlarsınız.
İzin şablonu oluşturmak için:
- Google Etiket Yöneticisi hesabınıza giriş yapın.
- Soldaki gezinme menüsünde Şablonlar'ı seçin.
- Etiket Şablonları bölmesinde Yeni'yi tıklayın.
Varsayılan izin durumlarını ayarlamak için:
- Alanlar sekmesini seçin, Alan Ekle > Parametre tablosu'nu tıklayın.
- Adı
defaultSettingsolarak değiştirin. - Alanı genişletin.
- Görünen adı
Default settingsolarak güncelleyin. - Sütun ekle'yi tıklayın, Metin girişi'ni seçin, adı
regionolarak değiştirin ve Sütun değerlerinin benzersiz olması gerekir kutusunu işaretleyin. - 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. - Sütun ekle'yi tıklayın, Metin girişi'ni seçin ve adı
grantedolarak değiştirin. - Sütunu genişletin ve görünen adı
Granted Consent Types (comma separated)olarak değiştirin. - Sütun ekle'yi tıklayın, Metin girişi'ni seçin ve adı
deniedolarak değiştirin. - 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:
- Alan Ekle'yi tıklayın, Onay Kutusu'nu seçin ve alan adını
ads_data_redactionolarak değiştirin. - Görünen adı
Redact Ads Dataolarak 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:
- Alan Ekle'yi tıklayın, Onay Kutusu'nu seçin ve alan adını
url_passthrougholarak değiştirin. - Görünen adı
Pass through URL parametersolarak güncelleyin
URL parametrelerini iletme hakkında daha fazla bilgi edinin.
Uygulama kodunu eklemek için:
- Şablon düzenleyicide Kod sekmesini açın.
- Aşağıdaki kod örneğinde yer tutucu alanları düzenleyin.
- Kodu kopyalayın ve şablon düzenleyicideki ortak metin kodu ile değiştirin.
- Ş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.
İzin durumlarını yönetme izinleri eklemek için:
- İzinler sekmesini seçin ve Erişim izni durumuna erişir'i tıklayın.
- İzin türü ekle'yi tıklayın.
- Kutuyu tıklayın ve açılır menüden
ad_storagesimgesini seçin. - Yaz'ı işaretleyin.
- Ekle'yi tıklayın.
ad_user_data,ad_personalizationveanalytics_storageiçin 2-5 arasındaki adımları tekrarlayın. Başka izin türlerine ihtiyacınız varsa bunları aynı şekilde ekleyin.- Kaydet'i tıklayın.
Çerezlere erişim izni eklemek için:
- İzinler sekmesini seçin ve Çerez değerlerini okuma'yı tıklayın.
- 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.
- 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.
3. Şablonu izin çözümüyle entegre etme
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);
});
};
İzin durumunu güncelleme
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.