ब्लॉग पर वापस जाएँ

ब्लॉग

Shopify या WooCommerce स्टोर के लिए सर्वर-साइड टैगिंग: क्या फ़ायर होता है, क्या नहीं, और क्या इंस्टॉल करना है

प्रकाशित · अपडेट किया गया · पढ़ने में 5 मिनट

सर्वर कंटेनर लगा देने से स्टोर अपने-आप खरीदारी रिपोर्ट नहीं करने लगता। वह बस वही आगे भेजता है जो ब्राउज़र भेजता है — Google के होस्टनेम की जगह आपके अपने होस्टनेम से — और ऐसा करना फ़ायदेमंद है, क्योंकि ऐड ब्लॉकर और Safari मिलकर किसी स्टोर के कन्वर्ज़न का अच्छा-ख़ासा हिस्सा गिरा देते हैं। लेकिन पहले खरीदारी भेजी जानी चाहिए, और जिन दो प्लेटफ़ॉर्म पर ज़्यादातर स्टोर चलते हैं, उन पर शुरुआत में इसे कोई नहीं भेजता। यह वह लेख है जो काश हम हर ग्राहक को पहले ही दिन थमा पाते।

नौ इवेंट, और वह एक चीज़ जो उन सबमें साझा है

GA4 खरीदारी के फ़नल के लिए नौ इवेंट तय करता है: view_item_list, view_item, add_to_cart, remove_from_cart, view_cart, begin_checkout, add_shipping_info, add_payment_info और purchase। ये नाम GA4 के हैं, किसी प्लेटफ़ॉर्म के नहीं — यही नौ इवेंट Shopify, WooCommerce और आपके ख़ुद बनाए स्टोर, तीनों पर काम करते हैं।

इनमें जो साझा है, वह है इनका तरीका। हर इवेंट पेज के dataLayer में ठीक उसी नाम से किया गया एक push है, जिसके साथ GA4 के ढाँचे वाला एक ecommerce ऑब्जेक्ट होता है। Tag Manager का एक ट्रिगर उस नाम को सुनता है; GA4 का एक इवेंट टैग ecommerce ऑब्जेक्ट को पढ़कर उसे भेजता है। नाम की स्पेलिंग गलत हो, ऑब्जेक्ट एक लेवल ज़्यादा अंदर नेस्ट हो, या push गलत पेज पर हो — तो टैग बिना कोई एरर दिए हमेशा के लिए वहीं पड़ा रहता है। एक purchase push ऐसा दिखता है:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
  event: 'purchase',
  ecommerce: {
    transaction_id: 'ORD-10442',
    value: 89.90,
    currency: 'EUR',
    items: [
      { item_id: 'SKU-118', item_name: 'Trail jacket', price: 89.90, quantity: 1 }
    ]
  }
});

पहले ecommerce: null का push सजावट के लिए नहीं है। इसके बिना पिछले इवेंट के items अगले इवेंट में घुस सकते हैं, और तीन पेज पहले का कोई view_item किसी purchase के अंदर दिखने लगता है।

Shopify: थीम चेकआउट को नहीं देख सकती

Shopify थीम में इंस्टॉल किया गया कंटेनर स्टोरफ़्रंट पर लोड होता है — प्रोडक्ट पेज, कलेक्शन, कार्ट। वह चेकआउट या थैंक-यू पेज पर लोड नहीं होता, क्योंकि इन्हें Shopify अपने डोमेन और अपने टेम्पलेट से दिखाता है। इसलिए थीम में इंस्टॉल किया गया कंटेनर view_item और add_to_cart तो भेज सकता है, लेकिन किसी भी कॉन्फ़िगरेशन में begin_checkout, add_shipping_info, add_payment_info या purchase कभी नहीं भेजेगा।

ये चार इवेंट एक Custom Pixel से आते हैं। Shopify का पिक्सेल सैंडबॉक्स चेकआउट इवेंट (checkout_started, checkout_shipping_info_submitted, payment_info_submitted, checkout_completed) उपलब्ध कराता है और पिक्सेल को उसके अपने dataLayer में push करने देता है — एक छोटी-सी स्क्रिप्ट इनमें से हर इवेंट को ऊपर बताए GA4 इवेंट नाम और ढाँचे में बदल देती है। स्टोरफ़्रंट के इवेंट अब भी थीम से ही आते हैं, इसलिए पूरे सेटअप में दोनों होते हैं: ब्राउज़िंग वाले हिस्से के लिए एक dataLayer ऐप या थीम स्निपेट, और चेकआउट वाले हिस्से के लिए एक Custom Pixel।

एक और बात तय करनी है। Shopify का Google & YouTube चैनल किसी भी कंटेनर से बाहर, सीधे GA4 इवेंट भेज सकता है। अगर आप वहाँ कोई GA4 प्रॉपर्टी जोड़ते हैं और साथ ही उसी प्रॉपर्टी को अपने कंटेनर से भी भेजते हैं, तो हर खरीदारी दो बार गिनी जाती है। एक ही रास्ता चुनें। अगर मकसद फ़र्स्ट-पार्टी कलेक्शन है, तो रास्ता कंटेनर है, और चैनल का Analytics कनेक्शन बंद ही रहना चाहिए।

WooCommerce: कोर कुछ भी push नहीं करता

WooCommerce अपने-आप में कोई dataLayer लिखता ही नहीं। यह काम एक प्लगइन करता है — ज़्यादातर लोग GTM4WP चुनते हैं — और उसका GA4 ई-कॉमर्स विकल्प ये इवेंट सही ढाँचे में, सही पेजों पर बनाता है: प्रोडक्ट पर view_item, बटन पर add_to_cart, चेकआउट पेज पर begin_checkout, और order-received पेज पर purchase।

WooCommerce की सबसे आम गड़बड़ी है दोहरी खरीदारी, और इसकी एक खास वजह है: order-received पेज दोबारा लोड हो जाता है। विज़िटर उसे रिफ़्रेश करता है, पेमेंट प्रोवाइडर से लौटकर उस पर आता है, या थीम उसके ज़रिए दो बार रीडायरेक्ट करती है — और purchase उसी transaction_id के साथ फिर से push हो जाता है। GA4 एक सेशन के भीतर transaction_id के आधार पर डुप्लिकेट खरीदारियाँ हटा देता है, जिससे ज़्यादातर मामले पकड़ में आ जाते हैं, लेकिन अगले दिन का रीलोड नहीं। प्लगइन की "only fire once per order" सेटिंग चालू करना फ़ायदेमंद है; वह यह फ़्लैग सर्वर-साइड रखती है, जहाँ रीलोड उसे रीसेट नहीं कर सकता।

SignalHost आपके लिए क्या बनाता है

हर SignalHost कंटेनर के वेब कंटेनर में इन नौ में से हर इवेंट के लिए एक Custom Event ट्रिगर और एक GA4 इवेंट टैग होता है — और उन सात इवेंट के लिए भी, जिनकी ज़रूरत बिना स्टोर वाली साइट को भी होती है: साइन-अप, ट्रायल और लीड। इन सबके नाम SH प्रीफ़िक्स से शुरू होते हैं, इसलिए ये आपके पहले से मौजूद किसी भी चीज़ से कभी नहीं टकराते। हर टैग ecommerce ऑब्जेक्ट को सीधे dataLayer से भेजता है, इसलिए items, value, currency और transaction_id हर फ़ील्ड के लिए अलग वेरिएबल के बिना पहुँच जाते हैं, और हर टैग आपका मेज़रमेंट ID कहीं और से लेने के बजाय उसे साफ़-साफ़ ख़ुद लिखता है।

आपके स्टोर पर कुछ भी इंस्टॉल नहीं होता। ट्रिगर बस सुनते हैं; push प्लगइन या पिक्सेल करता है। अगर आपका कंटेनर इनमें से कोई इवेंट पहले से ही आपके अपने टैग से GA4 को भेजता है — मान लीजिए किसी प्लगइन ने अपना purchase टैग साथ में लगाया हो — तो SignalHost वह इवेंट उसी पर छोड़ देता है और दूसरा टैग नहीं बनाता, ताकि कोई भी ऑर्डर दो बार न गिना जाए। हर टैग वह event_id भी आगे भेजता है जो आप इवेंट के साथ push करते हैं, ताकि जो विज्ञापन प्लेटफ़ॉर्म वही इवेंट अपने पिक्सेल से भी सुनता है, वह उसे एक ही बार गिने।

सर्वर-साइड पर हर इवेंट के लिए अलग से कुछ नहीं होता। सर्वर कंटेनर का GA4 टैग उसे मिलने वाला हर इवेंट आगे भेज देता है, उसका नाम चाहे जो हो, इसलिए आपकी साइट पर कोई नया इवेंट जुड़ने पर हमारी तरफ़ कोई बदलाव नहीं करना पड़ता। आप जिन विज्ञापन प्लेटफ़ॉर्म को जोड़ते हैं — Google Ads, Meta, TikTok, Reddit, Pinterest, Snapchat, LinkedIn — उन्हें भी यही इवेंट मिलते हैं: Meta और TikTok के लिए purchase अपने प्रोडक्ट और वैल्यू के साथ Purchase बन जाता है, और हर प्लेटफ़ॉर्म को उसी push से वे इवेंट मिलते हैं जो उसके काम के हैं।

एक टेस्ट ऑर्डर से जाँच करें

टेस्ट मोड में एक असली ऑर्डर दें, या कोई सस्ता ऑर्डर दें जिसे आप बाद में रिफ़ंड कर दें, और कंटेनर पेज की इवेंट सूची पर नज़र रखें। आपको क्रम से view_item, add_to_cart, begin_checkout, add_payment_info और purchase दिखने चाहिए — हर एक, एक बार — और अगर आपका सेटअप view_cart और add_shipping_info भी push करता है, तो वे इनके बीच में। Shopify पर purchase न दिखे, तो इसका मतलब है कि Custom Pixel इंस्टॉल नहीं है या push नहीं कर रहा; WooCommerce पर begin_checkout न दिखे, तो आमतौर पर इसका मतलब है कि प्लगइन का चेकआउट इवेंट बंद है।

अगर आप Google Ads कन्वर्ज़न कंटेनर के ज़रिए चलाते हैं, तो जब तक आप कोई दूसरा इवेंट न चुनें, कन्वर्ज़न इवेंट purchase ही होता है, और उसकी value, currency और ट्रांज़ैक्शन ID उसी ecommerce ऑब्जेक्ट से पढ़े जाते हैं। बिना value वाला purchase push शून्य मूल्य का कन्वर्ज़न दर्ज करता है — जो रिपोर्ट में एक असली संख्या है, बस गलत।

अगर इसके बाद भी GA4 आपके स्टोर से कम ऑर्डर गिनता है, तो पढ़ें कि GA4 कम क्यों गिनता है, और क्या वापस पाया जा सकता है।

ऐड ब्लॉकर्स की वजह से डेटा खोना बंद करें

मुफ़्त शुरू करें। कुछ ही मिनटों में पहला कंटेनर चालू करें।