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