Event Tracking হল মোবাইল অ্যাপ্লিকেশনের মধ্যে ইউজারের কার্যকলাপের ইভেন্ট সংগ্রহ এবং বিশ্লেষণ, বাটন ক্লিক থেকে ক্রয় সম্পাদন পর্যন্ত। গুণমান event tracking হল প্রডাক্ট অ্যানালিটিক্স, A/B পরীক্ষণ এবং ব্যক্তিকরণের ভিত্তি। Amplitude, 2024 অনুযায়ী, পদ্ধতিগত Event Tracking থাকা দলগুলি data-driven পদ্ধতিতে প্রডাক্ট সিদ্ধান্ত 3 গুণ দ্রুত নেয়। ইভেন্ট ছাড়া, অ্যাপ অ্যানালিটিক্স অন্ধ।
মূল বিষয়সমূহ
Event Tracking হল অ্যাপ্লিকেশনে ইউজারের পৃথক কার্যকলাপ সংগ্রহ, সংরক্ষণ এবং বিশ্লেষণের প্রক্রিয়া। প্রতিটি ইভেন্ট একটি নাম (event_name) এবং প্যারামিটারের একটি সেট (event_params) নিয়ে গঠিত। উদাহরণস্বরূপ, purchase ইভেন্টে price, currency, product_id, quantity প্যারামিটার রয়েছে।
Screen View-এর বিপরীতে, যা শুধু স্ক্রিন খোলার তথ্য রেকর্ড করে, Event Tracking বর্ণনা করে যে ইউজার ওই স্ক্রিনে ঠিক কী করছে: "ক্রয়" বাটনে ক্লিক করেছে, কার্ট খুলেছে, প্রোমো কোড প্রয়োগ করেছে। ইভেন্ট ছাড়া, ইউজারের প্রেরণা এবং কার্যকলাপের প্রসঙ্গ বোঝা অসম্ভব।
প্রতিটি Analytics Event-এ বাধ্যতামূলক এবং ঐচ্ছিক ফিল্ড থাকে। বাধ্যতামূলক: event_name, event_timestamp, user_id (বা device_id)। ঐচ্ছিক: প্রসঙ্গ বর্ণনাকারী প্যারামিটার।
| ফিল্ড | বাধ্যতামূলক | উদাহরণ |
|---|---|---|
| event_name | হ্যাঁ | "purchase_completed" |
| event_timestamp | হ্যাঁ | 1719876543000 |
| user_id | হ্যাঁ | "user_abc123" |
| session_id | না | "session_456def" |
| revenue | না | 9.99 |
| currency | না | "USD" |
revenue প্যারামিটারটি বিশেষভাবে গুরুত্বপূর্ণ — এটি ROAS এবং LTV-র স্বচালিত গণনার জন্য MMP প্ল্যাটফর্মে পাঠানো হয়।
ইভেন্টগুলি উৎপত্তি এবং উদ্দেশ্য অনুসারে শ্রেণীবদ্ধ করা হয়। এই বিভাজন ডাটা কাঠামো সংগঠিত করতে এবং বিভিন্ন দলের জন্য অ্যাক্সেস অধিকার নির্ধারণ করতে সাহায্য করে।
অ্যানালিটিক্স প্ল্যাটফর্মের SDK গুলি স্বচালিতভাবে মৌলিক ইভেন্ট সংগ্রহ করে: app_install, app_remove, session_start, screen_view। Firebase Analytics একটি লাইন কোড ছাড়াই প্রায় 20টি স্বচালিত ইভেন্ট জেনারেট করে। এই ইভেন্টগুলি মৌলিক মেট্রিক্স কভার করে, কিন্তু ব্যবসায়িক যুক্তি সম্পর্কে ধারণা দেয় না।
কাস্টম ইভেন্ট হল যা Event Tracking-কে মূল্যবান করে তোলে। তারা ব্যবসায়িক কার্যকলাপ বর্ণনা করে: add_to_cart, start_subscription, level_complete, share_content, search_performed। কাস্টম ইভেন্টের জন্য অ্যাপ্লিকেশন কোড থেকে স্পষ্টভাবে পাঠানোর প্রয়োজন হয়।
// ফায়ারবেসে কাস্টম ইভেন্ট পাঠানো
val bundle = Bundle().apply {
putString(AnalyticsParam.ITEM_ID, "prod_789")
putString(AnalyticsParam.ITEM_NAME, "Premium Subscription")
putString(AnalyticsParam.CURRENCY, "USD")
putDouble(AnalyticsParam.PRICE, 29.99)
putString(AnalyticsParam.SOURCE, "onboarding_screen")
}
FirebaseAnalytics.getInstance(this)
.logEvent("subscribe_premium", bundle)
উদাহরণে, subscribe_premium ইভেন্টে চারটি প্রসঙ্গ প্যারামিটার রয়েছে। source প্যারামিটারটি বুঝতে সাহায্য করে যে ইউজার কোন স্ক্রিন থেকে সাবস্ক্রাইব করেছে — অনবোর্ডিং, সেটিংস বা paywall।
ইভেন্ট ছাড়াও, Event Tracking-এ User Properties অন্তর্ভুক্ত — ইউজারের সাথে সংযুক্ত বৈশিষ্ট্য: সাবস্ক্রিপশন স্তর, দেশ, অ্যাপ সংস্করণ। User Property একবার পাঠানো হয় এবং সেশনের পরবর্তী সমস্ত ইভেন্টে প্রযোজ্য হয়। এটি প্রতিটি ইভেন্টে প্যারামিটার যোগ না করে অ্যানালিটিক্স সেগমেন্টেশনের অনুমতি দেয়।
Super Properties (Amplitude) বা Global Properties (Mixpanel) — ইউজারের পরিবর্তে সেশনের সাথে সংযুক্ত বৈশিষ্ট্য। এগুলি A/B পরীক্ষণের জন্য ব্যবহৃত হয়: variant_id একটি Super Property হিসাবে সেশনের সমস্ত ইভেন্টে যোগ করা হয়, এবং অ্যানালিস্ট দেখতে পারেন ইউজার কোন গ্রুপের অন্তর্ভুক্ত।
Revenue ইভেন্ট লেন-দেন রেকর্ড করার জন্য একটি পৃথক শ্রেণী। এগুলিতে পরিমাণ, মুদ্রা এবং ক্রয়ের ধরন (সাবস্ক্রিপশন, এককালীন ক্রয়, পুনরুদ্ধার) থাকে। MMP প্ল্যাটফর্ম (AppsFlyer, Adjust) ROAS গণনার জন্য revenue ইভেন্ট প্রয়োজন।
Branch (2024) অনুযায়ী, যে অ্যাপগুলি MMP-তে সঠিকভাবে revenue ইভেন্ট পাঠায়, তারা 25% বেশি নির্ভুল অ্যাট্রিবিউশন ডাটা পায় এবং CPI-এর পরিবর্তে LTV-র ভিত্তিতে ক্যাম্পেইন অপ্টিমাইজ করতে পারে।
Event Tracking সেটআপ তিনটি ধাপে সম্পন্ন হয়: ইভেন্ট স্কিমা পরিকল্পনা, SDK ইন্টিগ্রেশন এবং ডাটা বৈধতা।
একটি Event Taxonomy তৈরি করুন — একটি নথি যা প্রতিটি ইভেন্ট বর্ণনা করে: নাম, প্যারামিটার, ট্রিগার, মালিক। ই-কমার্সের উদাহরণ: order_completed → প্যারামিটার: order_id, total_price, items_count, payment_method, shipping_city।
প্রকল্পে Analytics SDK সংহত করুন। Firebase Analytics, Amplitude, Mixpanel — যেকোনো SDK-র Application.onCreate()-এ আরম্ভ করার প্রয়োজন। Flutter-এর উদাহরণ:
import 'package:firebase_analytics/firebase_analytics.dart';
class AnalyticsService {
final _analytics = FirebaseAnalytics.instance();
Future<void> logPurchase({
required String productId,
required double price,
required String currency,
}) async {
await _analytics.logEvent(
name: 'purchase_completed',
parameters: {
'product_id': productId,
'price': price,
'currency': currency,
'timestamp': DateTime.now().millisecondsSinceEpoch,
},
);
}
}
AnalyticsService ক্লাস সমস্ত ইভেন্ট পাঠানো কেন্দ্রীভূত করে। প্রতিটি পদ্ধতি একটি ব্যবসায়িক কার্যকলাপের সাথে মিলে যায়। এটি উৎস খুঁজে পাওয়া সহজ করে — যদি কোনো ইভেন্ট না আসে, কোডে পদ্ধতি নাম দিয়ে খুঁজুন। প্রকল্প বড় হওয়ার সাথে সাথে পদ্ধতির সংখ্যা 50–100 পর্যন্ত পৌঁছাতে পারে, কিন্তু ফিচার অনুসারে গ্রুপিংয়ের কারণে কাঠামো পাঠযোগ্য থাকে।
Firebase DebugView আপনাকে ডেভেলপার ডিভাইসে রিয়েল-টাইমে ইভেন্ট দেখতে দেয়। এটি সক্রিয় করুন: adb shell setprop debug.firebase.analytics.app your.package। সমস্ত ইভেন্ট Firebase কনসোলে 5 সেকেন্ডের কম বিলম্বে প্রদর্শিত হবে।
DebugView সক্রিয় করার পরে, অ্যাপ খুলুন এবং একটি পরীক্ষণ পরিস্থিতি চালান — নিবন্ধন, ক্রয়, ক্যাটালগ ব্রাউজিং। কনসোলে চেক করুন: সমস্ত ইভেন্ট পাঠানো হয়েছে কিনা, সঠিক প্যারামিটার পাঠানো হয়েছে কিনা, কোনো ডুপ্লিকেশন আছে কিনা। Amplitude iOS এবং Android-এর জন্য একটি অনুরূপ টুল অফার করে — Amplitude Debugger।
CI/CD-র মাধ্যমে স্বচালিত বৈধতা হল গুণমানের পরবর্তী স্তর। পাইপলাইনে একটি স্ক্রিপ্ট যোগ করুন যা পরীক্ষা করে যে স্কিমার প্রতিটি ইভেন্ট পরীক্ষণ চলাকালীন কমপক্ষে একবার পাঠানো হয়েছে। এটি অনুপস্থিত ইভেন্ট সহ সংস্করণ স্থাপন রোধ করে এবং QA ইঞ্জিনিয়ারদের সময় বাঁচায়।
ইভেন্ট নেমিং হল Event Tracking-এর সবচেয়ে অবমূল্যায়িত দিক। ভুল নাম প্রকল্পে 50টির বেশি ইভেন্ট থাকলে অ্যানালিটিক্সকে অকেজো করে দেয়।
object_action প্যাটার্ন (লোয়ারকেস, snake_case) ব্যবহার করুন: product_added, cart_opened, payment_failed, subscription_cancelled। অবজেক্ট হল সত্তা, অ্যাকশন হল অতীত কালের ক্রিয়া। এটি একটি বাক্যের মতো পড়া হয়: "পণ্য যোগ করা হয়েছে," "কার্ট খোলা হয়েছে।"
ব্যবহার করবেন না স্পেস ("Add to Cart"), CamelCase ("AddToCart"), ডট ("add.to.cart"), বা হাইফেন ("add-to-cart")। অধিকাংশ SDK snake_case সুপারিশ করে। UI এলিমেন্টের নাম ("btn_submit_clicked") ব্যবহার করবেন না — ইভেন্ট ব্যবসায়িক হওয়া উচিত, প্রযুক্তিগত নয়।
প্রিফিক্সের জন্য, ফিচার বা স্ক্রিনের নাম যোগ করুন: onboarding_step_completed, checkout_payment_selected। এটি রিপোর্টে কার্যকারিতা অনুসারে ইভেন্ট ফিল্টার করার অনুমতি দেয়।
প্যারামিটার তিন ধরনের হয়: string (মান), number (একত্রীকরণের জন্য সংখ্যা), boolean (ফ্ল্যাগ)। String প্যারামিটার শ্রেণীগত ডাটা ধারণ করে: দেশ, ট্রাফিক উৎস, পণ্যের নাম। Number প্যারামিটার মেট্রিক্সের জন্য কাজ করে: দাম, পরিমাণ, সময়কাল। Boolean প্যারামিটার অবস্থা নির্দেশ করে: is_trial, is_promo_applied।
একটি প্যারামিটারে অবজেক্ট বা অ্যারে পাঠানো এড়িয়ে চলুন — অ্যানালিটিক্স প্ল্যাটফর্ম সেগুলি পার্স করতে পারে না। একটি ফিল্ডে JSON স্ট্রিংয়ের পরিবর্তে, একাধিক ফ্ল্যাট প্যারামিটার পাঠান। উদাহরণস্বরূপ, items_count_total-এর পরিবর্তে, items_count এবং total_price আলাদাভাবে পাঠান।
Event Tracking প্ল্যাটফর্মের পছন্দ প্রকল্পের স্কেল এবং দলের উপর নির্ভর করে। আসুন বিভিন্ন স্তরের তিনটি বিকল্প দেখি।
Firebase স্টার্টআপের জন্য মানক পছন্দ। বিনামূল্যে সীমা — 500টি ভিন্ন event_name, সীমাহীন প্যারামিটার। কাস্টম অ্যানালিটিক্সের জন্য BigQuery-র সাথে ইন্টিগ্রেশন। অসুবিধা: সীমিত সেগমেন্টেশন, সেশনে ইভেন্টের স্বচালিত লিঙ্কিং নেই।
Amplitude প্রডাক্ট অ্যানালিটিক্সের জন্য একটি প্ল্যাটফর্ম। Behavioural Cohorts, Funnel Analysis, Pathfinder সমর্থন করে। বাস্তব ইভেন্টের সংমিশ্রণ থেকে ভার্চুয়াল ইভেন্ট তৈরি করার অনুমতি দেয়। Segment-এর মাধ্যমে 50+ টুলের সাথে ইন্টিগ্রেট করে।
Segment ইভেন্ট পরিচালনার জন্য মিডলওয়্যার। আপনি Segment-এ ইভেন্ট পাঠান, এবং এটি 300+ টুলে বিতরণ করে। এন্টারপ্রাইজ পরিবেশে দরকারী যেখানে Firebase, Amplitude, Mixpanel, Braze এবং Salesforce একসাথে ব্যবহার করা হয়।
PostHog একটি ওপেন-সোর্স প্রডাক্ট অ্যানালিটিক্স প্ল্যাটফর্ম যার নিজস্ব Event Tracking রয়েছে। ইভেন্টের স্বচালিত ক্যাপচার, সেশন রেকর্ডিং এবং ফিচার ফ্ল্যাগ সমর্থন করে। নিজস্ব সার্ভারে স্থাপন করা হয়, যা GDPR বা গোপনীয় ডাটা আছে এমন প্রকল্পের জন্য গুরুত্বপূর্ণ। ETL পাইপলাইনের জন্য Python-সঙ্গত API প্রদান করে।
Flutter প্রকল্পের জন্য, amplitude_flutter প্লাগিনের মাধ্যমে flutterfire_analytics + Amplitude সুপারিশ করা হয়। React Native-এর জন্য — react-native-firebase + mixpanel-react-native।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
সর্বোত্তম পরিসর হল প্রতি অ্যাপ্লিকেশনে 50–150 ইভেন্ট। 50-এর কম — বিশ্লেষণের জন্য পর্যাপ্ত ডাটা নেই, 150-এর বেশি — গুণমান কমে যায় (অ্যানালিস্টরা সবকিছুর সাথে তাল মেলাতে পারে না)। MVP-র জন্য 20–30টি মূল ইভেন্ট যথেষ্ট।
গড় মোবাইল SDK ইভেন্ট বাফার করে এবং প্রতি 5–30 সেকেন্ডে ব্যাচে পাঠায়। নিরাপদ সীমা হল প্রতি মিনিটে প্রতি ডিভাইসে 100 ইভেন্ট। এর বেশি — খারাপ সংযোগে ডাটা হারানোর ঝুঁকি। স্পাইক (যেমন, লেভেল লোডিং) গুরুতর নয়।
হ্যাঁ, আধুনিক SDK নেটওয়ার্ক না থাকলে ইভেন্টগুলি স্থানীয় স্টোরেজে সংরক্ষণ করে। সংযোগ পুনরুদ্ধার হলে, সঠিক টাইমস্ট্যাম্প সহ পাঠানো হয়। Firebase 7 দিন পর্যন্ত অফলাইন ইভেন্ট সংরক্ষণ করে, Amplitude — 30 দিন পর্যন্ত।
একটি নতুন event_name সহ একটি নতুন ইভেন্ট তৈরি করা হয়, পুরানোটির ঐতিহাসিক ডাটার জন্য থাকে। ডাটা মার্জ করার জন্য BI স্তরে (SQL CASE বা ড্যাশবোর্ড) একটি ম্যাপিং তৈরি করুন। কখনও বিদ্যমান ইভেন্টের নাম পরিবর্তন করবেন না — ইতিহাস ভেঙে যাবে।
হ্যাঁ, Event Tracking ব্যক্তিকরণের ভিত্তি। ইভেন্টগুলি রিয়েল-টাইমে ফিল্টার করা হয়: যদি কোনো ইউজার ক্রয় ছাড়া 3 বার product_viewed পাঠায়, তাহলে একটি ডিসকাউন্ট পপআপ দেখান। Amplitude এবং Braze ইভেন্ট-ভিত্তিক ট্রিগার সমর্থন করে।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন