सहमति मोड वाला टेंप्लेट बनाना

यह लेख उन डेवलपर के लिए है जो Google Tag Manager (GTM) का इस्तेमाल करने वाली वेबसाइटें.

इस पेज पर, Google Tag Manager में सहमति टाइप के बारे में जानकारी दी गई है. साथ ही, यह भी बताया गया है कि इन्हें सहमति मैनेजमेंट समाधान के साथ इंटिग्रेट करें.

टैग टेंप्लेट देने पर, उपयोगकर्ता आपकी सहमति को इंटिग्रेट कर सकते हैं समाधान, जिसमें बिना कोड के काम किया जा सकता है. इससे समय और मेहनत दोनों की बचत होती है.

उपयोगकर्ता, सहमति मोड के टेंप्लेट का इस्तेमाल करके सहमति की डिफ़ॉल्ट स्थितियां सेट कर सकते हैं और Google Tag Manager को वेबसाइट पर आने वाले लोगों की सहमति के विकल्पों की जानकारी दें. इससे पक्का होता है कि सहमति की सुविधा देने वाले Google और तीसरे पक्ष के टैग कैसे काम करते हैं मोड.

टेंप्लेट क्रिएटर के तौर पर, संगठन में काम करने के लिए, सहमति मोड के टेंप्लेट लागू किए जा सकते हैं या समुदाय टेंप्लेट गैलरी में पब्लिश करके, उन्हें सार्वजनिक रूप से उपलब्ध कराया जाए. सहमति मैनेजमेंट प्लैटफ़ॉर्म (सीएमपी) की सेवा देने वाली कंपनियां सहमति मोड के टेंप्लेट, हमारे सहमति मोड में जोड़े जा सकते हैं दस्तावेज़ भी बनाए जा सकते हैं और टेंप्लेट गैलरी पिकर में उनके टेंप्लेट जोड़े जा सकते हैं.

Google और तीसरे पक्ष के टैग, सहमति के आधार पर अपने स्टोरेज के व्यवहार में बदलाव करते हैं राज्य: granted या denied. वे पहले से सहमति की जांच कर सकते हैं इनमें से किसी भी सहमति टाइप के लिए:

सहमति का टाइप जानकारी
ad_storage विज्ञापन से जुड़ी कुकी जैसी मेमोरी को चालू करता है.
ad_user_data ऑनलाइन विज्ञापन दिखाने के मकसद से, Google को उपयोगकर्ता का डेटा भेजने के लिए सहमति सेट करता है.
ad_personalization लोगों के हिसाब से विज्ञापन दिखाने के लिए सहमति सेट करता है.
analytics_storage आंकड़ों से जुड़ी मेमोरी, जैसे कि कुकी को चालू करता है (उदाहरण के लिए, अवधि).
functionality_storage वेबसाइट या ऐप्लिकेशन की सुविधाओं के साथ काम करने वाली मेमोरी चालू करता है जैसे कि भाषा सेटिंग.
personalization_storage अपनी पसंद के हिसाब से डिवाइस की मेमोरी को चालू करता है, जैसे कि वीडियो देखें.
security_storage पुष्टि करने जैसी सुरक्षा से जुड़ी मेमोरी को चालू करता है फ़ंक्शन, धोखाधड़ी रोकने, और उपयोगकर्ता की अन्य सुरक्षा

सहमति मोड, वेबसाइट पर आने वाले लोगों की सहमति के विकल्पों और टैग के लिए सहमति की जांच को ट्रैक करता है ताकि टैग का व्यवहार उसके मुताबिक एडजस्ट हो रहा हो. नई सहमति बनाते समय इन सबसे सही तरीकों का इस्तेमाल करें:

  • Tag Manager के सहमति मोड वाले एपीआई setDefaultConsentState का इस्तेमाल करें और gtag consent के बजाय updateConsentState चुनें.

  • ट्रिगर होने के तुरंत बाद, सहमति की डिफ़ॉल्ट स्थितियां सेट करने के लिए, सहमति की प्रोसेस शुरू करना - सभी पेजों को ट्रिगर करने की सुविधा.

  • सीएमपी को वेबसाइट पर आने वाले व्यक्ति से सहमति देने या अस्वीकार करने के लिए, जल्द से जल्द अनुरोध करना होगा सभी लागू सहमति टाइप के लिए.

  • जब वेबसाइट पर आने वाला कोई व्यक्ति सहमति के लिए अपनी पसंद के बारे में बताता है, तो सीएमपी को अपडेट की गई सहमति की स्थिति.

1. नया टेंप्लेट बनाएं

लागू करने का यह तरीका टेंप्लेट में एक फ़ील्ड का इस्तेमाल करके, सहमति की डिफ़ॉल्ट स्थिति. लागू करने वाला कोड, सेट करने के लिए उस फ़ील्ड को पढ़ता है रनटाइम के दौरान सहमति की डिफ़ॉल्ट स्थिति. अपडेट निर्देश के लिए, आपका कोड उपयोगकर्ता की सहमति के विकल्पों को स्टोर करने के लिए, सहमति समाधान की सेट की गई कुकी को पढ़ सकता है. केस मैनेज करने के लिए, आपको updateConsentState के लिए कॉलबैक सेट अप भी करना होगा जहां वेबसाइट पर आने वाले व्यक्ति ने अभी तक अपनी सहमति नहीं चुनी है या उसे बदलने का फ़ैसला लिया है सहमति नहीं दी है.

  1. अपने Google Tag Manager खाते में लॉग इन करें.
  2. बाईं ओर मौजूद नेविगेशन में, टेंप्लेट चुनें.
  3. टैग टेंप्लेट पैनल में, नया पर क्लिक करें.
  1. फ़ील्ड टैब चुनें, फ़ील्ड जोड़ें > पैरामीटर टेबल.
  2. नाम को defaultSettings में बदलें.
  3. फ़ील्ड को बड़ा करें.
  4. डिसप्ले नेम को Default settings में अपडेट करें.
  5. कॉलम जोड़ें पर क्लिक करें और टेक्स्ट इनपुट चुनें. इसके बाद, नाम को region में बदलें और कॉलम की वैल्यू यूनीक होनी चाहिए बॉक्स पर सही का निशान लगाएं.
  6. कॉलम को बड़ा करें और डिसप्ले नेम को Region (leave blank to have consent apply to all regions) में बदलें. कोष्ठक में दिया गया कथन यह है दस्तावेज़ पढ़ें. इसके बारे में ज़्यादा जानें अलग-अलग इलाकों के लिए सहमति की डिफ़ॉल्ट स्थिति सेट अप करना.
  7. कॉलम जोड़ें पर क्लिक करें और टेक्स्ट इनपुट चुनें. इसके बाद, नाम को granted में बदलें.
  8. कॉलम को बड़ा करें और डिसप्ले नेम को Granted Consent Types (comma separated) में बदलें.
  9. कॉलम जोड़ें पर क्लिक करें और टेक्स्ट इनपुट चुनें. इसके बाद, नाम को denied में बदलें.
  10. कॉलम को बड़ा करें और डिसप्ले नेम को बदलकर Denied Consent Types (comma separated) करें

ज़रूरी नहीं: विज्ञापनों का डेटा हटाने के लिए सहायता जोड़ने के लिए:

  1. फ़ील्ड जोड़ें पर क्लिक करें. इसके बाद, चेकबॉक्स चुनें और फ़ील्ड का नाम बदलकर ads_data_redaction.
  2. डिसप्ले नेम को Redact Ads Data पर अपडेट करें

विज्ञापनों का डेटा हटाने की सुविधा के साथ कुकी के काम करने के तरीके के बारे में ज़्यादा जानें

ज़रूरी नहीं: यूआरएल पैरामीटर से गुज़रने के लिए सहायता जोड़ने के लिए:

  1. फ़ील्ड जोड़ें पर क्लिक करें. इसके बाद, चेकबॉक्स चुनें और फ़ील्ड का नाम बदलकर url_passthrough.
  2. डिसप्ले नेम को Pass through URL parameters पर अपडेट करें

यूआरएल पैरामीटर से गुज़रने के बारे में ज़्यादा जानें

लागू करने का कोड जोड़ने के लिए:

  1. टेंप्लेट एडिटर में, कोड टैब खोलें.
  2. नीचे दिए गए कोड सैंपल में, प्लेसहोल्डर फ़ील्ड में बदलाव करें.
  3. कोड को कॉपी करें और टेंप्लेट एडिटर में बॉयलरप्लेट कोड को उससे बदलें.
  4. टेंप्लेट सेव करें.
// 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();

इसके बाद, सहमति की स्थिति और ऐक्सेस करने के लिए अनुमतियां कॉन्फ़िगर करें कुकी हैं.

  1. अनुमतियां टैब को चुनें और सहमति की स्थिति को ऐक्सेस करता है पर क्लिक करें.
  2. सहमति टाइप जोड़ें पर क्लिक करें.
  3. बॉक्स पर क्लिक करें और ड्रॉप-डाउन मेन्यू से ad_storage चुनें.
  4. लिखें को चुनें.
  5. जोड़ें पर क्लिक करें
  6. ad_user_data, ad_personalization, और फ़ोन नंबर के लिए, दूसरे से लेकर पांचवें चरण तक दोहराएं analytics_storage. अगर आपको अन्य सहमति टाइप की ज़रूरत है, तो उन्हें उसी तरह.
  7. सेव करें पर क्लिक करें.

कुकी ऐक्सेस करने की अनुमतियां जोड़ने के लिए:

  1. अनुमतियां टैब चुनें और कुकी वैल्यू पढ़ता है पर क्लिक करें.
  2. खास सेक्शन में, हर उस कुकी के नाम डालें जिसकी आपको अपने कोड को ज़रूरत है ताकि उपयोगकर्ता की सहमति के विकल्प के बारे में पता किया जा सके. हर लाइन में एक नाम डालें.
  3. सेव करें पर क्लिक करें.

2. यूनिट टेस्ट बनाना

अपने टेंप्लेट के लिए टेस्ट बनाने से जुड़ी जानकारी के लिए, टेस्ट देखें.

यहां दिए गए कोड में बताया गया है कि इस टेंप्लेट को कैसे इंटिग्रेट किया जा सकता है लिसनर जोड़कर, सहमति को मैनेज करने से जुड़े कोड के साथ:

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

जब वेबसाइट पर आने वाले लोग अपनी सहमति के विकल्प की जानकारी देते हैं, तो आम तौर पर सहमति वाले बैनर के साथ इंटरैक्ट करते समय, टेंप्लेट कोड को सहमति अपडेट करनी चाहिए updateConsentState एपीआई के साथ इसकी स्थिति के मुताबिक.

नीचे दिए गए उदाहरण में, वेबसाइट पर आने वाले उस व्यक्ति के लिए updateConsentState कॉल दिखाया गया है जो यह बताया गया है कि वे हर तरह के स्टोरेज के लिए सहमति देते हैं. फिर से, इस उदाहरण में हार्डकोड का इस्तेमाल किया गया है granted के लिए वैल्यू हैं. हालांकि, इन्हें रनटाइम के दौरान तय किया जाना चाहिए सीएमपी की मदद से इकट्ठा की जाने वाली वेबसाइट पर आने वाले लोगों की सहमति का इस्तेमाल किया जाता है.

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

इलाके के हिसाब से व्यवहार के बारे में जानकारी

कुछ खास इलाकों से वेबसाइट पर आने वाले लोगों पर लागू होने वाली सहमति की डिफ़ॉल्ट स्थितियां सेट करने के लिए, क्षेत्र दर्ज करें (ISO के अनुसार 3166-2) है, जो टेम्प्लेट. क्षेत्र की वैल्यू इस्तेमाल करने से, टेंप्लेट के उपयोगकर्ता क्षेत्र के हिसाब से नियमों का पालन करते हैं के नियमों के बारे में बताया जाएगा. टास्क कब शुरू होगा setDefaultConsentState आदेश में क्षेत्र के बारे में नहीं बताया गया है, मान अन्य सभी क्षेत्रों पर लागू होता है.

उदाहरण के लिए, यह analytics_storage के लिए डिफ़ॉल्ट स्थिति को इस पर सेट करता है स्पेन और अलास्का से आने वाले लोगों के लिए denied. साथ ही, analytics_storage को इस पर सेट करता है: अन्य सभी के लिए granted:

const setDefaultConsentState = require('setDefaultConsentState');

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

सबसे सटीक कॉन्टेंट को प्राथमिकता दी जाती है

अगर एक ही पेज पर किसी क्षेत्र की वैल्यू के साथ दो डिफ़ॉल्ट सहमति निर्देश होते हैं और उपक्षेत्र के लिए, इलाके के हिसाब से तय किया गया क्षेत्र लागू होगा. इसके लिए उदाहरण के लिए, अगर आपने US क्षेत्र के लिए ad_storage को 'granted' पर सेट किया है और US-CA इलाके के लिए ad_storage को 'denied' पर सेट किया गया. यह कैलिफ़ोर्निया से आने वाला व्यक्ति है ज़्यादा सटीक US-CA सेटिंग लागू होगी.

क्षेत्र ad_storage व्यवहार
अमेरिका 'granted' यह अमेरिका में रहने वाले उन उपयोगकर्ताओं पर लागू होता है जो कनाडा में नहीं हैं
US-CA 'denied' अमेरिका के कैलिफ़ोर्निया में रहने वाले उपयोगकर्ताओं पर लागू होता है
सेट नहीं है 'granted' 'granted' की डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाता है. इस उदाहरण में, यह उन उपयोगकर्ताओं पर लागू होता है जो अमेरिका या अमेरिका के कनाडा से नहीं हैं

अतिरिक्त मेटाडेटा

नीचे दिए गए वैकल्पिक पैरामीटर सेट करने के लिए, gtagSet API का इस्तेमाल किया जा सकता है:

ये एपीआई सिर्फ़ GTM टेंप्लेट सैंडबॉक्स एनवायरमेंट में उपलब्ध हैं.

यूआरएल में विज्ञापन पर क्लिक, क्लाइंट आईडी, और सेशन आईडी की जानकारी पास करना

जब कोई व्यक्ति किसी विज्ञापन पर क्लिक करके, विज्ञापन देने वाले की वेबसाइट पर पहुंचता है, विज्ञापन की जानकारी को लैंडिंग पेज यूआरएल में क्वेरी के तौर पर जोड़ा जा सकता है पैरामीटर. कन्वर्ज़न को ज़्यादा सटीक बनाने के लिए, Google टैग आम तौर पर इसे सेव करते हैं पहले-पक्ष की कुकी में, विज्ञापन देने वाले के डोमेन पर मौजूद जानकारी शामिल होती है.

हालांकि, अगर ad_storage की वैल्यू denied है, तो Google टैग इस जानकारी को सेव नहीं करेगा स्थानीय रूप से. इस मामले में, विज्ञापन पर क्लिक मेज़रमेंट की क्वालिटी को बेहतर बनाने के लिए, विज्ञापन देने वाले यूआरएल पैरामीटर के ज़रिए विज्ञापन पर क्लिक की जानकारी को सभी पेजों पर पास करें. ऐसा करने के लिए एक सुविधा का इस्तेमाल किया जाता है, जिसे यूआरएल पासथ्रू कहा जाता है.

इसी तरह, अगर analytics_storage को 'अस्वीकार किया गया' पर सेट किया गया है, तो यूआरएल पासथ्रू का इस्तेमाल किया जा सकता है बिना कन्वर्ज़न के इवेंट और सेशन पर आधारित आंकड़े (कन्वर्ज़न के साथ) भेजने के लिए कुकी हैं.

यूआरएल पासथ्रू का इस्तेमाल करने के लिए नीचे दी गई शर्तें पूरी होनी चाहिए:

  • सहमति की जानकारी देने वाले Google टैग, पेज पर मौजूद होते हैं.
  • साइट ने URL पासथ्रू सुविधा का उपयोग करने के लिए ऑप्ट इन किया है.
  • पेज पर सहमति मोड लागू किया गया है.
  • आउटगोइंग लिंक उसी डोमेन को दिखाता है जो मौजूदा पेज का डोमेन है.
  • यूआरएल में gclid/dclid मौजूद है (सिर्फ़ Google Ads और Floodlight टैग)

आपके टेंप्लेट को टेंप्लेट उपयोगकर्ता को यह कॉन्फ़िगर करने की अनुमति देनी चाहिए कि वे इस सेटिंग को सक्षम करना चाहेगा. सेट करने के लिए इस टेंप्लेट कोड का इस्तेमाल किया गया है सही के लिए url_passthrough:

gtagSet('url_passthrough', true);

विज्ञापनों का डेटा छिपाने के लिए उसमें बदलाव करना

ad_storage को अस्वीकार किए जाने पर, विज्ञापन के लिए कोई नई कुकी सेट नहीं की जाती है के मकसद से बनाया गया है. इसके अलावा, google.com और google.com पर पहले से सेट की गई तीसरे पक्ष की कुकी doubleclick.net का इस्तेमाल नहीं किया जाएगा. Google को भेजे गए डेटा में पेज के पूरे यूआरएल के साथ-साथ यूआरएल पैरामीटर में मौजूद विज्ञापन पर क्लिक की जानकारी भी शामिल की जाती है.

ad_storage के अस्वीकार होने पर, अपने विज्ञापनों का डेटा छिपाने के लिए इसे सेट करें ads_data_redaction को सही के लिए सेट किया गया है.

ads_data_redaction के सही होने और ad_storage को अस्वीकार किए जाने पर, विज्ञापन पर क्लिक Google Ads और Floodlight टैग से नेटवर्क अनुरोधों में भेजे गए आइडेंटिफ़ायर डेटा छिपाने के लिए बदलाव किया गया है.

gtagSet('ads_data_redaction', true);

डेवलपर आईडी

अगर आप ऐसे सीएमपी वेंडर हैं जिसके पास Google का डेवलपर आईडी है, तो इन चीज़ों का इस्तेमाल करें में सेट अप किया जा सकता है.

आपको डेवलपर आईडी की ज़रूरत सिर्फ़ तब होगी, जब आपके लागू करने के तरीके का इस्तेमाल सभी पर किया जाएगा ऐसी कंपनियां या इकाइयां जो आपके कारोबार से जुड़ी नहीं हैं. अगर लागू करने का इस्तेमाल किसी एक साइट या इकाई के लिए किया जाएगा, तो डेवलपर आईडी के लिए आवेदन न करें.

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

अपने उपयोगकर्ताओं के लिए दस्तावेज़ उपलब्ध कराएं

आपके उपयोगकर्ता, उपयोगकर्ता की जानकारी इकट्ठा करने वाला टैग सेट अप करने के लिए, सहमति वाले टेंप्लेट का इस्तेमाल करेंगे सहमति. अपने उपयोगकर्ताओं के लिए, नीचे दिए गए काम के बारे में सबसे सही जानकारी देने वाले दस्तावेज़ दें तरीके:

  • सेटिंग टेबल में, सहमति की डिफ़ॉल्ट सेटिंग सेट करने का तरीका.
  • अन्य जानकारी जोड़कर, अलग-अलग इलाकों के लिए सहमति की डिफ़ॉल्ट स्थिति सेट अप करने का तरीका टेबल पंक्तियां.
  • सभी पेजों के लिए सहमति की प्रोसेस शुरू करें ट्रिगर पर टैग को ट्रिगर करें.

अगले चरण

अगर आपको अपना टेंप्लेट Tag Manager के सभी उपयोगकर्ताओं को उपलब्ध कराना है, तो इसे कम्यूनिटी टेंप्लेट गैलरी.