सर्वर टैग बनाने का तरीका

सर्वर-साइड टैगिंग के बारे में जानकारी में, आपको Tag Manager में सर्वर साइड टैगिंग के बारे में खास जानकारी मिली है. आपने जाना कि क्लाइंट क्या होते हैं और वे क्या करते हैं: क्लाइंट को आपके उपयोगकर्ताओं के डिवाइस से इवेंट डेटा मिलता है और उसे बाकी कंटेनर के साथ इस्तेमाल करने के लिए, ऑप्टिमाइज़ किया जाता है. इस लेख में, सर्वर साइड टैग में उस डेटा को प्रोसेस करने का तरीका बताया गया है.

एक सर्वर कंटेनर में, टैग को आपके क्लाइंट से आने वाले इवेंट का डेटा मिलता है, उसे बदला जाता है, और इकट्ठा करने और विश्लेषण करने के लिए वापस भेजा जाता है. टैग से जहां चाहें, डेटा को कहीं भी भेजा जा सकता है. जब तक डेस्टिनेशन एचटीटीपी अनुरोधों को स्वीकार करता है, तब तक वह सर्वर कंटेनर से भी डेटा स्वीकार कर सकता है.

सर्वर कंटेनर में तीन बिल्ट-इन टैग होते हैं, जो बिना कस्टम कॉन्फ़िगरेशन के इस्तेमाल के लिए तैयार हैं:

  • Google Analytics 4
  • Google Analytics: यूनिवर्सल Analytics
  • एचटीटीपी अनुरोध

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

मकसद

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

ज़रूरी शर्तें

Baz Analytics टैग

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

Baz Analytics एक आसान और काल्पनिक विश्लेषण सेवा है, जो https://example.com/baz_analytics को एचटीटीपी GET अनुरोधों के ज़रिए डेटा डालती है. इसमें ये पैरामीटर शामिल होते हैं:

पैरामीटर उदाहरण जानकारी
id BA-1234 आपके Baz Analytics खाते का आईडी.
en click ईवेंट का नाम.
l https://www.google.com/search?q=sgtm उस पेज का यूआरएल जहां इवेंट हुआ था.
u 2384294892 कार्रवाई करने वाले उपयोगकर्ता का आईडी. इसका इस्तेमाल एक ही उपयोगकर्ता से कई कार्रवाइयों को जोड़ने के लिए किया जाता है.

टैग कॉन्फ़िगरेशन

सबसे पहले टैग टेंप्लेट बनाएं. अपने कंटेनर के टेंप्लेट सेक्शन पर जाएं और टैग टेंप्लेट सेक्शन में नया पर क्लिक करें. अपने टैग में नाम और जानकारी जोड़ें.

इसके बाद, अपने टैग के लिए अलग-अलग कॉन्फ़िगरेशन विकल्प जोड़ने के लिए टेम्प्लेट एडिटर के फ़ील्ड सेक्शन पर जाएं. अगला सवाल बिलकुल साफ़ तौर पर पूछा जाता है: आपको कौनसे विकल्प की ज़रूरत है? टैग बनाने के तीन तरीके हैं:

  1. कुल कॉन्फ़िगरेशन: हर पैरामीटर के लिए एक कॉन्फ़िगरेशन फ़ील्ड जोड़ें. उपयोगकर्ता को हर चीज़ साफ़ तौर पर सेट करनी होगी.
  2. कोई कॉन्फ़िगरेशन नहीं है: टैग को कॉन्फ़िगर करने के लिए कोई विकल्प नहीं है. सारा डेटा सीधे इवेंट से लिया जाता है.
  3. कुछ कॉन्फ़िगरेशन: सिर्फ़ कुछ पैरामीटर के लिए फ़ील्ड बनाएं, अन्य के लिए नहीं.

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

इसकी वजह यह है कि ऐसा टैग जो सिर्फ़ किसी इवेंट से डेटा लेता है. किसी उपयोगकर्ता के लिए यह सबसे आसान टैग कॉन्फ़िगर करना है, क्योंकि असल में उसके पास ऐसा करने के लिए कुछ नहीं होता. वहीं दूसरी ओर, यह सबसे ज़्यादा पाबंदी वाला और नाज़ुक विकल्प भी है. ज़रूरत होने पर भी, उपयोगकर्ता टैग के व्यवहार में बदलाव नहीं कर सकते. उदाहरण के लिए, हो सकता है कि वे अपनी वेबसाइट पर और Google Analytics में किसी इवेंट को purchase कॉल करें, लेकिन Baz Analytics उसे buy कहता है. इसके अलावा, हो सकता है कि इनकमिंग इवेंट डेटा के स्ट्रक्चर के बारे में टैग का जो अनुमान लगाया गया हो वह वास्तविकता से मेल न खाता हो. दोनों ही मामलों में, उपयोगकर्ता अटक जाता है.

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

डेटा कहां से आता है?

Google Analytics 4 टैग से सर्वर कंटेनर में मिलने वाले डेटा को दो कैटगरी में बांटा जा सकता है: उपयोगकर्ता का तय किया गया डेटा और अपने-आप इकट्ठा होने वाला डेटा.

उपयोगकर्ता का दिया गया डेटा वह पूरा डेटा होता है जो उपयोगकर्ता, gtag.js event कमांड में देता है. उदाहरण के लिए, इस तरह का निर्देश:

gtag('event', 'search', {
  search_term: 'beets',
});

इसकी वजह से, सर्वर कंटेनर में ये पैरामीटर मिलेंगे:

{
  event_name: 'search',
  search_term: 'beets',
}

यह आसान है, लेकिन टैग के नज़रिए से देखें, तो इसके साथ काम करना बहुत मुश्किल है. यह डेटा उपयोगकर्ता ने डाला है, इसलिए यह कुछ भी हो सकता है. शायद, जैसा कि ऊपर बताया गया है, उपयोगकर्ता सिर्फ़ सुझाए गए इवेंट और पैरामीटर में भेजता है, लेकिन ऐसा करने की कोई ज़रूरत नहीं है. event_name पैरामीटर में जगह (वैल्यू नहीं!) के अहम अपवाद को छोड़कर, उपयोगकर्ता के डेटा के फ़ॉर्म या स्ट्रक्चर की कोई गारंटी नहीं है.

अच्छी बात यह है कि कंटेनर को सिर्फ़ उपयोगकर्ता का डाला गया डेटा ही नहीं मिलेगा. इसमें कुछ ऐसा डेटा भी होगा जो ब्राउज़र में Google Analytics 4 टैग से अपने-आप इकट्ठा होता है. इनमें ये चीज़ें शामिल हैं:

  • ip_override
  • language
  • page_location
  • page_referrer
  • page_title
  • screen_resolution
  • user_agent

इसके अलावा, अगर सर्वर का अनुरोध किसी वेब ब्राउज़र से किया जाता है, तो getCookieValue API की मदद से भी ब्राउज़र कुकी डेटा उपलब्ध हो सकता है.

ये दोनों मिलकर, अपने-आप इकट्ठा होने वाला डेटा तैयार करते हैं, जिसके बारे में हमने ऊपर बताया है. आम तौर पर, इसमें ऐसा डेटा शामिल होता है जो दुनिया भर के लोगों के लिए होता है और जो किसी शब्द के बारे में साफ़ तौर पर नहीं बताया जाता. जब ब्राउज़र में GA4 टैग से कोई अनुरोध मिलता है, तब यह डेटा हमेशा उपलब्ध रहेगा और उसका फ़ॉर्मैट हमेशा एक ही होगा. इन पैरामीटर के बारे में ज़्यादा जानकारी के लिए, इवेंट का रेफ़रंस देखें.

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

इसे ध्यान में रखते हुए, Baz Analytics टैग के पैरामीटर पर दोबारा गौर करें.

  • मेज़रमेंट आईडी, id: यह अपने-आप इकट्ठा नहीं होता, इसलिए यह एक ऐसी वैल्यू का उदाहरण है जिसे उपयोगकर्ता को टैग कॉन्फ़िगर करते समय डालना चाहिए.
  • इवेंट का नाम, en: जैसा कि ऊपर बताया गया है, इवेंट का नाम किसी भी समय सीधे event_name पैरामीटर से लिया जा सकता है. हालांकि, इसकी वैल्यू उपयोगकर्ता तय करता है. इसलिए, ज़रूरत पड़ने पर नाम को बदलने की सुविधा भी दिया जा सकता है.
  • पेज यूआरएल, l: यह वैल्यू, page_location पैरामीटर से ली जा सकती है. यह पैरामीटर, हर इवेंट पर Google Analytics GA4 ब्राउज़र टैग से अपने-आप इकट्ठा करता है. इसलिए, आपको उपयोगकर्ता को मैन्युअल रूप से वैल्यू डालने की ज़रूरत नहीं पड़नी चाहिए.
  • यूज़र आईडी, u: Baz Analytics के सर्वर टैग में, u पैरामीटर को न तो उपयोगकर्ता के तौर पर तय किया जाता है और न ही पेज पर मौजूद टैग अपने-आप इकट्ठा करता है. इसके बजाय, इसे एक ब्राउज़र कुकी में स्टोर किया जाता है, ताकि वेबसाइट पर कई बार आने वाले उपयोगकर्ताओं की पहचान की जा सके. जैसा कि लागू करने का तरीका नीचे बताया गया है, यह Baz Analytics सर्वर टैग है, जो कुकी सेट करने के लिए setCookie API का इस्तेमाल करता है. इसका मतलब है कि सिर्फ़ Baz Analytics टैग से यह पता चलता है कि कुकी कहां और कैसे सेव की गई है. l की तरह, u पैरामीटर अपने-आप इकट्ठा होना चाहिए.

टैग कॉन्फ़िगरेशन सेट अप करने के बाद, यह कुछ ऐसा दिखेगा:

Baz Analytics टैग के लिए टैग कॉन्फ़िगरेशन का स्नैपशॉट.

टैग लागू करने की प्रक्रिया

अब टैग का कॉन्फ़िगरेशन अलग-अलग है, तो आप सैंडबॉक्स की गई JavaScript में व्यवहार को लागू करने के लिए तैयार हैं.

टैग को चार काम करने होंगे:

  1. टैग के कॉन्फ़िगरेशन से इवेंट का नाम पाएं.
  2. इवेंट की page_location प्रॉपर्टी से पेज का यूआरएल पाएं.
  3. यूज़र आईडी कैलकुलेट करना. टैग, _bauid नाम की कुकी में यूज़र आईडी को खोजेगा. अगर वह कुकी मौजूद नहीं है, तो टैग एक नई वैल्यू का हिसाब लगाएगा और उसे बाद के अनुरोधों के लिए सेव करेगा.
  4. एक यूआरएल बनाएं और Baz Analytics के कलेक्शन सर्वर को अनुरोध भेजें.

इस बारे में सोचें कि कंटेनर में टैग कैसे फ़िट होता है. अलग-अलग कंटेनर कॉम्पोनेंट की भूमिकाएं अलग-अलग होती हैं, इसलिए ऐसी कुछ चीज़ें भी हैं जिन्हें टैग, नहीं करता या नहीं करता. आपका टैग:

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

इनमें से किसी भी चीज़ को करने वाला टैग टेंप्लेट लिखने से, आपके टैग के उपयोगकर्ताओं के लिए भ्रम की स्थिति पैदा हो सकती है. उदाहरण के लिए, आने वाले अनुरोध का जवाब भेजने वाला टैग, क्लाइंट को ऐसा करने से रोक देगा. इससे कंटेनर के काम करने के बारे में उपयोगकर्ताओं की उम्मीदों पर असर पड़ सकता है.

इन सभी बातों को ध्यान में रखते हुए, नीचे सैंडबॉक्स किए गए JS में टैग को एनोटेट करके लागू किया गया है.

const encodeUriComponent = require('encodeUriComponent');
const generateRandom = require('generateRandom');
const getCookieValues = require('getCookieValues');
const getEventData = require('getEventData');
const logToConsole = require('logToConsole');
const makeString = require('makeString');
const sendHttpGet = require('sendHttpGet');
const setCookie = require('setCookie');

const USER_ID_COOKIE = '_bauid';
const MAX_USER_ID = 1000000000;

// The event name is taken from either the tag's configuration or from the
// event. Configuration data comes into the sandboxed code as a predefined
// variable called 'data'.
const eventName = data.eventName || getEventData('event_name');

// page_location is automatically collected by the Google Analytics 4 tag.
// Therefore, it's safe to take it directly from event data rather than require
// the user to specify it. Use the getEventData API to retrieve a single data
// point from the event. There's also a getAllEventData API that returns the
// entire event.
const pageLocation = getEventData('page_location');
const userId = getUserId();

const url = 'https://www.example.com/baz_analytics?' +
    'id=' + encodeUriComponent(data.measurementId) +
    'en=' + encodeUriComponent(eventName) +
    (pageLocation ? 'l=' + encodeUriComponent(pageLocation) : '') +
    'u=' + userId;

// The sendHttpGet API takes a URL and returns a promise that resolves with the
// result once the request completes. You must call data.gtmOnSuccess() or
// data.gtmOnFailure() so that the container knows when the tag has finished
// executing.
sendHttpGet(url).then((result) => {
  if (result.statusCode >= 200 && result.statusCode < 300) {
    data.gtmOnSuccess();
  } else {
    data.gtmOnFailure();
  }
});

// The user ID is taken from a cookie, if present. If it's not present, a new ID
// is randomly generated and stored for later use.
//
// Generally speaking, tags should not interact directly with the request or
// response. This prevents different tags from conflicting with each other.
// Cookies, however, are an exception. Tags are the only container entities that
// know which cookies they need to read or write. Therefore, it's okay for tags
// to interact with them directly.
function getUserId() {
  const userId = getCookieValues(USER_ID_COOKIE)[0] || generateRandom(0, MAX_USER_ID);
  // The setCookie API adds a value to the 'cookie' header on the response.
  setCookie(USER_ID_COOKIE, makeString(userId), {
    'max-age': 3600 * 24 * 365 * 2,
    domain: 'auto',
    path: '/',
    httpOnly: true,
    secure: true,
  });

  return userId;
}

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

  • कुकी की वैल्यू को पढ़ता है: _bauid
  • इवेंट डेटा को पढ़ता है: event_name और page_location
  • एचटीटीपी अनुरोध भेजता है: https://www.example.com/*
  • कुकी सेट करता है: _bauid

आपको अपने टैग के लिए भी टेस्ट लिखने चाहिए. टेंप्लेट की टेस्टिंग के बारे में ज़्यादा जानने के लिए, टेंप्लेट डेवलपर गाइड का टेस्ट सेक्शन पढ़ें.

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

आपने नया टैग बनाने, टेस्ट करने, और डिप्लॉय करने का पूरा काम कर लिया है, इसलिए उसे अपने तक ही सेव रखने की ज़रूरत नहीं है. अगर आपको लगता है कि आपका नया टैग दूसरे लोगों के लिए काम का होगा, तो इसे कम्यूनिटी टेंप्लेट गैलरी में सबमिट करें.

नतीजा

इस ट्यूटोरियल में, आपने सर्वर कंटेनर के लिए टैग लिखने की बुनियादी बातें सीखी हैं. आपने सीखा:

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