ব্লগ
Drupal-এর জন্য SignalHost: মডিউল ইনস্টল করুন, একবার সংযুক্ত করুন, আর সার্ভার-সাইড ট্র্যাকিং চালু
প্রকাশিত · পড়তে 6 মিনিট
SignalHost মডিউল এক লাইন কোডও পেস্ট না করে একটি Drupal সাইটে সার্ভার-সাইড Google Tag Manager বসিয়ে দেয়। এটি অ্যাডমিনিস্ট্রেশন পেজ নয় এমন প্রতিটি পেজে ট্র্যাকিং লোডার যোগ করে, আমাদের দিকে কিছু বদলালে সেটি হালনাগাদ রাখে, আর আপনি সংযোগ বিচ্ছিন্ন করলে আবার সরিয়ে দেয়। এই গাইড সেই ক্রমেই এগোয়, যে ক্রমে আপনি এর মুখোমুখি হন: মডিউল ইনস্টল করা, একটি কনটেইনার সংযুক্ত করা, এটি কাজ করছে কি না যাচাই করা, আর কাজ না করলে কী করবেন।
শুরু করার আগে
- sodium এক্সটেনশনসহ PHP 8.1 বা তার নতুন সংস্করণে চলা Drupal 10.3 বা 11; এক্সটেনশনটি PHP 7.2 থেকেই PHP-এর অংশ।
- একটি SignalHost অ্যাকাউন্ট। চেষ্টা করে দেখতে ফ্রি প্ল্যানই যথেষ্ট: মাসে ১০,০০০টি রিকোয়েস্ট আর একটি কনটেইনার। সংযুক্ত করার সময়েই অ্যাকাউন্ট তৈরি করে নিতে পারেন।
- Administer SignalHost Server-Side Tagging অনুমতিসহ একটি অ্যাকাউন্ট। শুধু যাঁদের এই অনুমতি আছে, তাঁরাই সাইটটি সংযুক্ত করতে বা সংযোগ বিচ্ছিন্ন করতে পারেন।
১. মডিউল ইনস্টল করুন
অন্য যেকোনো কন্ট্রিবিউটেড মডিউলের মতোই এটি ইনস্টল করুন, drupal.org-এ এর প্রজেক্ট পেজ থেকে: Composer দিয়ে যোগ করুন, তারপর চালু করুন।
composer require drupal/signalhost_server_side_tagging
drush en signalhost_server_side_taggingDrush ছাড়া এটি চালু করুন Extend-এর অধীনে, যেখানে এটি Statistics গ্রুপে SignalHost Server-Side Tagging নামে তালিকাভুক্ত। সাইটটি সংযুক্ত না হওয়া পর্যন্ত এটি কিছুই প্রিন্ট করে না।
২. সাইটটিকে একটি কনটেইনারের সঙ্গে সংযুক্ত করুন
Configuration › Web services › SignalHost (/admin/config/services/signalhost) খুলুন এবং “Connect with SignalHost” চাপুন। এখনো অ্যাকাউন্ট না থাকলে “Create a free account” আপনাকে বরং সাইন-আপে নিয়ে যায়। আপনি “Connect” চাপার আগে SignalHost-এ কিছুই পাঠানো হয় না।
signalhost.io-তে সাইন ইন করুন। পরের স্ক্রিন জানায় মডিউল কী করতে পারবে আর কী পারবে না, এবং জানতে চায় সাইটটি কোন কনটেইনার ব্যবহার করবে। কনটেইনার হলো আপনার নিজস্ব ট্যাগিং সার্ভার: একটি Tag Manager ওয়েব কনটেইনার ও সার্ভার কনটেইনার, যা আপনার নিজের Google অ্যাকাউন্টে তৈরি হয়, তাই এগুলো আপনারই থাকে।
একটি বিদ্যমান কনটেইনার বেছে নিন, অথবা “আপনার সাইটের জন্য নতুন কনটেইনার” চেপে সংক্ষিপ্ত উইজার্ডটি শেষ করুন। নতুন একটি তৈরি হতে কয়েক মিনিট লাগে; আপনি এখনই সংযুক্ত করতে পারেন, আর এটি প্রস্তুত হওয়ামাত্রই কোড যোগ হয়। “সংযুক্ত করুন” চাপুন। আপনি “Connected” বার্তাসহ Drupal-এর SignalHost পেজে ফিরে আসেন। SignalHost-এর কোড এখন আপনার সাইটের প্রতিটি পেজে যোগ হয়েছে।
৩. কোডটি আপনার সাইটে আছে কি না যাচাই করুন
পেজে এখন লেখা থাকে “Tracking is live”, অথবা নতুন কনটেইনার তখনও তৈরি হতে থাকলে “Tracking starts as soon as your container is ready”। এরপর “On your home page” লাইনটি পড়ুন: সংযুক্ত করার ঠিক পরেই মডিউল একজন ভিজিটরের মতো করে আপনার হোম পেজ এনে তার কোড খোঁজে। আপনি যে উত্তর চান তা হলো “Code found”। “Check again” যেকোনো সময় যাচাইটি আবার করে, আর অন্য উত্তরগুলো আছে “যখন কিছু কাজ করে না” অংশে।
৪. পরীক্ষা করুন
একটি প্রাইভেট উইন্ডোতে আপনার সাইট খুলে কয়েকটি পেজে ক্লিক করে ঘুরুন; যে ভিজিটর আপনার কুকি ব্যানার প্রত্যাখ্যান করেন, তাঁকেও গোনা হয় Google-এর কুকিবিহীন পিং হিসেবে। তারপর signalhost.io-তে আপনার কনটেইনার পেজ খুলতে “Open statistics & settings” চাপুন।
“উন্নত অ্যানালিটিক্স”-এর অধীনে “সাম্প্রতিক” ট্যাব গত ৩০ মিনিটের পেজ ভিউ দেখায়, আপনারগুলোসহ। পেজের নিচে “সমস্যা সমাধান”-এর অধীনে থাকা “যাচাই চালান” আপনার ট্যাগিং সার্ভার যা পেয়েছে তার সঙ্গে একই ৩০ মিনিটের জন্য Google Analytics যা রিপোর্ট করে তা মিলিয়ে দেখে। Analytics-এ কম দেখানো স্বাভাবিক: যে ভিজিটররা কুকি প্রত্যাখ্যান করেছেন, এটি তাঁদের বাদ দেয়। Growth প্ল্যান ও তার ওপরে “লাইভ ইভেন্ট পর্যবেক্ষণ” প্রতিটি ইভেন্ট আসার সঙ্গে সঙ্গে দেখায়।
মডিউল আপনার সাইটে যা যোগ করে
একটি ছোট স্ক্রিপ্ট, আর প্রতি ঘণ্টায় একবার যোগাযোগ:
- Google Tag Manager লোডার, অ্যাডমিনিস্ট্রেশন পেজ নয় এমন প্রতিটি পেজের head-এ, googletagmanager.com-এর বদলে আপনার নিজের ট্যাগিং ঠিকানার দিকে নির্দেশিত। এটি সেখান থেকে আপনার Tag Manager কনটেইনার লোড করে। মডিউল এটি নিজেই দুটি যাচাই করা মান থেকে তৈরি করে; SignalHost যা পাঠায় তার কিছুই কখনো স্ক্রিপ্ট হিসেবে প্রিন্ট হয় না। ওই পেজগুলোতে একটি ক্যাশ ট্যাগ থাকে, তাই লোডার বদলালেই পেজ ক্যাশ রিফ্রেশ হয়, আপনি সংযুক্ত করার আগে ক্যাশ হওয়া পেজগুলোসহ।
- প্রতি ঘণ্টায় একবার, একটি রেসপন্স পাঠানো হয়ে যাওয়ার পর, মডিউল হালনাগাদ থাকতে signalhost.io-র সঙ্গে যোগাযোগ করে। এটি পাঠায় শুধু মডিউল, Drupal ও PHP-এর সংস্করণ, আপনার সাইটের ঠিকানা আর আপনার হোম পেজে কোডটি পাওয়া গেছে কি না: কোনো ভিজিটর ডেটা নয়, কোনো কনটেন্ট নয়, কোনো ইউজার অ্যাকাউন্ট নয়। signalhost.io-তে পৌঁছানো না গেলে সাইট সর্বশেষ সঠিক কনফিগারেশন রেখে দেয়। এটি যা সংরক্ষণ করে, তার কিছুই কনফিগারেশন এক্সপোর্টের সঙ্গে যায় না।
প্রতিটি রিকোয়েস্ট ব্রাউজার থেকে এমন রূপে বের হয় যা অ্যাড ব্লকার চিনতে পারে না, আর আপনার ট্যাগিং সার্ভার সেটি Google Analytics 4-এ এবং কনটেইনার পেজে আপনার সেট আপ করা বিজ্ঞাপন প্ল্যাটফর্মগুলোতে ফরোয়ার্ড করে: Google Ads, Meta, TikTok ও অন্যান্য। ট্র্যাকিং Google Consent Mode-এর মাধ্যমে আপনার কুকি ব্যানারকে অনুসরণ করে; আপনার ব্যানারের কোড SignalHost-এর কোডের আগে বসান।
মডিউল ফর্ম বা অর্ডার পড়ে না, Drupal Commerce-এরটাও নয়। পেজ ভিউ নিজে থেকেই আসে; একটি পারচেজ বা লিড আপনার কনটেইনারে পৌঁছায় যখন আপনার সাইট সেটি ডেটা লেয়ারে পুশ করে।
আপনার নিজের ট্র্যাকিং ডোমেইন
আপনার কনটেইনার শুরু হয় signalhost.io-র অধীনের একটি ঠিকানায়। পেইড প্ল্যানে কনটেইনার পেজের “আপনার নিজের ডোমেইন সেট আপ করুন” আপনার প্রোভাইডারে একটি DNS রেকর্ড দিয়ে এটিকে আপনার নিজের সাইটের একটি সাবডোমেইনে, যেমন sgtm.yoursite.com-এ, সরিয়ে নেয়। সেই ঠিকানা ফিল্টার তালিকা এড়িয়ে টিকে থাকে এবং ক্লিক কুকিগুলোকে ফার্স্ট-পার্টি রাখে। এটি লাইভ হলে মডিউল তার পরবর্তী যোগাযোগে, সাধারণত এক ঘণ্টার মধ্যে, আপনার সাইটকে সেটিতে বদলে নেয়, আর ক্যাশ ট্যাগ আপনার ক্যাশ করা পেজগুলো রিফ্রেশ করে। হাতে কিছুই বদলাতে হয় না, আর ততক্ষণ পুরোনো ঠিকানা কাজ করতে থাকে।
হাতে SignalHost যোগ করা
কোডটি আপনি নিজেও পেস্ট করতে পারেন। কনটেইনার পেজে “আপনার সাইটে ইনস্টল করুন” কার্ডে আপনার স্নিপেটটি খুঁজে নিয়ে “কপি করুন” চাপুন। এটি প্রতিটি পেজের head-এ (Drupal-এ, আপনার থিমের মাধ্যমে) পেস্ট করুন, আপনার কুকি ব্যানারের স্ক্রিপ্টের ঠিক পরে, এবং “আমি এটি করেছি” চাপুন। “AI এজেন্টের জন্য কপি করুন” একই কাজটি একটি কোডিং এজেন্টের হাতে তুলে দেয়।
হাতে পেস্ট করলে মডিউল যা করে তা ছেড়ে দিতে হয়: কেউ আপনার হোম পেজ যাচাই করে না, সংযোগ বিচ্ছিন্ন করলে কেউ কোডটি সরায় না, আর আপনার নিজের ডোমেইন লাইভ হলে কোডটি আপনাকে নিজেই বদলাতে হয় — কার্ডের “আপনার ওয়েবসাইটের স্নিপেট আপডেট করুন” থেকে, অথবা ডোমেইনের খবর জানানো ইমেইল থেকে। কখনো দুটি পথ একসঙ্গে ব্যবহার করবেন না: দুটি কপি প্রতিটি ভিজিট দুবার গোনে।
আপডেট, পরিচালনা ও সংযোগ বিচ্ছিন্ন করা
আপডেট আসে Composer-এর মাধ্যমে, আর drupal.org-এর প্রতিটি মডিউলের মতোই Drupal-এর আপডেট স্ট্যাটাস নতুন রিলিজের খবর জানায়।
SignalHost পেজের “Disconnect” একবার জানতে চায়: “Disconnect this site from SignalHost?” নিশ্চিত করলে সাইটের প্রবেশাধিকার বাতিল হয়, প্রতিটি পেজ থেকে কোড সরে যায় এবং আপনার ক্যাশ করা পেজগুলো রিফ্রেশ হয়। আপনার কনটেইনার ও তার পরিসংখ্যান থেকে যায়, আর যেকোনো সময় আবার সংযুক্ত করতে পারেন।
signalhost.io-তে কনটেইনার পেজে লেখা থাকে “আপনার সাইটের Drupal মডিউল দিয়ে ইনস্টল করা”। এর “পরিচালনা করুন” বোতাম নিয়ে যায় সেটিংস › সংযুক্ত সাইট-এ, যেখানে “সংযোগ বিচ্ছিন্ন করুন”-ও কাজ করে: মডিউল তার পরবর্তী যোগাযোগে, সাধারণত এক ঘণ্টার মধ্যে, SignalHost লোড করা বন্ধ করে।
মডিউল আনইনস্টল করলেও সাইটের প্রবেশাধিকার বাতিল হয় এবং মডিউলের সংরক্ষিত সবকিছু মুছে যায়।
যখন কিছু কাজ করে না
- “Could not check (your server refused a request to itself)”: আপনার হোস্ট তার নিজের ঠিকানায় যাওয়া রিকোয়েস্ট আটকায়। এতে আপনার ভিজিটরদের সম্পর্কে কিছুই বোঝা যায় না; আপনার হোম পেজের সোর্সে আপনার ট্যাগিং ঠিকানাটি খুঁজুন।
- “An older copy is on the page”, অথবা “The code is on the page twice”: কোনো থিমে, ব্লকে বা অন্য কোনো মডিউলে হাতে একটি কপি পেস্ট করা হয়েছিল। সেটি সরিয়ে দিন; মডিউল বর্তমান কপিটি যোগ করে, আর দুটি কপি প্রতিটি ভিজিট দুবার গোনে।
- একটি নোটিশ যে আপনার সাইট আগে থেকেই Google-এর নিজস্ব স্নিপেট দিয়ে একটি Tag Manager কনটেইনার লোড করে: সেই স্নিপেটটি সরিয়ে দিন, কারণ এখন SignalHost কনটেইনারটি লোড করে, আর দুটো একসঙ্গে প্রতিটি ভিজিট দুবার গোনে। Google Tag Manager মডিউলের (google_tag) ক্ষেত্রেও একই কথা: যেকোনো একটি ব্যবহার করুন, দুটো একসঙ্গে নয়।
- “This site's address has changed since it was connected”: কোনো কপিতে, যেমন স্টেজিংয়ে, কিছুই পাঠানো হয় না। লাইভ সাইটটি সরে গিয়ে থাকলে সংযোগ বিচ্ছিন্ন করে আবার সংযুক্ত করুন।
- “Last update” পুরোনো: মডিউল যোগাযোগ করে পেজ রিকোয়েস্টের পরে, কখনো cron থেকে নয়। SignalHost পেজ খুললেও একবার যোগাযোগ হয়, আর “Check again” জোর করে একটি যোগাযোগ করায়।
- অন্য যেকোনো সমস্যা: আপনার সাইটের ঠিকানাসহ hello@signalhost.io-তে লিখুন।
ট্রেডমার্ক
SignalHost হলো Algorithmo GmbH-এর একটি স্বাধীন প্রোডাক্ট, এবং এটি Drupal প্রজেক্ট, Google, Meta বা TikTok-এর সঙ্গে সম্পৃক্ত নয় বা তাদের দ্বারা অনুমোদিত নয়। Google Analytics, Google Ads ও Google Tag Manager হলো Google LLC-এর ট্রেডমার্ক; Meta হলো Meta Platforms, Inc.-এর ট্রেডমার্ক; TikTok হলো ByteDance Ltd.-এর ট্রেডমার্ক; Drupal হলো Dries Buytaert-এর রেজিস্টার্ড ট্রেডমার্ক।

