JavaScript পরিমাপ স্নিপেটের শেষ লাইনটি Google Analytics-এ একটি পেজভিউ পাঠাতে ga()
কমান্ড কিউতে একটি send
কমান্ড যোগ করে:
ga('create', 'UA-XXXXX-Y', 'auto'); ga('send', 'pageview');
যে অবজেক্টটি সেন্ডিং করছে সেটি হল সেই ট্র্যাকার যা কোডের পূর্ববর্তী লাইনে তৈরির জন্য নির্ধারিত ছিল এবং যে ডেটা পাঠানো হয় সেটি হল সেই ট্র্যাকারে সংরক্ষিত ডেটা।
এই নির্দেশিকাটি Google Analytics-এ ডেটা পাঠানোর বিভিন্ন উপায় বর্ণনা করে এবং কীভাবে ডেটা পাঠানো হয় তা নিয়ন্ত্রণ করতে হয়।
হিট, হিটের প্রকার, এবং পরিমাপ প্রোটোকল
যখন একজন ট্র্যাকার Google Analytics-এ ডেটা পাঠায় তখন একে হিট পাঠানো বলা হয় এবং প্রতিটি হিটের একটি হিট টাইপ থাকতে হবে। Google Analytics ট্যাগ টাইপ pageview
একটি হিট পাঠায়; অন্যান্য হিট প্রকারের মধ্যে রয়েছে screenview
, event
, transaction
, item
, social
, exception
এবং timing
। এই নির্দেশিকাটি সমস্ত হিট ধরণের সাধারণ ধারণা এবং পদ্ধতিগুলির রূপরেখা দেয়৷ বাম-পাশের নেভিগেশনে সাধারণ ব্যবহারকারীর ইন্টারঅ্যাকশন পরিমাপ করা বিভাগের অধীনে প্রতিটি হিট টাইপের জন্য পৃথক নির্দেশিকা পাওয়া যাবে।
হিট হল একটি HTTP অনুরোধ, যেখানে ক্ষেত্র এবং মান জোড়া রয়েছে যা একটি ক্যোয়ারী স্ট্রিং হিসাবে এনকোড করা হয়েছে এবং পরিমাপ প্রোটোকলে পাঠানো হয়েছে।
আপনি যদি analytics.js ব্যবহার করে এমন একটি পৃষ্ঠা লোড করার সময় আপনার ব্রাউজারের ডেভেলপার টুল খোলা থাকে, তাহলে আপনি নেটওয়ার্ক ট্যাবে হিট পাঠানো দেখতে পাবেন। google-analytics.com/collect
পাঠানো অনুরোধগুলি দেখুন।
কি তথ্য পাঠানো হয়
পরিমাপ প্রোটোকলে একটি হিট পাঠানোর সময়, ট্র্যাকাররা বর্তমানে সঞ্চিত এবং বৈধ পরিমাপ প্রোটোকল পরামিতিগুলির সমস্ত ক্ষেত্র পাঠায়। উদাহরণস্বরূপ, title
এবং location
মত ক্ষেত্রগুলি পাঠানো হয় কিন্তু cookieDomain
এবং hitCallback
পাঠানো হয় না।
কিছু ক্ষেত্রে, আপনি বর্তমান হিটের জন্য Google Analytics-এ ক্ষেত্র পাঠাতে চান কিন্তু পরবর্তী কোনো হিটের জন্য নয়। এর একটি উদাহরণ হল একটি ইভেন্ট হিট যেখানে ইভেন্ট eventLabel
eventAction
শুধুমাত্র বর্তমান হিটের সাথে প্রাসঙ্গিক।
শুধুমাত্র বর্তমান হিট সহ ক্ষেত্রগুলি পাঠাতে, আপনি সেগুলি send
পদ্ধতিতে আর্গুমেন্ট হিসাবে পাস করতে পারেন। পরবর্তী সমস্ত হিট সহ ফিল্ড ডেটা পাঠানোর জন্য, আপনাকে set
পদ্ধতি ব্যবহার করে ট্র্যাকার আপডেট করতে হবে।
পাঠানোর পদ্ধতি
একটি ট্র্যাকারের send
পদ্ধতি সরাসরি ট্র্যাকার অবজেক্টে কল করা যেতে পারে বা ga()
কমান্ড কিউতে একটি send
কমান্ড যোগ করে। যেহেতু বেশিরভাগ সময় আপনার কাছে ট্র্যাকার অবজেক্টের রেফারেন্স থাকে না, তাই Google Analytics-এ ট্র্যাকার ডেটা পাঠানোর জন্য ga()
কমান্ড সারি ব্যবহার করা হল প্রস্তাবিত উপায়।
ga()
কমান্ড সারি ব্যবহার করে
ga()
কমান্ড সারিতে একটি send
কমান্ড যোগ করার জন্য স্বাক্ষরটি নিম্নরূপ:
ga('[trackerName.]send', [hitType], [...fields], [fieldsObject]);
উপরে উল্লিখিত হিসাবে, hitType
, ...fields
, এবং fieldsObject
প্যারামিটারের মাধ্যমে নির্দিষ্ট করা মানগুলি শুধুমাত্র বর্তমান হিটের জন্য পাঠানো হয়। এগুলি ট্র্যাকার অবজেক্টে সংরক্ষণ করা হয় না, বা পরবর্তী হিটগুলির সাথে পাঠানো হয় না৷
যদি send
কমান্ডের সাথে পাস করা কোনো ক্ষেত্র ইতিমধ্যেই ট্র্যাকার অবজেক্টে সেট করা থাকে, তাহলে কমান্ডে পাস করা মানগুলি ট্র্যাকারে সংরক্ষিত মানগুলির পরিবর্তে ব্যবহার করা হবে।
send
কমান্ডে কলের জন্য অবশ্যই একটি হিট টাইপ নির্দিষ্ট করতে হবে এবং নির্দিষ্ট ধরণের উপর নির্ভর করে অন্যান্য পরামিতিগুলিরও প্রয়োজন হতে পারে। আরও বিশদ বিবরণের জন্য বাম দিকের নেভিগেশনে সাধারণ ব্যবহারকারীর মিথস্ক্রিয়া পরিমাপের জন্য পৃথক নির্দেশিকাগুলি দেখুন।
send
কমান্ডটি ব্যবহার করার সবচেয়ে সহজ উপায়, যা সমস্ত হিট ধরনের জন্য কাজ করে, হল fieldsObject
প্যারামিটার ব্যবহার করে সমস্ত ক্ষেত্র পাস করা। উদাহরণ স্বরূপ:
ga('send', {
hitType: 'event',
eventCategory: 'Video',
eventAction: 'play',
eventLabel: 'cats.mp4'
});
সুবিধার জন্য, নির্দিষ্ট হিট প্রকারগুলি সাধারণত ব্যবহৃত ক্ষেত্রগুলিকে send
কমান্ডে আর্গুমেন্ট হিসাবে সরাসরি পাস করার অনুমতি দেয়। উদাহরণস্বরূপ, "ইভেন্ট" হিট টাইপের জন্য উপরের send
কমান্ডটি এইভাবে পুনরায় লেখা যেতে পারে:
ga('send', 'event', 'Video', 'play', 'cats.mp4');
বিভিন্ন হিট ধরণের আর্গুমেন্ট হিসাবে কোন ক্ষেত্রগুলি পাস করা যেতে পারে তার সম্পূর্ণ তালিকার জন্য, প্রেরণ পদ্ধতির রেফারেন্সের "প্যারামিটার" বিভাগটি দেখুন।
একটি নামযুক্ত ট্র্যাকার ব্যবহার করে
আপনি যদি ডিফল্ট ট্র্যাকারের পরিবর্তে একটি নামযুক্ত ট্র্যাকার ব্যবহার করেন তবে আপনি কমান্ড স্ট্রিং-এ এর নাম পাস করতে পারেন।
"myTracker" নামের ট্র্যাকারে নিম্নলিখিত send
কমান্ডটি কল করা হবে:
ga('myTracker.send', 'event', 'Video', 'play', 'cats.mp4');
ট্র্যাকার বস্তু নিজেই
যদি আপনার কাছে ট্র্যাকার অবজেক্টের একটি রেফারেন্স থাকে তবে আপনি সেই ট্র্যাকারের send
পদ্ধতিটিকে সরাসরি কল করতে পারেন:
ga(function(tracker) {
tracker.send('event', 'Video', 'play', 'cats.mp4');
});
হিট কবে পাঠানো হয়েছে জেনে
কিছু কিছু ক্ষেত্রে আপনাকে জানতে হবে কখন একটি হিট করা হয়েছে Google Analytics-এ পাঠানো হচ্ছে, যাতে আপনি পরে অবিলম্বে ব্যবস্থা নিতে পারেন। এটি সাধারণ যখন আপনি একটি নির্দিষ্ট ইন্টারঅ্যাকশন রেকর্ড করতে চান যা একজন ব্যবহারকারীকে বর্তমান পৃষ্ঠা থেকে দূরে নিয়ে যাবে। পৃষ্ঠাটি আনলোড করা শুরু হওয়ার সাথে সাথে অনেক ব্রাউজার জাভাস্ক্রিপ্ট চালানো বন্ধ করে দেয়, যার মানে হিট পাঠানোর জন্য আপনার analytics.js কমান্ডগুলি কখনই চলবে না।
এটির একটি উদাহরণ হল যখন আপনি একটি ইভেন্ট Google অ্যানালিটিক্সে পাঠাতে চান যে একজন ব্যবহারকারী ফর্মের জমা বোতামে ক্লিক করেছেন তা রেকর্ড করতে। বেশিরভাগ ক্ষেত্রে, সাবমিট বোতামে ক্লিক করলে পরের পৃষ্ঠাটি অবিলম্বে লোড হতে শুরু করবে এবং কোনো ga('send', ...)
কমান্ড চলবে না।
এর সমাধান হল পৃষ্ঠাটিকে আনলোড করা থেকে থামাতে ইভেন্টটিকে আটকানো। তারপরে আপনি যথারীতি আপনার হিটটি Google Analytics-এ পাঠাতে পারেন এবং একবার হিট পাঠানো হয়ে গেলে, আপনি প্রোগ্রামে ফর্মটি পুনরায় জমা দিতে পারেন৷
কলব্যাক হিট করুন
একটি হিট পাঠানো সম্পন্ন হলে বিজ্ঞপ্তি পেতে, আপনি hitCallback
ক্ষেত্র সেট করুন। hitCallback
একটি ফাংশন যা হিট সফলভাবে পাঠানোর সাথে সাথে কল করা হয়।
নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি ফর্মের ডিফল্ট সাবমিট অ্যাকশন বাতিল করতে হয়, Google Analytics-এ একটি হিট পাঠাতে হয় এবং তারপর hitCallback
ফাংশন ব্যবহার করে ফর্মটি পুনরায় জমা দিতে হয়:
// Gets a reference to the form element, assuming
// it contains the id attribute "signup-form".
var form = document.getElementById('signup-form');
// Adds a listener for the "submit" event.
form.addEventListener('submit', function(event) {
// Prevents the browser from submitting the form
// and thus unloading the current page.
event.preventDefault();
// Sends the event to Google Analytics and
// resubmits the form once the hit is done.
ga('send', 'event', 'Signup Form', 'submit', {
hitCallback: function() {
form.submit();
}
});
});
টাইমআউট হ্যান্ডলিং
উপরের উদাহরণটি সুন্দরভাবে কাজ করে, তবে এটির একটি গুরুতর সমস্যা রয়েছে। যদি (যে কোন কারণেই হোক) analytics.js লাইব্রেরি লোড করতে ব্যর্থ হয়, hitCallback
ফাংশন কখনই চলবে না। এবং যদি hitCallback
ফাংশন কখনও না চলে, ব্যবহারকারীরা কখনই ফর্ম জমা দিতে পারবেন না৷
যখনই আপনি hitCallback
ফাংশনের ভিতরে সমালোচনামূলক সাইট কার্যকারিতা রাখেন, তখনই analytics.js লাইব্রেরি লোড হতে ব্যর্থ হয় এমন ক্ষেত্রে পরিচালনা করতে আপনার সর্বদা একটি টাইমআউট ফাংশন ব্যবহার করা উচিত।
পরবর্তী উদাহরণ একটি টাইমআউট ব্যবহার করতে উপরের কোড আপডেট করে। ব্যবহারকারী সাবমিট বোতামে ক্লিক করার পর যদি এক সেকেন্ড চলে যায় এবং hitCallback
চালু না হয়, তবে ফর্মটি আবার জমা দেওয়া হবে।
// Gets a reference to the form element, assuming // it contains the id attribute "signup-form". var form = document.getElementById('signup-form'); // Adds a listener for the "submit" event. form.addEventListener('submit', function(event) { // Prevents the browser from submitting the form // and thus unloading the current page. event.preventDefault(); // Creates a timeout to call `submitForm` after one second. setTimeout(submitForm, 1000); // Keeps track of whether or not the form has been submitted. // This prevents the form from being submitted twice in cases // where `hitCallback` fires normally. var formSubmitted = false; function submitForm() { if (!formSubmitted) { formSubmitted = true; form.submit(); } } // Sends the event to Google Analytics and // resubmits the form once the hit is done. ga('send', 'event', 'Signup Form', 'submit', { hitCallback: submitForm }); });
আপনি যদি আপনার সাইট জুড়ে অনেক জায়গায় উপরের প্যাটার্নটি ব্যবহার করেন, তাহলে টাইমআউট পরিচালনা করার জন্য একটি ইউটিলিটি ফাংশন তৈরি করা সম্ভবত সহজ।
নিম্নলিখিত ইউটিলিটি ফাংশন ইনপুট হিসাবে একটি ফাংশন গ্রহণ করে এবং একটি নতুন ফাংশন প্রদান করে। যদি প্রত্যাবর্তিত ফাংশনটি টাইমআউট পিরিয়ডের আগে কল করা হয় (ডিফল্ট টাইমআউট এক সেকেন্ড), এটি টাইমআউট সাফ করে এবং ইনপুট ফাংশনকে আহ্বান করে। যদি প্রত্যাবর্তিত ফাংশনটি সময়সীমার আগে কল করা না হয়, ইনপুট ফাংশন নির্বিশেষে বলা হয়।
function createFunctionWithTimeout(callback, opt_timeout) {
var called = false;
function fn() {
if (!called) {
called = true;
callback();
}
}
setTimeout(fn, opt_timeout || 1000);
return fn;
}
এখন আপনি সহজেই সমস্ত hitCallback
ফাংশনগুলিকে একটি টাইমআউটের সাথে মোড়ানো করতে পারেন যাতে আপনার সাইটটি আশানুরূপভাবে কাজ করে এমন কি এমন ক্ষেত্রেও যেখানে আপনার হিটগুলি পাঠাতে ব্যর্থ হয় বা analytics.js লাইব্রেরি কখনই লোড হয় না৷
// Gets a reference to the form element, assuming // it contains the id attribute "signup-form". var form = document.getElementById('signup-form'); // Adds a listener for the "submit" event. form.addEventListener('submit', function(event) { // Prevents the browser from submitting the form // and thus unloading the current page. event.preventDefault(); // Sends the event to Google Analytics and // resubmits the form once the hit is done. ga('send', 'event', 'Signup Form', 'submit', { hitCallback: createFunctionWithTimeout(function() { form.submit(); }) }); });
বিভিন্ন পরিবহন ব্যবস্থা নির্দিষ্ট করা
ডিফল্টরূপে, analytics.js এইচটিটিপি পদ্ধতি এবং পরিবহন ব্যবস্থা বেছে নেয় যার সাহায্যে সর্বোত্তমভাবে হিট পাঠানো যায়। তিনটি বিকল্প হল 'image'
(একটি Image
অবজেক্ট ব্যবহার করে), 'xhr'
(একটি XMLHttpRequest
অবজেক্ট ব্যবহার করে), অথবা 'beacon'
নতুন navigator.sendBeacon
পদ্ধতি ব্যবহার করে।
পূর্ববর্তী দুটি পদ্ধতি পূর্ববর্তী বিভাগে বর্ণিত সমস্যাটি ভাগ করে (যেখানে পৃষ্ঠাটি আনলোড করা হলে প্রায়শই হিট পাঠানো হয় না)। বিপরীতভাবে, navigator.sendBeacon
পদ্ধতিটি এই সমস্যা সমাধানের জন্য তৈরি একটি নতুন HTML বৈশিষ্ট্য।
যদি আপনার ব্যবহারকারীর ব্রাউজার navigator.sendBeacon
সমর্থন করে, তাহলে আপনি transport
ব্যবস্থা হিসাবে 'beacon'
নির্দিষ্ট করতে পারেন এবং একটি হিট কলব্যাক সেট করার বিষয়ে চিন্তা করতে হবে না।
নিম্নলিখিত কোডটি এটি সমর্থন করে এমন ব্রাউজারগুলিতে পরিবহন ব্যবস্থাকে 'beacon'
এ সেট করে।
ga('create', 'UA-XXXXX-Y', 'auto');
// Updates the tracker to use `navigator.sendBeacon` if available.
ga('set', 'transport', 'beacon');
পরবর্তী পদক্ষেপ
নির্দিষ্ট ধরনের ব্যবহারকারীর মিথস্ক্রিয়া পরিমাপ করতে কখনও কখনও জটিল বাস্তবায়নের প্রয়োজন হতে পারে। যাইহোক, অনেক ক্ষেত্রে এই বাস্তবায়নগুলি ইতিমধ্যেই তৈরি করা হয়েছে এবং analytics.js প্লাগইন হিসাবে উপলব্ধ করা হয়েছে। পরবর্তী গাইড ব্যাখ্যা করে কিভাবে ga()
কমান্ড সারি দিয়ে analytics.js প্লাগইন ব্যবহার করতে হয়।