Event Tracking در برنامه‌های موبایل: چیست، انواع رویدادها و چگونه تنظیم کنیم

نویسنده: IT Sectr منتشر شده: 2026-04-21 زمان مطالعه: 11 دقیقه

Event Tracking — جمع‌آوری و تحلیل رویدادهای مربوط به اقدامات کاربر در داخل پروگرام موبایل، از کلیک کردن دکمه‌ها تا انجام خرید، است. Event tracking باکیفیت اساس تحلیل محصول، آزمایش‌های A/B و شخصی‌سازی است. به گزارش Amplitude, 2024، تیم‌هایی که از Event Tracking سیستماتیک استفاده می‌کنند، به دلیل رویکرد data-driven، تصمیمات محصولی را 3 برابر سریع‌تر اتخاذ می‌کنند. بدون رویدادها، تحلیل پروگرام کور است.

نکات کلیدی

  • Event Tracking — جمع‌آوری داده‌های اقدامات کاربر، هر اقدام با نام رویداد و پارامترها توصیف می‌شود.
  • انواع رویدادها به اتوماتیک (SDK)، سفارشی (توسعه‌دهنده) و revenue-رویدادها تقسیم می‌شوند.
  • نام‌گذاری رویدادها باید از یک استاندارد واحد پیروی کند — Object + Action (مثلاً product_added_to_cart).
  • پارامترهای رویداد شامل کنتکست هستند: قیمت، دسته‌بندی محصول، منبع بازدید.
  • پلتفرم‌ها برای Event Tracking: Firebase Analytics، Amplitude، Mixpanel، Segment.

Event Tracking چیست؟

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)

SDK پلتفرم‌های تحلیلی به‌طور خودکار رویدادهای پایه را جمع‌آوری می‌کنند: app_install، app_remove، session_start، screen_view. Firebase Analytics حدود 20 رویداد اتوماتیک بدون هیچ کدی تولید می‌کند. این رویدادها متریک‌های پایه را پوشش می‌دهند، اما منجر به درک منطق کسب‌وکار نمی‌شوند.

رویدادهای سفارشی (Custom Events)

رویدادهای سفارشی — آنچه Event Tracking را ارزشمند می‌کند. آنها اقدامات کسب‌وکاری را توصیف می‌کنند: add_to_cart، start_subscription، level_complete، share_content، search_performed. رویدادهای سفارشی نیازمند ارسال صریح از کد پروگرام هستند.

kotlin
// ارسال رویداد سفارشی به Firebase
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.

User Properties و Super Properties

علاوه بر رویدادها، Event Tracking شامل User Properties — ویژگی‌هایی است که به کاربر نسبت داده می‌شود: سطح اشتراک، کشور، نسخه پروگرام. User Property یک بار ارسال شده و برای همه رویدادهای بعدی جلسه اعمال می‌شود. این امکان را فراهم می‌کند تحلیل را بدون افزودن پارامتر به هر رویداد بخش‌بندی کنیم.

Super Properties (Amplitude) یا Global Properties (Mixpanel) — ویژگی‌هایی هستند که به جلسه نسبت داده می‌شوند، نه به کاربر. برای آزمایش‌های A/B استفاده می‌شوند: variant_id به عنوان Super Property به تمامی رویدادهای جلسه اضافه می‌شود و تحلیلگر می‌بیند کاربر به کدام گروه تعلق دارد.

Revenue-رویدادها

Revenue-رویدادها — کلاس جداگانه‌ای برای ثبت تراکنش‌هاستند. آنها شامل مبلغ، ارز و نوع خرید (اشتراک، خرید یکباره، بازگردانی) هستند. پلتفرم‌های MMP (AppsFlyer، Adjust) برای محاسبه ROAS به revenue-رویدادها نیاز دارند.

به گزارش Branch (2024)، پروگرام‌هایی که revenue-رویدادها را به طور صحیح به MMP ارسال می‌کنند، 25% دقیق‌تر داده‌های اسناد را دریافت می‌کنند و می‌توانند کمپین‌ها را بر اساس LTV بهینه‌سازی کنند، نه CPI.

چگونه Event Tracking را راه‌اندازی کنیم؟

راه‌اندازی Event Tracking شامل سه مرحله است: طراحی شماتل رویدادها، ادغام SDK، اعتبارسنجی داده‌ها.

مرحله 1: طراحی شماتل رویداد

Event Taxonomy — سندی ایجاد کنید که در آن هر رویداد توصیف شده است: نام، پارامترها، تریگر ارسال، مالک. مثال برای تجارت الکترونیکی: order_completed → پارامترها: order_id، total_price، items_count، payment_method، shipping_city.

  • هر رویداد به این سوال پاسخ می‌دهد: کاربر چه کاری انجام داد؟
  • هر پارامتر به این سوال پاسخ می‌دهد: در چه کنتکستی؟
  • از رویدادهای بدون پارامتر خودداری کنید — آنها برای تحلیل بی‌فایده هستند

مرحله 2: ادغام SDK

Analytics SDK را به پروژه متصل کنید. Firebase Analytics، Amplitude، Mixpanel — هر SDK نیازمند اهلیازسازی در Application.onCreate() است. مثال برای Flutter:

dart
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 برسد، اما ساختار به دلیل گروه‌بندی بر اساس ویژگی‌ها خوانا باقی می‌ماند.

مرحله 3: اعتبارسنجی از طریق DebugView

Firebase DebugView به شما امکان می‌دهد رویدادها را در دستگاه توسعه‌دهنده به صورت بلافاصله مشاهده کنید. حالت را فعال کنید: adb shell setprop debug.firebase.analytics.app your.package. همه رویدادها با کمتر از 5 ثانیه تاخیر در کنسول Firebase گزارش می‌شوند.

پس از فعال سازی DebugView، پروگرام را باز کرده و سناریو آزمایشی را انجام دهید — ثبت نام، خرید، مشاهده کاتالوگ. در کنسول بررسی کنید: آیا همه رویدادها ارسال شده‌اند؟ پارامترها صحیح هستند؟ تکراری وجود ندارد؟ Amplitude ابزار مشابهی را توصیه می‌کند — Amplitude Debugger برای iOS و Android.

اعتبارسنجی خودکار از طریق CI/CD — سطح بعدی کیفیت است. یک اسکریپت به پایپلاین اضافه کنید که بررسی کند آیا هر رویداد از شماتل حداقل یک بار در طول اجرای آزمایش ارسال شده است. این از انتشار نسخه‌هایی با رویدادهای از قلم افتاده جلوگیری می‌کند و در زمان مهندسان QA صرفه‌جویی می‌کند.

بهترین روش‌های نام‌گذاری رویدادها

نام‌گذاری رویدادها — کم‌ترین جنبه قدردانی شدهی Event Tracking است. نام نامناسب تحلیل را بی‌فایده می‌کند زمانی که در پروژه بیش از 50 رویداد وجود داشته باشد.

استاندارد Object + Action

از الگوی object_action (حروف کوچک، snake_case) استفاده کنید: product_added، cart_opened، payment_failed، subscription_cancelled. موضوع — واحد پیش، فعل — فعل در زمان گذشته. این مانند یک جمله خوانده می‌شود: «محصول اضافه شد»، «سبد خرید باز شد».

  • product_viewed، نه «tap_on_product_card» (رویداد — نتیجه، نه اقدام)
  • order_completed، نه «successful_payment_transaction» (کوتاه و واضح)
  • level_started، نه «begin_level_with_parameters» (بدون کلمات اضافی)

الگوهای ممنوع

استفاده نکنید از فاصله («Add to Cart»)، CamelCase («AddToCart»)، نقطه («add.to.cart»)، خط تیره («add-to-cart»). اکثر SDK ها snake_case را توصیه می‌کنند. از نام‌های عناصر UI («btn_submit_clicked») استفاده نکنید — رویداد باید کسب‌وکاری باشد، نه فنی.

برای prefix نام ویژگی یا صفحه را اضافه کنید: 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

انتخاب پلتفرم Event Tracking به مقیاس پروژه و تیم بستگی دارد. سه گزینه در سطوح مختلف را بررسی می‌کنیم.

Firebase Analytics (رایگان، تا 500 رویداد)

Firebase — انتخاب استاندارد برای ستارتاپ‌ها. حد رایگان — 500 event_name مختلف، تعداد محدودیت نداشته پارامتر. اتصال به BigQuery برای تحلیل سفارشی. معایب: بخش‌بندی محدود، عدم اتصال خودکار رویدادها در جلسه.

Amplitude (Pro از 1000 دلار در ماه)

Amplitude — پلتفرم تحلیل محصول است. از Behavioural Cohorts، Funnel Analysis، Pathfinder پشتیبانی می‌کند. امکان ایجاد رویدادهای مجازی از ترکیب رویدادهای واقعی را فراهم می‌کند. از طریق Segment با 50+ ابزار ادغام می‌شود.

Segment (از 120 دلار در ماه)

Segment — واسطه‌افزاری برای مدیریت رویدادها است. رویدادها را به Segment ارسال می‌کنید و آن آنها را بین 300+ ابزار توزیع می‌کند. در enterprise که همزمان از Firebase، Amplitude، Mixpanel، Braze و Salesforce استفاده می‌شود، مفید است.

PostHog (جایگزین open-source)

PostHog — پلتفرم تحلیل محصول با کد باز با Event Tracking خود است. از ثبت خودکار رویدادها، ضبط جلسات و feature flags پشتیبانی می‌کند. در سرور خود میزبانی می‌شود که برای پروژه‌های دارای GDPR یا داده‌های محرمانه حیاتی است. API مسازگار با Python برای خط‌لولی‌های ETL ارائه می‌دهد.

برای پروژه‌های Flutter flutterfire_analytics + افزونه amplitude_flutter توصیه می‌شود. برای 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 برای شخصی‌سازی استفاده کرد؟

بلی، Event Tracking اساس شخصی‌سازی است. رویدادها در زمان واقعی فیلتر می‌شوند: اگر کاربر product_viewed را 3 بار بدون خرید ارسال کرده باشد، پنجره تخفیف را نشان دهید. Amplitude و Braze از تریگرهای مبتنی بر رویداد پشتیبانی می‌کنند.

نتیجه گیری

  • Event Tracking — جمع‌آوری اقدامات گسسته کاربر با کنتکست (پارامترها، زمان مناسب، user_id).
  • انواع رویدادها: اتوماتیک (SDK)، سفارشی (منطق کسب‌وکار)، revenue (تراکنش‌ها).
  • نام‌گذاری — snake_case بر اساس استاندارد Object + Action.
  • راه‌اندازی شامل سه مرحله است: شماتل رویدادها، SDK، اعتبارسنجی DebugView.
  • پلتفرم‌ها: Firebase (رایگان)، Amplitude (Pro)، Segment (enterprise).
  • بهینه — 50–150 رویداد برای پروگرام.
  • رویدادهای آفلاین توسط SDK بافر می‌شوند و پس از بازگشت اتصال ارسال می‌شوند.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید