دليل تعلّم Amplitude
في نهاية هذا الفصل
  • ستعرف الحقول التي يجب أن يتضمّنها صف خطة التتبّع.
  • ستضع قاعدة تسمية متّسقة.
  • ستبني دورة تتحقق من الخطة قبل الإطلاق وتحميها بعده.

لماذا تأتي الخطة أولًا؟

في المشاريع غير المنضبطة يزداد عدد أسماء الـ events مع الوقت، بينما لا يزداد عدد الأسئلة. يصل الفعل نفسه بثلاثة أسماء، ويظهر كل منها منفصلًا في المخططات، ولا أحد يعرف أيّها الصحيح.

عدد أسماء الـ events المختلفة شهرًا بشهر. بيانات تجريبية في المشروع بلا خطة، يضيف كل إصدار أسماء جديدة (اختلافات إملائية، اختلافات بين المنصات، events تجريبية). في المشروع ذي الخطة لا يزداد العدد إلا عند ظهور سؤال جديد.

دورة الخطة

كل event جديد يبدأ بسؤال ويعود إلى الدورة عبر المراقبة السؤالأي قرار؟ الخطةevent + خصائص التطويرSDK / API التحققمشروع تجريبي الإطلاقمفتاح الإنتاج المراقبةevents خارج الخطة؟ عُد إلى الخطة عند الخطأ سؤال جديد أو بيانات خارج الخطة
هل الخطأ الذي يُكتشف في التحقق يُصلح الخطة أم الكود؟ إذا كانت الخطة خاطئة فارجع إلى الخطة، وإذا كان الكود خاطئًا فارجع إلى التطوير. تبقى الخطة دائمًا المصدر الوحيد للحقيقة.

ماذا يتضمّن صف الخطة؟

الحقلمثاللماذا هو ضروري
اسم الـ eventCheckout Completedاسم واحد في كل المنصات
لحظة الإطلاقعند ظهور شاشة تأكيد الدفع لأول مرة، مرة واحدة لكل طلبليقصد المطوّر والمحلّل اللحظة نفسها
المصدرالخادم (HTTP API)، بعد تحقّق الـ backend من الدفعيمنع العدّ المزدوج
Event propertiesorder_id نص، revenue رقم، currency نص (ISO 4217)تثبيت النوع والصيغة
User properties المحدّثةorders_count add 1يمنع أخطاء الترتيب
المنصاتiOS، Android، الويبتظهر المنصة الناقصة
السؤال الذي يخدمهالتحويل من السلة إلى الدفع، تحليل الإيراداتتُستبعد الـ events غير الضرورية
المقابل في AdjustEvent token abc123 (S2S)يُتابَع الاتساق بين الأداتين

قاعدة التسمية

القاعدة التي تختارها أقل أهمية من اختيار قاعدة واحدة. خيار شائع وواضح: أسماء الـ events بصيغة الكائن + فعل ماضٍ بأحرف Title Case (Product Viewed)، وأسماء الخصائص بصيغة snake_case (product_id).

فعل واحد، ثلاثة events

  • product_view (Android)
  • ProductView (iOS)
  • viewed product (الويب)
  • Product Viewed - Shoes، Product Viewed - Bags (الفئة داخل الاسم)

Event واحد، خصائص غنية

  • Product Viewed في كل المنصات
  • category: "shoes" كخاصية
  • قائمة قيم ثابتة: shoes، bags، accessories
  • المنصة تأتي تلقائيًا من الـ SDK ولا تُكرَّر في الاسم
نصيحة

مبدأ "events قليلة وخصائص غنية" يسهّل بناء المخططات أيضًا: "مشاهدات المنتجات حسب الفئة" تقسيم واحد في مخطط واحد. أما مع event لكل فئة، فكل فئة جديدة تعني تعديلًا في الكود ومخططًا جديدًا.

مثال على خطة: تطبيق تجارة إلكترونية

Eventلحظة الإطلاقالمصدرEvent propertiesأثره على user property
Onboarding Step Viewedعند ظهور كل شاشة onboardingSDKstep_number رقم، step_name نص–
Signup Completedعند إنشاء الحسابSDKmethod نصsignup_date setOnce
Search Performedعند عرض نتائج البحثSDKquery_length رقم، results_count رقم–
Product Viewedعند فتح شاشة تفاصيل المنتجSDKproduct_id، category، price رقم، source نص–
Product Added to Cartعند نجاح الإضافة إلى السلةSDKproduct_id، category، price، quantity–
Checkout Startedعند فتح شاشة الدفعSDKcart_value رقم، items_count رقم–
Checkout Completedعند التحقق من الدفع في الـ backendHTTP APIorder_id، revenue، currency، payment_methodorders_count add 1
Push Openedعند النقر على الإشعارSDKcampaign_id نص–
Subscription Startedعند التحقق من أول اشتراكHTTP APIplan، period، revenueplan set (قبل الـ event)
Subscription Renewedعند وصول إشعار التجديد من المتجرHTTP APIplan، period، revenue–

خصائص مثل source (من أين وصل المستخدم إلى المنتج: البحث، الصفحة الرئيسية، الإشعار) تقوّي تحليل الـ funnel والمسارات كثيرًا. السؤال الذي يجب طرحه أثناء كتابة الخطة: "وفق أي أبعاد سأرغب في تقسيم هذا الـ event؟"

قائمة التحقق

قبل كل إصدار جديد، تُجرى هذه الفحوص في المشروع التجريبي:

  • اسم الـ event مطابق تمامًا لما في الخطة (بما في ذلك حالة الأحرف والمسافات).
  • كل الخصائص تصل وبأنواعها الصحيحة (الأرقام كأرقام، والـ boolean كـ boolean).
  • يُطلق الـ event في اللحظة المكتوبة في الخطة وبالعدد المتوقع (طلب واحد، event واحد).
  • تحديث الـ user property يحدث قبل الـ event أو بعده كما في الخطة.
  • user_id صحيح بعد تسجيل الدخول ويُعاد تعيينه بعد الخروج.
  • events الخادم ترتبط بالمستخدم الصحيح ولا تُعدّ مرتين عند إعادة الإرسال.
  • build الإنتاج يستخدم مفتاح الإنتاج، و build الاختبار يستخدم مفتاح الاختبار.
  • المقابل في Adjust للـ event نفسه يُطلق أيضًا (عند الحاجة).

تُمسح هذه المربعات عند إعادة تحميل الصفحة؛ انسخها إلى قائمتك الخاصة.

بعد الإطلاق: الحوكمة

ستصل بيانات خارج الخطة رغم ذلك: إصدارات قديمة، events تجريبية منسيّة، أخطاء إملائية. تتيح لك أدوات إدارة البيانات في Amplitude أربعة إجراءات:

الإجراءماذا يفعلمتى
الإخفاءيُخفي الـ event في الواجهة؛ وتبقى البياناتevents لم تعد مستخدمة لكن يجب حفظ تاريخها
الحظريوقف معالجة هذا الـ event مستقبلًاevents تجريبية أو معطوبة
الدمج / التحويليعرض أسماء مختلفة كـ event واحد في التحليلاختلافات إملائية تاريخية مثل product_view و Product Viewed
التحقق مقابل الخطةيعلّم الـ events والخصائص الخارجة عن الخطةمراقبة الجودة المستمرة
تحقّق

الأسماء الحالية لهذه الإجراءات في Amplitude، وأيّها يُطبَّق بأثر رجعي، وفي أي خطة تتوفر، قد تتغيّر. تحقّق خصوصًا مما إذا كان "الحظر" يمسّ البيانات التاريخية قبل إخبار العميل.

من جهة Adjust

في Adjust، قائمة الـ event tokens هي أصلًا خطة تتبّع طبيعية: لا يمكنك إرسال event بدون token. في Amplitude عليك أن تحافظ على هذه القائمة بنفسك. الطريقة الأكثر عملية هي حفظ events الأداتين في الجدول نفسه: عمود لاسم Amplitude وخصائصه، وعمود لـ token في Adjust ومعاملاته. بهذا يظهر فورًا أي event أُضيف في أداة ونُسي في الأخرى.

تمرين

انطلاقًا من قائمة events الحالية لأحد العملاء في Adjust، اكتب مسودة خطة تتبّع بالقالب أعلاه. املأ عمود "السؤال الذي يخدمه" لكل event. الـ events التي لا تستطيع ملء هذا العمود لها قد لا تستحق النقل إلى Amplitude.