ব্লগে ফিরে যান

ব্লগ

সার্ভার-সাইড ট্যাগিংয়ের সামনে কুকি ব্যানার: কী বদলায়, আর কী বদলায় না

প্রকাশিত · আপডেট করা হয়েছে · পড়তে 5 মিনিট

প্রশ্নটা দুইভাবে আসে। "ট্যাগ এখন ফার্স্ট-পার্টি, তবুও কি ব্যানার লাগবে?" — হ্যাঁ। "ট্যাগ এখন ফার্স্ট-পার্টি, আমার ব্যানার কি এখনও কাজ করে?" — সাধারণত করে, কিন্তু এটি যেভাবে ব্যর্থ হতে পারে তা নিঃশব্দ, তাই নিশ্চিত হতে বিশ মিনিট খরচ করা সার্থক। এটি আইনি পরামর্শ নয়; এটি কারিগরি প্রক্রিয়ার বর্ণনা, যাতে আপনার আইনি উপদেষ্টা যা-ই করতে বলুন, আপনার সেটআপ সত্যিই তা করে।

সার্ভার-সাইড ট্যাগিং সম্মতির ব্যাপারে কী বদলায়: কিছুই না

ফার্স্ট-পার্টি হোস্টনেম একটি রিকোয়েস্টের কারিগরি বৈশিষ্ট্য। এটি অনুমতি নয়। গতকাল যদি একটি অ্যানালিটিক্স কুকি সেট করতে আপনার সম্মতি লাগত, আজও লাগবে; কুকিটি এখন google-analytics.com-এর বদলে metrics.yoursite.com সেট করছে — এই তথ্য এখানে কোনো ভূমিকাই রাখে না। নিয়ন্ত্রক সংস্থার প্রশ্ন হলো আপনি কী সংগ্রহ করেন এবং কেন, প্যাকেটটি পথে কোন সার্ভার ঘুরে এসেছে তা নয়।

যা বদলায় তা হলো, যে রিকোয়েস্ট ব্লক হয়ে যেত সেটা কোথায় যায়। অ্যাড ব্লকার আর ব্রাউজারের প্রাইভেসি ফিচারগুলো হোস্টনেম ও URL প্যাটার্ন ধরে ব্লক করে, আর তারা googletagmanager.com ব্লক করে। আপনার নিজের ডোমেইন তারা ব্লক করে না। তাই যে ভিজিটর সম্মতি দিয়েছেন অথচ কোনো ফিল্টার লিস্ট তাকে নিঃশব্দে বাদ দিয়ে দিত, তিনি এখন গোনায় আসেন। পুরো সুবিধা এটুকুই, আর এটা সুবিধা শুধু সেই ভিজিটরদের ক্ষেত্রে যারা সম্মতি দিয়েছেন।

আপনার স্টোরের চেয়ে GA4 কেন কম কনভার্সন দেখায়, তার চারটি কারণের প্রথমটিও সম্মতি: GA4 কেন কম গোনে, আর কোন অংশ ফিরিয়ে আনা যায়।

এক অনুচ্ছেদে Consent Mode

Google-এর ট্যাগগুলো কয়েকটি নির্দিষ্ট নামের অনুমতি দিয়ে একটি সম্মতি-অবস্থা পড়ে — analytics_storage, ad_storage, ad_user_data, ad_personalization — এবং সেই অনুযায়ী কী পাঠাবে তা ঠিক করে। ভিজিটর সিদ্ধান্ত নেওয়ার আগে কনসেন্ট ম্যানেজার ডিফল্ট হিসেবে denied পুশ করে; ভিজিটর বেছে নিলে সেটি একটি update পুশ করে। denied অবস্থায় Google ট্যাগ তবুও ফায়ার হয়, কিন্তু পাঠায় একটি কুকিহীন পিং (cookieless ping): কোনো ক্লায়েন্ট ID নেই, কোনো কুকি নেই, শুধু এই সংকেত যে একটি পেজ দেখা হয়েছে, এর বেশি কিছু নয়। analytics_storage granted হলে এটি পূর্ণ হিট পাঠায়। যেটা পাঠানো হয়েছে, সার্ভার কনটেইনার সেটাই পায়, আর সম্মতির সংকেতগুলো হিটের সঙ্গেই যায়, তাই সার্ভার-সাইডের GA4 ট্যাগও একইভাবে আচরণ করে।

ক্রম গুরুত্বপূর্ণ, আর SignalHost-এর ট্যাগ নিজে থেকে কোনো শর্ত যোগ করে না

কনসেন্ট ম্যানেজারকে Google ট্যাগের আগে লোড হতে হবে, যাতে ট্যাগটি প্রথমবার মূল্যায়ন করার সময় এর ডিফল্ট অবস্থা আগে থেকেই বসানো থাকে। বেশিরভাগ কনসেন্ট ম্যানেজার ঠিক এই কাজের জন্য একটি wait_for_update মান দেয় — কয়েকশো মিলিসেকেন্ড, যতক্ষণ ট্যাগটি denied ধরে নেওয়ার আগে একটি সম্মতি-অবস্থার জন্য অপেক্ষা করে।

SignalHost আপনার ওয়েব কনটেইনারে যা যা তৈরি করে, তার কোনোটিতেই সম্মতির শর্ত নেই। এটা ইচ্ছাকৃত। Google-এর নিজের ট্যাগগুলো Consent Mode মেনে চলে; Google ট্যাগে হাতে যোগ করা সম্মতির চেক, অথচ তার নিচের GA4 ইভেন্ট ট্যাগগুলোতে কোনো চেক নেই — নিচের দুটি ভুলের প্রথমটি এটাই।

ভুল এক: Google ট্যাগে শর্ত বসানো, ইভেন্ট ট্যাগে নয়

Google ট্যাগই মেজারমেন্টকে সার্ভার কনটেইনারের মধ্য দিয়ে পাঠায়। একটি GA4 ইভেন্ট ট্যাগ — ধরুন, একটি purchase ট্যাগ — নিজে থেকেই পাঠাতে পারে। Google ট্যাগ যদি সম্মতির জন্য অপেক্ষা করে আর ইভেন্ট ট্যাগগুলো না করে, তাহলে ইভেন্ট ট্যাগগুলো সম্মতির আগেই ফায়ার হয়ে সরাসরি Google-এ পাঠায়, আর পাঠায় এমন একটি পেজ থেকে যার ব্যানার তখনও খোলা। কনটেইনার পেজে কোনো গড়বড় দেখা যায় না, কারণ হিটগুলো কখনো কনটেইনারের মধ্য দিয়ে আসেইনি।

হয় হাতে কোনো শর্তই বসাবেন না এবং কাজটা Consent Mode-কে করতে দিন, নয়তো যে ট্যাগই পাঠাতে পারে তার প্রতিটিতে শর্ত বসান। মাঝামাঝি কোনো সামঞ্জস্যপূর্ণ পথ নেই।

ভুল দুই: এমন ব্লকিং কনসেন্ট ম্যানেজার, যা আপনার নিজের লোডার চেনে না

কিছু কনসেন্ট ম্যানেজার সম্মতি না পাওয়া পর্যন্ত স্ক্রিপ্ট ব্লক করে কাজ করে — URL দেখে script ট্যাগ আটকে রাখে। তাদের তালিকায় googletagmanager.com আছে। exxz2gdaz1jz.yoursite.com নেই, কারণ কারও তালিকায় থাকা সম্ভবই নয়: লোডারের হোস্টনেম আর ফাইলের নাম শুধু আপনার কনটেইনারের জন্যই অনন্য। তাই ব্লকিং মোডে লোডারটি বিনা শর্তে ঢুকে যেতে পারে, আর আপনি যদি Consent Mode-এর বদলে ব্লকিংয়ের ওপর ভরসা করেন, তাহলে সেটা হলো সম্মতির আগেই একটি ট্যাগ ফায়ার হওয়া।

সমাধানের দুটি পথ। লোডারের URL হাতে কনসেন্ট ম্যানেজারের ব্লক রুলে যোগ করুন, আপনার অ্যানালিটিক্স যে ক্যাটাগরিতে পড়ে সেখানে। অথবা — যেটা আরও ভালো, কারণ এতে কুকিহীন পিংও ঠিকভাবে সামলানো হয় — Google-এর ট্যাগের জন্য Consent Mode-এর ওপর ভরসা করুন, আর ব্লকিং ব্যবহার করুন শুধু সেই স্ক্রিপ্টগুলোর জন্য যেগুলো এটি সমর্থন করে না। আমাদের নিজের সাইটে একটি কনসেন্ট ম্যানেজার auto-blocking মোডে চলে, পাশাপাশি Consent Mode-ও; Google ট্যাগটি কনসেন্ট ম্যানেজারের স্ক্রিপ্টের পরে বসানো, আর কেউ ক্রম বদলালে রিপোজিটরির একটি টেস্ট ফেল করে।

সার্ভার-সাইড, আর অন্যান্য ডেস্টিনেশন

সম্মতির অবস্থা প্রতিটি হিটের ভেতরে করেই সার্ভার কনটেইনারে পৌঁছায়, আর সার্ভার-সাইডের GA4 ট্যাগ ব্রাউজার-সাইডের ট্যাগের মতোই তা পড়ে। আমাদের দিকে কোনো কিছুই সম্মতি দেয় না বা তা বাড়িয়ে নেয় না; কুকিহীন পিং কুকিহীন পিং-ই থাকে।

আপনি যদি কোনো বিজ্ঞাপন প্ল্যাটফর্ম কানেক্ট করেন — Meta, TikTok, Reddit, Pinterest, Snapchat বা LinkedIn — একই হিটগুলো সেখানেও যায়, তবে শুধু সেই ভিজিটরদের কাছ থেকে যারা ad_storage-এ সম্মতি দিয়েছেন। সার্ভার প্রতিটি হিটের সঙ্গে আসা সম্মতির অবস্থা পড়ে, আর যারা বিজ্ঞাপনে অসম্মতি জানিয়েছেন বা এখনও উত্তর দেননি, তাদের ক্ষেত্রে ওই প্ল্যাটফর্মগুলোতে কিছুই যায় না: কোনো ইভেন্ট নয়, কোনো কুকিও নয়। Google Ads কনভার্সন Google-এর নিজের ট্যাগের মতোই Consent Mode মেনে চলে — একটি কুকিহীন সংকেত হিসেবে, যা কখনো কোনো ক্লিকের সঙ্গে যুক্ত হয় না — আর রিমার্কেটিং সম্মতির জন্য অপেক্ষা করে। এর সবটাই নির্ভর করে ব্যানারটি Consent Mode সেট করছে কি না তার ওপর: Consent Mode ছাড়া একটি পেজ কোনো সম্মতির অবস্থা পাঠায় না, আর তখন প্রতিটি হিট granted হিসেবে গণ্য হয়। এখানকার যেকোনো কিছুর মতোই এটিও যাচাই করুন: ব্যানারে উত্তর না দিয়ে সাইটটি খুলুন, নেটওয়ার্ক ট্যাব দেখুন, আর দেখুন কী বেরিয়ে যাচ্ছে।

“আরও কনভার্সন মেলান” চালু করলে Google ট্যাগ ভিজিটরের কোনো ফর্মে টাইপ করা ইমেইল ঠিকানা তুলে নেয়, যাতে বিজ্ঞাপন প্ল্যাটফর্মগুলো একটি কনভার্সনকে সংশ্লিষ্ট মানুষটির সঙ্গে মেলাতে পারে। ভিজিটর যা-ই বেছে নিন, ব্রাউজার এটি পাঠায়। বিজ্ঞাপনের সম্মতি প্রত্যাখ্যান করা হয়েছে এমন প্রতিটি হিট থেকে SignalHost এজেই এটি সরিয়ে দেয়, হিটটি আর এগোনোর আগেই, আর প্ল্যাটফর্মগুলো এটি কখনো হ্যাশ করা অবস্থা ছাড়া পায় না।

একটি চেকলিস্ট

  • পেজে কনসেন্ট ম্যানেজারের স্ক্রিপ্ট Google ট্যাগের ওপরে আছে।
  • ট্যাগ লোড হওয়ার আগে denied ডিফল্ট সম্মতি-অবস্থা পুশ করা হয়, সঙ্গে একটি wait_for_update।
  • কনটেইনারের কোনো ট্যাগে হাতে যোগ করা সম্মতির শর্ত নেই — অথবা যে ট্যাগ পাঠাতে পারে তার প্রতিটিতে আছে।
  • ব্যানারে উত্তর না দেওয়া অবস্থায় নেটওয়ার্ক ট্যাবে একটি কুকিহীন পিং দেখা যায় (রিকোয়েস্টে gcs=G100), কোনো পূর্ণ হিট নয়।
  • সম্মতি দেওয়ার পর একই পেজে একটি পূর্ণ হিট দেখা যায় এবং কনটেইনার পেজ সেটি গোনে।
  • কনসেন্ট ম্যানেজার যদি URL দেখে ব্লক করে, তাহলে লোডারের URL তার রুলে আছে।

অ্যাড ব্লকারের কারণে আর ডেটা হারাবেন না

বিনামূল্যে শুরু করুন। কয়েক মিনিটে প্রথম কনটেইনার চালু করুন।