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"
}
}
]
}'