ব্রাউজার কনসোলে IAB GPP স্ট্রিং ডিবাগ করা: ধাপে ধাপে টিউটোরিয়াল
GPP-র সমস্যা কেন ধরা কঠিন
কোনো মার্কিন ভিজিটর যখন তার ডেটা বিক্রি বা শেয়ার থেকে ওপ্ট-আউট করেন, সেই পছন্দ পেজের প্রতিটি বিজ্ঞাপন পার্টনারের কাছে পৌঁছাতে হয়। IAB Global Privacy Platform (GPP)-এ এটি একটি সংক্ষিপ্ত স্ট্রিং ও সেকশন ID-র তালিকা হিসেবে যায়। এর কোনোটি ভুল হলে — অনুপস্থিত, পুরোনো বা ভুল সেকশন বহন করলে — চোখে পড়ার মতো কিছু ভাঙে না। বিজ্ঞাপন তবুও লোড হয়, ব্যানারও ঠিক দেখায়, আর সমস্যা ধরা পড়ে পরে, যখন পার্টনাররা ওপ্ট-আউট উপেক্ষা করে বা আপনার ইনভেন্টরিতে কম বিড করে।
সুখবর হলো প্রায় সবকিছুই ব্রাউজার কনসোল থেকে পরীক্ষা করা যায়। এই টিউটোরিয়ালে একটি লাইভ পেজে আমরা যে ক্রমে পরীক্ষাগুলো চালাব সেই ক্রমে দেখানো হয়েছে।
ধাপ ১: নিশ্চিত করুন API আছে এবং প্রস্তুত
GPP-সামঞ্জস্যপূর্ণ CMP একটি গ্লোবাল __gpp ফাংশন প্রকাশ করে। আপনার পেজে DevTools খুলে একটি ping কমান্ড চালান:
__gpp('ping', function (data) { console.log(data); });
ফেরত আসা অবজেক্ট এক নজরেই অনেক কিছু জানায়:
- gppVersion — বর্তমান ইমপ্লিমেন্টেশনের জন্য 1.1 হওয়া উচিত।
- cmpStatus — CMP লোড হয়েছে নাকি ত্রুটি পেয়েছে।
- cmpDisplayStatus — এই ভিজিটরের জন্য ব্যানার দৃশ্যমান, লুকানো নাকি নিষ্ক্রিয়।
- signalStatus — CMP সম্মতির অবস্থা স্থির করলে “ready”, এখনও সিদ্ধান্ত নিতে থাকলে “not ready”।
- supportedAPIs — CMP যেসব সেকশন তৈরি করতে পারে।
- applicableSections — এই মুহূর্তে এই ভিজিটরের জন্য প্রযোজ্য সেকশন ID।
- gppString — এনকোড করা স্ট্রিং নিজে।
__gpp undefined হলে CMP stub অনুপস্থিত বা খুব দেরিতে লোড হচ্ছে। stub-টি এটি প্রত্যাশা করা যেকোনো বিজ্ঞাপন স্ক্রিপ্টের আগে থাকতে হবে, নইলে সেই স্ক্রিপ্টগুলো কোনো CMP দেখবে না এবং হয় অপেক্ষা করবে নয়তো সিগন্যাল ছাড়াই এগিয়ে যাবে।
ধাপ ২: প্রযোজ্য সেকশন পরীক্ষা করুন
GPP-তে প্রতিটি প্রাইভেসি ফ্রেমওয়ার্কের একটি সংখ্যাসূচক সেকশন ID আছে। পাবলিশাররা সবচেয়ে বেশি যেগুলোর মুখোমুখি হন সেগুলো হলো 2 (EU TCF v2), 5 (কানাডিয়ান TCF), 7 (US National, “usnat”) এবং ক্যালিফোর্নিয়া, ভার্জিনিয়া, কলোরাডো, ইউটাহ ও কানেটিকাটের মতো আলাদা রাজ্য সেকশনের জন্য 8 থেকে শুরু। কোনো মার্কিন রাজ্যের ভিজিটরের applicableSections-এ সাধারণত জাতীয় সেকশন বা সংশ্লিষ্ট রাজ্য সেকশন দেখা উচিত, EU সেকশন নয়।
বিভিন্ন অবস্থান থেকে পরীক্ষা করুন। একটি সাধারণ বাগ হলো CMP ব্যানারের জন্য ভূগোল ঠিকভাবে শনাক্ত করে কিন্তু স্ট্রিংয়ে যেকোনো অবস্থায় একটি ডিফল্ট সেকশন লিখে দেয়, অথবা উল্টোটা। VPN বা আপনার CMP-র প্রিভিউ টুল ব্যবহার করে ব্যানার যা দেখায় তা applicableSections যা জানায় তার সঙ্গে মিলিয়ে দেখুন।
ধাপ ৩: সেকশনের ডেটা পড়ুন
স্ট্রিং হাতে ডিকোড করার বদলে CMP-র কাছ থেকে পার্স করা সেকশন চান:
__gpp('getSection', function (data, success) { console.log(data, success); }, 'usnat');
US National সেকশনে ওপ্ট-আউট ফিল্ডগুলো একটি সরল রীতি ব্যবহার করে: 0 মানে প্রযোজ্য নয়, 1 মানে ব্যবহারকারী ওপ্ট-আউট করেছেন, এবং 2 মানে ব্যবহারকারী ওপ্ট-আউট করেননি। প্রথমে এই ফিল্ডগুলোতে মনোযোগ দিন:
- SaleOptOut ও SharingOptOut
- TargetedAdvertisingOptOut
- সংশ্লিষ্ট notice ফিল্ড, যা রেকর্ড করে ভিজিটরকে প্রতিটি অনুশীলনের বিজ্ঞপ্তি দেওয়া হয়েছিল কি না
এবার পেজে ওপ্ট-আউট করুন — আপনার “Do Not Sell or Share” লিঙ্কে ক্লিক করুন বা প্রেফারেন্স সেন্টারে সেটিং টগল করুন — এবং আবার getSection চালান। ওপ্ট-আউট ফিল্ডগুলো 2 থেকে 1 হয়ে যাওয়া উচিত। না হলে UI আর সিগন্যাল সিঙ্কের বাইরে।
ধাপ ৪: Global Privacy Control-এর পথ পরীক্ষা করুন
বেশ কয়েকটি রাজ্য আইন ব্যবসাকে Global Privacy Control সিগন্যালকে ওপ্ট-আউট হিসেবে গণ্য করতে বাধ্য করে। GPC সমর্থন করে এমন কোনো ব্রাউজার বা এক্সটেনশনে এটি চালু করুন, কনসোলে নিশ্চিত করুন navigator.globalPrivacyControl true ফেরত দিচ্ছে, তারপর একটি নতুন সেশনে পেজ লোড করুন। ভিজিটর ব্যানারে হাত না দিলেও সংশ্লিষ্ট ওপ্ট-আউট ফিল্ড ইতিমধ্যে 1 দেখানো উচিত। কিছু সেকশনে এমন একটি ফিল্ডও থাকে যা নির্দেশ করে পছন্দটি GPC সিগন্যাল থেকে এসেছে।
ধাপ ৫: শুধু স্ন্যাপশট নয়, ইভেন্টও দেখুন
বিজ্ঞাপন স্ক্রিপ্টের উচিত নয় পেজ লোডের সময় একবার স্ট্রিং পড়ে ভুলে যাওয়া। পার্টনাররা কী দেখে তা দেখতে একটি listener নিবন্ধন করুন:
__gpp('addEventListener', function (evt) { console.log(evt.eventName, evt.pingData); });
আপনার listenerRegistered, signalStatus এবং sectionChange-এর মতো ইভেন্ট দেখা উচিত। ভিজিটর কোনো পছন্দ বদলালে হালনাগাদ স্ট্রিংসহ একটি sectionChange ইভেন্ট আসা উচিত। আপনার হেডার বিডিং wrapper বা অ্যাড সার্ভার ইন্টিগ্রেশন যদি signalStatus “ready” হওয়ার আগেই শুধু স্ট্রিং পড়ে, তাহলে সেটি খালি বা পুরোনো মান পাঠাতে পারে।
ধাপ ৬: স্ট্রিংটিকে বিজ্ঞাপন অনুরোধ পর্যন্ত অনুসরণ করুন
সবশেষে Network ট্যাব খুলে আপনার বিজ্ঞাপন অনুরোধগুলো ফিল্টার করুন। অনেক অ্যাড এন্ডপয়েন্ট gpp ও gpp_sid প্যারামিটার (স্ট্রিং এবং প্রযোজ্য সেকশন ID) গ্রহণ করে। পরীক্ষা করুন:
- মার্কিন ভিজিটরদের অনুরোধে দুটি প্যারামিটারই আছে;
- স্ট্রিংটি অনুরোধের সময় ping যা ফেরত দিয়েছিল তার সঙ্গে মেলে;
- ওপ্ট-আউটের পরের অনুরোধগুলো ক্যাশ করা স্ট্রিংয়ের বদলে নতুন স্ট্রিং বহন করে।
আপনি Prebid.js ব্যবহার করলে নিশ্চিত করুন এর কনসেন্ট ম্যানেজমেন্ট মডিউল GPP-র জন্য কনফিগার করা আছে, এবং wrapper থেকে বেরোনো বিড অনুরোধ ও শেষ অ্যাড সার্ভার কল দুটোই পরীক্ষা করুন।
সাধারণ ব্যর্থতার ধরন
- stub বিজ্ঞাপন ট্যাগের পরে লোড হয় — পার্টনাররা কোনো CMP-ই দেখে না।
- অঞ্চলের জন্য ভুল সেকশন — মার্কিন ট্রাফিকের জন্য EU সেকশন পাঠানো, বা কোনো সেকশনই নয়।
- UI ও সিগন্যাল সিঙ্কের বাইরে — টগল বদলায়, স্ট্রিং বদলায় না।
- GPC উপেক্ষিত — ব্রাউজার সিগন্যাল কখনও ওপ্ট-আউটে পরিণত হয় না।
- অনুরোধে পুরোনো স্ট্রিং — wrapper প্রথম দেখা মানটি ক্যাশ করে রাখে।
মূল কথা
- ping দিয়ে শুরু করুন: সংস্করণ, অবস্থা, প্রযোজ্য সেকশন ও স্ট্রিং থেকে বেশিরভাগ গল্প জানা যায়।
- ওপ্ট-আউট ফিল্ড পড়তে getSection ব্যবহার করুন; 1 মানে ওপ্ট-আউট করেছে, 2 মানে করেনি।
- ওপ্ট-আউট লিঙ্ক ও GPC আলাদাভাবে পরীক্ষা করুন এবং নিশ্চিত করুন দুটোই সিগন্যাল বদলায়।
- ইভেন্ট শুনুন এবং বিজ্ঞাপন অনুরোধ স্ট্রিং পড়ার আগে “ready” সিগন্যালের জন্য অপেক্ষা করুন।
- ওপ্ট-আউটের আগে ও পরে প্রকৃত নেটওয়ার্ক অনুরোধে gpp ও gpp_sid যাচাই করুন।