सर्वर साइड टैगिंग के बारे में जानकारी लेख में, आपको Tag Manager में सर्वर साइड टैगिंग के बारे में खास जानकारी मिली. आपको पता चला कि क्लाइंट क्या होते हैं और वे क्या करते हैं: क्लाइंट, उपयोगकर्ताओं के डिवाइसों से इवेंट डेटा पाते हैं और उसे कंटेनर के बाकी हिस्सों में इस्तेमाल करने के लिए अडैप्ट करते हैं. इस लेख में, सर्वर-साइड टैग में उस डेटा को प्रोसेस करने का तरीका बताया गया है.
सर्वर कंटेनर में, टैग को क्लाइंट से इवेंट डेटा मिलता है. इसके बाद, टैग इस डेटा को प्रोसेस करते हैं और इसे इकट्ठा करने और विश्लेषण करने के लिए वापस भेजते हैं. टैग, डेटा को आपकी पसंद के हिसाब से कहीं भी भेज सकते हैं. जब तक डेस्टिनेशन, एचटीटीपी अनुरोधों को स्वीकार करता है, तब तक वह सर्वर कंटेनर से भी डेटा स्वीकार कर सकता है.
सर्वर कंटेनर में तीन बिल्ट-इन टैग होते हैं. इनका इस्तेमाल बिना किसी कस्टम कॉन्फ़िगरेशन के किया जा सकता है:
- Google Analytics
- एचटीटीपी अनुरोध
अगर आपको Google Analytics के अलावा किसी और जगह पर डेटा भेजना है या आपको एचटीटीपी अनुरोध टैग से ज़्यादा सुविधाओं की ज़रूरत है, तो आपको किसी दूसरे टैग का इस्तेमाल करना होगा. आपको कम्यूनिटी टेंप्लेट गैलरी में अन्य टैग मिल सकते हैं. इसके अलावा, आपके पास खुद के टैग लिखने का विकल्प भी होता है. इस ट्यूटोरियल में, आपको सर्वर कंटेनर के लिए अपने टैग लिखने की बुनियादी बातें सिखाई जाएंगी.
मकसद
- जानें कि इवेंट डेटा को पढ़ने, एचटीटीपी अनुरोध भेजने, और ब्राउज़र में कुकी सेट करने के लिए किन एपीआई का इस्तेमाल करना है.
- टैग के कॉन्फ़िगरेशन के विकल्पों को डिज़ाइन करने के सबसे सही तरीके जानें.
- उपयोगकर्ता की ओर से तय किए गए डेटा और अपने-आप इकट्ठा हुए डेटा के बीच का अंतर जानें. साथ ही, यह भी जानें कि यह अंतर क्यों ज़रूरी है.
- सर्वर कंटेनर में टैग की भूमिका के बारे में जानें. समझें कि टैग को क्या करना चाहिए और क्या नहीं करना चाहिए.
- जानें कि टैग टेंप्लेट को कम्यूनिटी टेंप्लेट गैलरी में कब सबमिट करना चाहिए.
ज़रूरी शर्तें
- डिप्लॉय किया गया सर्वर कंटेनर
- Tag Manager, सर्वर कंटेनर, और उनके बुनियादी सिद्धांतों के बारे में जानकारी होनी चाहिए. जैसे, क्लाइंट, टैग, ट्रिगर, और वैरिएबल
- टैग और वैरिएबल के लिए, राइटिंग टेंप्लेट की बुनियादी बातों के बारे में जानकारी होना
Baz Analytics टैग
इस ट्यूटोरियल में, आपको एक ऐसा टैग बनाने का तरीका बताया जाएगा जो मेज़रमेंट डेटा को Baz Analytics नाम की सेवा को भेजता है.
Baz Analytics एक काल्पनिक और सामान्य Analytics सेवा है. यह https://example.com/baz_analytics को HTTP GET अनुरोधों के ज़रिए डेटा इकट्ठा करती है. इसमें ये पैरामीटर होते हैं:
| पैरामीटर | उदाहरण | ब्यौरा |
|---|---|---|
| आईडी | BA-1234 | आपके Baz Analytics खाते का आईडी. |
| en | क्लिक | ईवेंट का नाम. |
| l | https://www.google.com/search?q=sgtm
|
उस पेज का यूआरएल जहां इवेंट हुआ. |
| u | 2384294892 | कार्रवाई करने वाले उपयोगकर्ता का आईडी. इस कुकी का इस्तेमाल, एक से ज़्यादा कार्रवाइयों को एक उपयोगकर्ता से जोड़ने के लिए किया जाता है. |
टैग कॉन्फ़िगरेशन
सबसे पहले, टैग टेंप्लेट बनाएं. अपने कंटेनर के टेंप्लेट सेक्शन पर जाएं. इसके बाद, टैग टेंप्लेट सेक्शन में जाकर, नया पर क्लिक करें. अपने टैग में कोई नाम और ब्यौरा जोड़ें.
इसके बाद, टेंप्लेट एडिटर के फ़ील्ड सेक्शन में जाकर, अपने टैग के लिए अलग-अलग कॉन्फ़िगरेशन विकल्प जोड़ें. अब अगला सवाल यह है कि आपको कौन-कौनसे विकल्प चाहिए? टैग बनाने के लिए, इनमें से कोई एक तरीका चुना जा सकता है:
- कुल कॉन्फ़िगरेशन: हर पैरामीटर के लिए एक कॉन्फ़िगरेशन फ़ील्ड जोड़ें. उपयोगकर्ता को हर चीज़ को साफ़ तौर पर सेट करने के लिए कहें.
- कोई कॉन्फ़िगरेशन नहीं: टैग को कॉन्फ़िगर करने के लिए कोई विकल्प नहीं है. पूरा डेटा सीधे इवेंट से लिया जाता है.
- कुछ कॉन्फ़िगरेशन: इसमें कुछ पैरामीटर के लिए फ़ील्ड होते हैं और कुछ के लिए नहीं.
हर पैरामीटर के लिए फ़ील्ड होने से, उपयोगकर्ता को अपने टैग कॉन्फ़िगरेशन पर पूरा कंट्रोल मिलता है. हालांकि, असल में ऐसा करने से अक्सर डुप्लीकेट कॉन्टेंट तैयार हो जाता है. खास तौर पर, Baz Analytics l पैरामीटर जैसी चीज़ें, जो पेज का यूआरएल शामिल करती हैं, साफ़ तौर पर समझ में आती हैं और सभी के लिए एक जैसी होती हैं.
टैग को कॉन्फ़िगर करते समय, हर बार एक जैसा डेटा डालना कंप्यूटर का काम है.
ऐसा हो सकता है कि सिर्फ़ इवेंट से डेटा लेने वाला टैग इस्तेमाल करने से समस्या हल हो जाए. उपयोगकर्ता के लिए, यह सबसे आसान टैग है. इसमें उपयोगकर्ता को कुछ भी नहीं करना होता. हालांकि, यह सबसे ज़्यादा पाबंदियों वाला और कमज़ोर विकल्प भी है. उपयोगकर्ता, टैग के काम करने के तरीके में बदलाव नहीं कर सकते. भले ही, उन्हें ऐसा करना पड़े.
उदाहरण के लिए, हो सकता है कि वे अपनी वेबसाइट और Google Analytics में किसी इवेंट को purchase कहते हों, लेकिन Baz Analytics उसे buy कहता हो. इसके अलावा, ऐसा भी हो सकता है कि टैग, इवेंट के आने वाले डेटा के स्ट्रक्चर के बारे में जो अनुमान लगाता है वे असल में सही न हों. दोनों ही मामलों में, उपयोगकर्ता को समस्या का सामना करना पड़ता है.
ज़्यादातर मामलों में, जवाब इन दोनों के बीच में होता है. कुछ डेटा को हमेशा इवेंट से लेना सही होता है. अन्य डेटा को उपयोगकर्ता को कॉन्फ़िगर करना चाहिए. आपको कैसे पता चलता है कि कौनसी इमेज किस तरह की है? उस सवाल का जवाब देने के लिए, हमें कंटेनर में आने वाले डेटा को ध्यान से देखना होगा.
डेटा कहां से आता है?
Google Analytics टैग से सर्वर कंटेनर में आने वाले डेटा को दो कैटगरी में बांटा जा सकता है: उपयोगकर्ता की ओर से तय किया गया डेटा और अपने-आप इकट्ठा होने वाला डेटा.
उपयोगकर्ता से मिले डेटा का मतलब, उस डेटा से है जिसे उपयोगकर्ता gtag.js event
कमांड में डालता है. उदाहरण के लिए, इस तरह का निर्देश:
gtag('event', 'search', {
search_term: 'beets',
});
इससे सर्वर कंटेनर में ये पैरामीटर दिखेंगे:
{
event_name: 'search',
search_term: 'beets',
}
यह देखने में आसान है, लेकिन टैग के हिसाब से इसे इस्तेमाल करना बहुत मुश्किल है. इस डेटा को उपयोगकर्ता डालता है. इसलिए, यह कुछ भी हो सकता है.
ऐसा हो सकता है कि उपयोगकर्ता सिर्फ़ ऊपर दिए गए सुझाए गए इवेंट और पैरामीटर भेज रहा हो. हालांकि, ऐसा करना ज़रूरी नहीं है. event_name पैरामीटर की जगह (लेकिन वैल्यू नहीं!) को छोड़कर, उपयोगकर्ता के डेटा के फ़ॉर्म या स्ट्रक्चर के बारे में कोई गारंटी नहीं है.
हालांकि, कंटेनर को सिर्फ़ उपयोगकर्ता का डाला गया डेटा नहीं मिलता. इसे ऐसा डेटा भी मिलेगा जो ब्राउज़र में मौजूद Google Analytics टैग अपने-आप इकट्ठा करता है. इनमें ये चीज़ें शामिल हैं:
ip_overridelanguagepage_locationpage_referrerpage_titlescreen_resolutionuser_agent
इसके अलावा, अगर सर्वर का अनुरोध किसी वेब ब्राउज़र से आता है, तो getCookieValue एपीआई के ज़रिए ब्राउज़र कुकी का डेटा भी उपलब्ध हो सकता है.
ये दोनों मिलकर, अपने-आप इकट्ठा होने वाला डेटा बनाते हैं. इसके बारे में हमने ऊपर बताया है. आम तौर पर, इसमें ऐसा डेटा होता है जो यूनिवर्सल होता है और जिसका मतलब साफ़ तौर पर समझ में आता है. जब ब्राउज़र में मौजूद Google Analytics टैग से कोई अनुरोध आता है, तो यह डेटा हमेशा उपलब्ध रहेगा और इसका फ़ॉर्मैट हमेशा एक जैसा रहेगा. इन पैरामीटर के बारे में ज़्यादा जानने के लिए, इवेंट रेफ़रंस देखें.
इस क्लासिफ़िकेशन से हमें एक उपयोगी टूल मिलता है. इसकी मदद से यह तय किया जा सकता है कि उपयोगकर्ता को कौनसा डेटा कॉन्फ़िगर करना चाहिए और टैग में कौनसा डेटा तय किया जाना चाहिए. अपने-आप इकट्ठा होने वाले डेटा को इवेंट से सीधे तौर पर पढ़ा जा सकता है. बाकी सभी चीज़ें उपयोगकर्ता को कॉन्फ़िगर करनी चाहिए.
इसे ध्यान में रखते हुए, Baz Analytics टैग के पैरामीटर को फिर से देखें.
- मेज़रमेंट आईडी,
id: यह अपने-आप इकट्ठा नहीं होता. इसलिए, यह एक ऐसा उदाहरण है जिसे टैग कॉन्फ़िगर करते समय उपयोगकर्ता को डालना चाहिए. - इवेंट का नाम,
en: ऊपर बताया गया है कि इवेंट का नाम हमेशाevent_nameपैरामीटर से लिया जा सकता है. हालांकि, इसकी वैल्यू उपयोगकर्ता तय करता है. इसलिए, अगर ज़रूरत हो, तो नाम को ओवरराइड करने की सुविधा देना एक अच्छा विकल्प है. - पेज का यूआरएल,
l: इस वैल्यू कोpage_locationपैरामीटर से लिया जा सकता है. यह पैरामीटर, Google Analytics ब्राउज़र टैग की मदद से हर इवेंट पर अपने-आप इकट्ठा होता है. इसलिए, उपयोगकर्ता को मैन्युअल तरीके से वैल्यू डालने की ज़रूरत नहीं होनी चाहिए. - उपयोगकर्ता आईडी,
u: Baz Analytics सर्वर टैग में,uपैरामीटर को न तो उपयोगकर्ता तय करता है और न ही टैग, पेज पर इसे अपने-आप इकट्ठा करता है. इसके बजाय, इसे ब्राउज़र कुकी में सेव किया जाता है, ताकि वेबसाइट पर कई बार आने वाले लोगों की पहचान की जा सके. नीचे दिए गए तरीके से लागू करने पर, आपको पता चलेगा कि Baz Analytics का सर्वर टैग, कुकी सेट करने के लिएsetCookieAPI का इस्तेमाल करता है. इसका मतलब है कि Baz Analytics टैग ही यह जानता है कि कुकी कहां और कैसे सेव की जाती है.lकी तरह,uपैरामीटर अपने-आप इकट्ठा होना चाहिए.
टैग कॉन्फ़िगरेशन सेट अप करने के बाद, यह कुछ इस तरह दिखना चाहिए:

टैग लागू करने की प्रक्रिया
टैग का कॉन्फ़िगरेशन पूरा होने के बाद, सैंडबॉक्स की गई JavaScript में टैग के व्यवहार को लागू किया जा सकता है.
टैग को ये चार काम करने होंगे:
- टैग के कॉन्फ़िगरेशन से इवेंट का नाम पाएं.
- इवेंट की
page_locationप्रॉपर्टी से पेज का यूआरएल पाएं. - उपयोगकर्ता आईडी का हिसाब लगाना. यह टैग,
_bauidनाम की कुकी में User-ID को खोजेगा. अगर वह कुकी मौजूद नहीं है, तो टैग एक नई वैल्यू का हिसाब लगाएगा और उसे बाद के अनुरोधों के लिए सेव करेगा. - यह कुकी, यूआरएल बनाती है और 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 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
आपको अपने टैग के लिए भी जांचें लिखनी चाहिए. टेंप्लेट की टेस्टिंग के बारे में ज़्यादा जानने के लिए, टेंप्लेट डेवलपर गाइड का टेस्ट सेक्शन पढ़ें.
आखिर में, कम से कम एक बार कोड चलाएं बटन का इस्तेमाल करके, टैग को चलाने की कोशिश करना न भूलें. इससे कई सामान्य गलतियों को आपके सर्वर पर आने से रोका जा सकेगा.
अपने टैग को कम्यूनिटी टेंप्लेट गैलरी में सबमिट करना
आपने नया टैग बनाने, उसे टेस्ट करने, और उसे डिप्लॉय करने का पूरा प्रोसेस पूरा कर लिया है. इसलिए, इसे अपने तक ही सीमित रखने का कोई मतलब नहीं है. अगर आपको लगता है कि आपका नया टैग अन्य लोगों के लिए मददगार होगा, तो उसे कम्यूनिटी टेंप्लेट गैलरी में सबमिट करें.
नतीजा
इस ट्यूटोरियल में, आपने सर्वर कंटेनर के लिए टैग लिखने के बारे में बुनियादी जानकारी हासिल की. आपने सीखा:
- इवेंट डेटा को पढ़ने, एचटीटीपी अनुरोध भेजने, और ब्राउज़र पर कुकी सेट करने के लिए, किन एपीआई का इस्तेमाल करना है.
- टैग के लिए कॉन्फ़िगरेशन के विकल्प डिज़ाइन करने के सबसे सही तरीके.
- उपयोगकर्ता के तय किए गए डेटा और अपने-आप इकट्ठा होने वाले डेटा के बीच का अंतर और यह अंतर क्यों ज़रूरी है.
- कंटेनर में टैग की भूमिका; इसे क्या करना चाहिए और क्या नहीं करना चाहिए.
- कम्यूनिटी टेंप्लेट गैलरी में टैग टेंप्लेट कब और कैसे सबमिट करें.