Tracking Events (ردیابی ایونت ها)
ردیابی دقیق ایونت ها برای درک رفتار کاربران، سنجش عملکرد کمپینها، و تحلیل عمیق دادهها در متریکس بسیار حیاتی است. شما میتوانید انواع مختلفی از ایونت ها را از طریق API به متریکس ارسال کنید، از جمله Action Events (ایونت های رفتاری)، Revenue Events (ایونت های درآمدی)، و Business Events (ایونت های بیزنس).
ساختار کلی ارسال ایونت ها
برای ارسال ایونت ها، شما باید یک درخواست POST به https://entry.metrix.ir/ ارسال کنید. ساختار کلی درخواست (شامل Header و Body) همانند بخش شروع به کار است.
داخل آرایه messages در بدنه درخواست، میتوانید یک یا چند پیام از انواع مختلف ایونت ها را قرار دهید. هر پیام باید دارای فیلدهای مشترک زیر باشد:
{
"type": "message type: action | revenue | businessEvent", // Specifies the message type
"id": "request id", // Randomly generated unique ID, e.g., a UUID
"time": 1677323951700 // Event occurrence timestamp in **milliseconds** (Long)
// ... other fields will vary depending on 'type'
}type: نوع پیام را مشخص میکند (action,revenue,businessEvent).id: یک شناسه یکتا و تصادفی برای هر پیام (مثلاً UUID) که برای جلوگیری از ارسال دادههای تکراری استفاده میشود.time: زمان وقوع ایونت به صورت Unix Timestamp در میلیثانیه و از نوع عددی (Long).
۱. ارسال Action Events (ایونت های رفتاری)
Action Events برای ردیابی تعاملات و اقدامات مشخص کاربران در اپلیکیشن یا وبسایت شما استفاده میشوند. این ایونت ها به شما در درک عادات و مسیرهای کاربری کمک میکنند.
- پارامتر
typeراactionتعریف کنید.
ساختار یک پیام action:
{
"type": "action",
"id": "random_generated_uuid",
"time": 1677323951700,
"name": "aewqd", // Example: 'aewqd' (a 5-character slug)
"customName": "product_viewed", // Example: 'product_viewed'. Either 'name' OR 'customName' must be provided.
"attributes": {
"key1": "value1", // String
"key2": 123, // Integer
"key3": true, // Boolean
"key4": 1.555, // Double/Float
"key5": "2024-11-20T11:24:03.000Z", // Date (ISO 8601 String)
"key6": { "nested_key": "nested_value" }, // JSON Object
"key7": ["item1", "item2"] // JSON Array
}
}توضیح فیلدهای name و customName:
در متریکس، شما میتوانید ایونت ها را به دو روش نامگذاری کنید:
name(Slug):- این یک شناسه کوتاه و یکتا است که معمولاً شامل ۵ کاراکتر (مثل
aewqdیاu37xw) است. اینslugبرای ایونت هایی استفاده میشود که از قبل در پنل متریکس شما تعریف و ثبت شدهاند. استفاده ازnameبه شما اطمینان میدهد که دادههای ایونت شما به تعریف دقیق و از پیش تعیین شده در پنل متصل میشوند. اگر قصد دارید از ویژگیهای پیشرفتهتر متریکس برای ایونت ها استفاده کنید که نیاز به تعریف در پنل دارند (مانند تنظیم قیفهای تبدیل دقیق)، استفاده ازnameضروری است.
- این یک شناسه کوتاه و یکتا است که معمولاً شامل ۵ کاراکتر (مثل
customName:- این یک نام توصیفی و خواناتر برای ایونت شما است (مثال:
product_viewedیاlogin_succeeded).customNameانعطافپذیری بیشتری به شما میدهد، چرا که اگر ایونت ی با اینcustomNameاز قبل در متریکس تعریف نشده باشد، به صورت خودکار ایجاد میشود. این گزینه برای شروع سریع یا زمانی که نیاز به ردیابی طیف وسیعی از ایونت ها بدون تعریف قبلی در پنل دارید، بسیار مفید است. توصیه میشود برایcustomNameاز الگویobject_verb(مثال:course_published,user_registered) استفاده شود تا با Taxonomy و قواعد نامگذاری متریکس همخوانی داشته باشد و تحلیل دادهها را آسانتر کند.
- این یک نام توصیفی و خواناتر برای ایونت شما است (مثال:
نکته مهم: یکی از فیلدهای name یا customName باید در هر پیام ایونت action، revenue یا businessEvent ارائه شود. شما نمیتوانید هر دو را همزمان ارسال کنید.
توضیح فیلد attributes:
attributes: (اختیاری) یک آبجکت JSON که شامل جزئیات و زمینههای اضافی مربوط به ایونت است. اینattributesمیتوانند از انواع دادهای مختلفی باشند:- String:
"key": "value" - Integer:
"key": 123 - Boolean:
"key": true - Double/Float:
"key": 1.555 - Date: تاریخها را با فرمت ISO 8601 به صورت رشته ارسال کنید (مثال:
"2024-11-20T11:24:03.000Z") تا متریکس آن را به عنوان یک تاریخ شناسایی کند. - JSON Object:
"key": { "nested_key": "nested_value" } - JSON Array:
"key": ["item1", "item2"]
- String:
۲. ارسال Revenue Events (ایونت های درآمدی)
Revenue Events برای ثبت تراکنشهای مالی و درآمدزایی حاصل از کاربران شما استفاده میشوند. این ایونت ها به شما در تحلیل ارزش طول عمر مشتری (LTV) و عملکرد مالی کمک میکنند.
- پارامتر
typeراrevenueتعریف کنید. - نکته مهم: Revenue Events از فیلد
attributesپشتیبانی نمیکنند.
ساختار یک پیام revenue:
{
"type": "revenue",
"id": "random_generated_uuid",
"time": 1677323951700,
"name": "aewqd", // Example: 'aewqd'
"customName": "order_completed", // Example: 'order_completed'. Either 'name' OR 'customName' must be provided.
"revenue": 53.7, // Mandatory: The amount of revenue as a Double
"currency": "IRR" // Mandatory: The currency code (e.g., "IRR", "USD", "EUR")
}توضیح فیلدها:
name: (اختیاری) یکslugبرای ایونت درآمدی.customName: (اختیاری) یک نام توصیفی برای ایونت درآمدی.- نکته مهم: یکی از فیلدهای
nameیاcustomNameباید ارائه شود. revenue: (الزامی) مقدار درآمد حاصل از ایونت به صورت عددی (Double).currency: (الزامی) کد واحد پول بر اساس استاندارد ISO 4217 (مثال:"IRR","USD","EUR").
۳. ارسال Business Events (ایونت های بیزنس)
Business Events به شما امکان میدهند تا اتفاقات مهمی را که در سیستمهای بکاند (Backend Systems) شما رخ میدهند و لزوماً از تعامل مستقیم کاربر با اپلیکیشن یا وبسایت ناشی نمیشوند، ردیابی کنید. این ایونت ها میتوانند تأثیر زیادی بر روی کاربران یا فرآیندهای کسبوکار شما داشته باشند.
- پارامتر
typeراbusinessEventتعریف کنید. - نکته مهم: برای
businessEvent، فیلدهایcustomUserIdیاmetrixUserIdدر بدنه اصلی درخواست الزامی نیستند، زیرا این ایونت ها ممکن است مستقیماً به یک کاربر خاص مرتبط نباشند.
ساختار یک پیام businessEvent:
{
"type": "businessEvent",
"id": "random_generated_uuid",
"time": 1677323951700,
"name": "aewqd", // Example: 'aewqd'
"customName": "course_published", // Example: 'course_published'. Either 'name' OR 'customName' must be provided.
"attributes": {
"course_id": "C_WEBDEV201",
"course_title": "Full-Stack Web Development",
"instructor_name": "Dr. Sarah Johnson",
"publish_date": "2024-06-17T18:00:00.000Z",
"category": "Programming"
}
}توضیح فیلدها:
type: بایدbusinessEventباشد.name: (اختیاری) یکslugبرای ایونت بیزنس.customName: (اختیاری) یک نام توصیفی برای ایونت بیزنس.- نکته مهم: یکی از فیلدهای
nameیاcustomNameباید ارائه شود. attributes: (اختیاری) یک آبجکت JSON شامل کلید-مقدار برای ارائه جزئیات بیشتر در مورد ایونت . همانندaction events، اینattributesنیز میتوانند از انواع دادهای مختلفی باشند.
۴. نمونه دستور Curl برای انواع ایونت ها
مثال زیر نحوه ارسال همزمان یک ایونت درآمدی و یک ایونت رفتاری را با استفاده از دستور curl نشان میدهد:
curl --location 'https://entry.metrix.ir/' \
--header 'content-type: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'x-application-id: YOUR_APP_ID' \
--data-raw '{
"customUserId": "john.doe@example.com",
"metrixUserId": "7d5dbfbf-8ff9-44db-be79-953d2c1d7d6f",
"messages": [
{
"type": "revenue",
"id": "f0a4207b-4460-4abf-9fe9-de6b6263024d",
"time": 1746273261969,
"customName": "course_purchase_completed",
"revenue": 199.99,
"currency": "USD"
},
{
"type": "action",
"id": "acc89899-2018-4881-a5d8-bad3a9c31bbb",
"time": 1677323951700,
"customName": "video_lesson_watched",
"attributes": {
"lesson_id": "L2345",
"course_name": "Advanced Python",
"duration_minutes": 15
}
}
]
}'نمونه دستور Curl برای Business Event:
این مثال نشان میدهد که چگونه یک businessEvent را بدون نیاز به شناسههای کاربر در بدنه اصلی درخواست ارسال کنید، زیرا این ایونت مستقیماً به یک کاربر خاص مرتبط نیست:
curl --location 'https://entry.metrix.ir/' \
--header 'content-type: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'x-application-id: YOUR_APP_ID' \
--data-raw '{
"messages": [
{
"type": "businessEvent",
"id": "5527cea4-2fb2-4781-b716-c259681408ec",
"time": 1733830178000,
"customName": "course_published",
"attributes": {
"course_id": "C_WEBDEV201",
"course_title": "Full-Stack Web Development",
"instructor_name": "Dr. Sarah Johnson",
"publish_date": "2024-06-17T18:00:00.000Z",
"category": "Programming"
}
}
]
}'