Skip to Content
مستندات متریکس همواره در حال بهبود است! 🚀 آخرین به‌روزرسانی‌ها را از اینجا دنبال کنید.

ردیابی ایونت ها در Metrix

ایونت ها اقدامات یا تعاملاتی هستند که کاربران در وب‌سایت شما انجام می‌دهند. ردیابی ایونت ها به شما کمک می‌کند تا رفتار کاربران را درک کنید، تبدیل‌ها را اندازه‌گیری کنید و کمپین‌های بازاریابی خود را بهینه سازید. این راهنما نحوه ارسال ایونت های سفارشی به Metrix را با استفاده از PHP و JavaScript توضیح می‌دهد.

درک ایونت ها

یک ایونت هر عملی است که می‌خواهید ردیابی کنید، مانند:

  • بازدید از صفحات
  • کلیک روی دکمه‌ها
  • ارسال فرم‌ها
  • خرید محصول
  • پخش ویدئو
  • جستجوها
  • ثبت‌نام در حساب کاربری
  • تعاملات سفارشی کاربر

هر ایونت می‌تواند شامل ویژگی‌هایی (جفت‌های کلید-مقدار) باشد که زمینه اضافی در مورد اتفاق افتاده ارائه می‌دهد.

ایجاد ایونت ها در داشبورد Metrix

قبل از اینکه بتوانید ایونت ها را ردیابی کنید، باید آن‌ها را در داشبورد Metrix خود ایجاد کنید:

  1. به داشبورد Metrix خود وارد شوید
  2. به بخش ایونت ها (Events) بروید
  3. روی ایجاد ایونت جدید (Create New Event) کلیک کنید
  4. نام و اسلاگ ایونت را وارد کنید
  5. هر ویژگی‌ای را که می‌خواهید با این ایونت ردیابی کنید، تعریف کنید
  6. ایونت را ذخیره کنید

پس از ایجاد، می‌توانید ایونت را با اسلاگ یا نام آن در کد وردپرس خود فراخوانی کنید.


ارسال ایونت ها از طریق PHP (سمت سرور)

متدهای پایه ایونت

1. ارسال ایونت با اسلاگ

برای ارسال یک ایونت با استفاده از اسلاگ آن:

Metrix_SDK::new_event($slug);

پارامترها:

پارامترنوعتوضیحاتالزامی
$slugstringشناسه منحصر به فرد ایونت که در داشبورد Metrix ایجاد شده استبله

مثال:

<?php // ایونت ساده بدون ویژگی‌ها Metrix_SDK::new_event('page_visit'); ?>

2. ارسال ایونت با اسلاگ و ویژگی‌ها

برای ارسال یک ایونت با داده‌های اضافی:

Metrix_SDK::new_event($slug, $custom_attributes);

پارامترها:

پارامترنوعتوضیحاتالزامی
$slugstringشناسه منحصر به فرد ایونتبله
$custom_attributesarrayجفت‌های کلید-مقدار از داده‌های ایونتخیر

مثال:

<?php $attributes = array( 'product_name' => 'Wireless Headphones', 'category' => 'Electronics', 'price' => 99.99, 'quantity' => 2 ); Metrix_SDK::new_event('purchase_completed', $attributes); ?>

3. ارسال ایونت با نام

برای ارسال یک ایونت با استفاده از نام نمایشی آن:

Metrix_SDK::new_event_by_name($name); Metrix_SDK::new_event_by_name($name, $custom_attributes);

پارامترها:

پارامترنوعتوضیحاتالزامی
$namestringنام نمایشی ایونتبله
$custom_attributesarrayجفت‌های کلید-مقدار از داده‌های ایونتخیر

مثال:

<?php // ایونت با نام بدون ویژگی‌ها Metrix_SDK::new_event_by_name('PURCHASE_COMPLETED'); // ایونت با نام و ویژگی‌ها $attributes = array( 'manufacturer' => 'Nike', 'product_name' => 'Running Shoes', 'price' => 150 ); Metrix_SDK::new_event_by_name('PURCHASE_COMPLETED', $attributes); ?>

سناریوهای رایج ردیابی

سناریو 1: ردیابی بازدید از صفحات

ردیابی زمانی که کاربران از صفحات مختلف بازدید می‌کنند:

<?php add_action('wp_footer', function() { $page_data = array( 'page_title' => get_the_title(), 'page_type' => get_post_type(), 'page_url' => get_the_permalink(), 'author' => get_the_author(), 'published_date' => get_the_date('Y-m-d') ); Metrix_SDK::new_event_by_name('PAGE_VISIT', $page_data); }); ?>

سناریو 2: ردیابی ارسال فرم‌ها

ردیابی زمانی که کاربران یک فرم تماس یا فرم ثبت‌نام را ارسال می‌کنند:

<?php if (isset($_POST['contact_form_submit'])) { if (isset($_POST['name']) && isset($_POST['email'])) { // همیشه ورودی کاربر را پاک‌سازی (sanitize) کنید $name = sanitize_text_field($_POST['name']); $email = sanitize_email($_POST['email']); $subject = sanitize_text_field($_POST['subject']); $form_data = array( 'name' => $name, 'email' => $email, 'subject' => $subject, 'submission_date' => date('Y-m-d H:i:s') ); Metrix_SDK::new_event('form_contact_submitted', $form_data); // پردازش فرم... } } ?> <form method="POST"> <input type="text" name="name" placeholder="نام شما" required> <input type="email" name="email" placeholder="ایمیل شما" required> <input type="text" name="subject" placeholder="موضوع" required> <button type="submit" name="contact_form_submit">ارسال</button> </form>

سناریو 3: ردیابی ثبت‌نام کاربر

ردیابی زمانی که کاربران جدید ثبت‌نام می‌کنند:

<?php add_action('user_register', function($user_id) { $user = get_user_by('id', $user_id); $signup_data = array( 'user_email' => $user->user_email, 'display_name' => $user->display_name, 'signup_date' => date('Y-m-d H:i:s'), 'signup_method' => 'website' ); Metrix_SDK::new_event('user_signup', $signup_data); }); ?>

سناریو 4: ردیابی خرید محصول (WooCommerce)

ردیابی زمانی که مشتریان خرید انجام می‌دهند:

<?php add_action('woocommerce_order_status_completed', function($order_id) { $order = wc_get_order($order_id); $purchase_data = array( 'order_id' => $order_id, 'total' => $order->get_total(), 'item_count' => $order->get_item_count(), 'currency' => $order->get_currency(), 'payment_method' => $order->get_payment_method() ); // افزودن اطلاعات اقلام مجزا foreach ($order->get_items() as $item) { $purchase_data['items'][] = array( 'product_name' => $item->get_name(), 'product_id' => $item->get_product_id(), 'quantity' => $item->get_quantity(), 'price' => $item->get_total() ); } Metrix_SDK::new_event('purchase_completed', $purchase_data); }); ?>

سناریو 5: ردیابی پخش ویدئو (JavaScript + PHP)

ردیابی زمانی که کاربران ویدئو پخش می‌کنند:

<?php // در قالب شما، جاوااسکریپت سفارشی را بارگذاری کنید add_action('wp_enqueue_scripts', function() { wp_enqueue_script('video-tracking', get_template_directory_uri() . '/js/video-tracking.js', array(), '1.0', true); }); ?>

فایل جاوااسکریپت (js/video-tracking.js):

document.addEventListener('DOMContentLoaded', function () { const videos = document.querySelectorAll('video'); videos.forEach(video => { video.addEventListener('play', function () { Metrix.newEventByName('VIDEO_PLAYED', { video_title: video.title || 'Untitled Video', timestamp: new Date().toISOString(), }); }); }); });

سناریو 6: ردیابی جستجوها

ردیابی آنچه کاربران در سایت شما جستجو می‌کنند:

<?php if (isset($_GET['s'])) { $search_query = sanitize_text_field($_GET['s']); $search_data = array( 'search_query' => $search_query, 'search_date' => date('Y-m-d H:i:s'), 'results_count' => count(get_posts(array('s' => $search_query))) ); Metrix_SDK::new_event('search_performed', $search_data); } ?>

استفاده از هوک‌های وردپرس برای ردیابی خودکار ایونت ها

<?php add_action('wp_footer', function() { // این کد در هر بارگذاری صفحه اجرا می‌شود $current_user = wp_get_current_user(); $page_visit = array( 'page_title' => get_the_title(), 'page_url' => get_the_permalink(), 'user_status' => $current_user->ID ? 'logged_in' : 'anonymous', 'timestamp' => date('Y-m-d H:i:s') ); Metrix_SDK::new_event_by_name('PAGE_VISIT', $page_visit); }); ?>
<?php add_action('wp_footer', function() { $current_user = wp_get_current_user(); if ($current_user->ID) { Metrix_SDK::new_event('logged_in_page_visit', array( 'page' => get_the_title(), 'user_role' => implode(',', $current_user->roles) )); } }); ?>

اقدامات نوع پست سفارشی

<?php add_action('publish_product', function($post_id) { $post = get_post($post_id); Metrix_SDK::new_event('product_published', array( 'product_title' => $post->post_title, 'product_id' => $post_id, 'publish_date' => date('Y-m-d H:i:s') )); }); ?>

ارسال ایونت ها از طریق JavaScript (سمت کاربر)

برای تعاملات کاربری که در فرانت‌اند (مانند کلیک روی دکمه‌ها، تعاملات فرم) اتفاق می‌افتند، از جاوااسکریپت برای ارسال ایونت ها استفاده کنید:

متدهای پایه ایونت در جاوااسکریپت

1. ارسال ایونت با نام

Metrix.newEventByName('EVENT_NAME', { attribute_key: 'attribute_value', });

مثال:

// ردیابی کلیک دکمه document.getElementById('subscribe-btn').addEventListener('click', function () { Metrix.newEventByName('NEWSLETTER_SIGNUP', { signup_source: 'homepage_banner', timestamp: new Date().toISOString(), }); });

2. ردیابی کلیک روی لینک

document.querySelectorAll('a.external-link').forEach(link => { link.addEventListener('click', function () { Metrix.newEventByName('EXTERNAL_LINK_CLICKED', { link_url: this.href, link_text: this.textContent, }); }); });

3. ردیابی تغییرات فیلد فرم

document.getElementById('email-input').addEventListener('change', function () { Metrix.newEventByName('EMAIL_FIELD_UPDATED', { field_name: 'email', timestamp: new Date().toISOString(), }); });

4. ردیابی عمق پیمایش (Scroll Depth)

let scrollTracked = false; window.addEventListener('scroll', function () { const scrollPercentage = (window.scrollY / (document.body.scrollHeight - window.innerHeight)) * 100; if (scrollPercentage > 50 && !scrollTracked) { Metrix.newEventByName('PAGE_SCROLL_50', { page_title: document.title, }); scrollTracked = true; } });

5. ردیابی زمان ماندن در صفحه

let pageLoadTime = new Date(); window.addEventListener('beforeunload', function () { const timeOnPage = Math.floor((new Date() - pageLoadTime) / 1000); // بر حسب ثانیه Metrix.newEventByName('PAGE_TIME_TRACKING', { page_title: document.title, time_spent_seconds: timeOnPage, }); });

جاسازی جاوااسکریپت در وردپرس

<?php // در انتهای footer.php، قبل از wp_footer() ?> <script> document.addEventListener('DOMContentLoaded', function() { // کد ردیابی ایونت شما در اینجا document.getElementById('my-button').addEventListener('click', function() { Metrix.newEventByName('BUTTON_CLICKED', { 'button_id': 'my-button' }); }); }); </script> <?php wp_footer(); ?>

استفاده از wp_enqueue_script()

فایلی با نام js/custom-events.js ایجاد کنید:

document.addEventListener('DOMContentLoaded', function () { document.getElementById('download-btn').addEventListener('click', function () { Metrix.newEventByName('DOWNLOAD_STARTED', { download_type: 'ebook', timestamp: new Date().toISOString(), }); }); });

در functions.php قالب یا پلاگین شما:

<?php add_action('wp_enqueue_scripts', function() { wp_enqueue_script( 'custom-events', get_template_directory_uri() . '/js/custom-events.js', array(), // وابستگی‌ها '1.0', true // در فوتر ); }); ?>

بهترین روش‌ها برای ویژگی‌های ایونت

انواع ویژگی

ایونت ها می‌توانند شامل انواع مختلفی از ویژگی‌ها باشند:

<?php $event_attributes = array( 'string_value' => 'some text', // رشته (String) 'number_value' => 42, // عدد (Number) 'decimal_value' => 19.99, // اعشاری (Decimal) 'boolean_value' => true, // Boolean 'date_value' => '2024-01-15', // تاریخ (فرمت ISO) 'timestamp' => date('Y-m-d H:i:s') // زمان‌برچسب (Timestamp) ); Metrix_SDK::new_event('event_with_attributes', $event_attributes); ?>

بهترین روش‌ها برای ویژگی‌ها

1. از نام‌های واضح و توصیفی استفاده کنید

// خوب $attributes = array( 'product_name' => 'Wireless Mouse', 'product_price' => 45.99 ); // از نام‌های مبهم خودداری کنید $attributes = array( 'item' => 'Wireless Mouse', 'val' => 45.99 );

2. تمام ورودی‌های کاربر را پاک‌سازی (Sanitize) کنید

<?php if (isset($_POST['user_input'])) { $cleaned_input = sanitize_text_field($_POST['user_input']); Metrix_SDK::new_event('user_input_event', array( 'input_value' => $cleaned_input )); } ?>

3. ویژگی‌ها را سازگار نگه دارید

همیشه از نام‌های ویژگی و فرمت مقادیر یکسان استفاده کنید:

<?php // خوب: ساختار سازگار $order_data = array( 'order_id' => '12345', 'order_total' => 199.99, 'currency' => 'USD', 'status' => 'completed' ); // اجتناب شود: فرمت‌های ناسازگار $order_data = array( 'id' => '12345', 'total' => '$199.99', // فرمت متفاوت 'curr' => 'USD' // نام متفاوت ); ?>

4. داده‌های حساس را شامل نکنید

// اجتناب شود: هرگز رمز عبور، توکن یا اطلاعات شناسایی شخصی (PII) را شامل نکنید $bad_attributes = array( 'password' => 'user_password', // این کار را نکنید 'credit_card' => '1234-5678', // این کار را نکنید 'api_token' => 'secret_token' // این کار را نکنید ); // خوب: فقط داده‌های غیرحساس را شامل کنید $good_attributes = array( 'purchase_amount' => 99.99, 'payment_method' => 'credit_card', 'status' => 'completed' );

5. از انواع داده استاندارد استفاده کنید

<?php // خوب: از انواع داده مناسب استفاده کنید $attributes = array( 'quantity' => 5, // عدد صحیح (Integer) 'price' => 29.99, // عدد اعشاری (Float) 'in_stock' => true, // Boolean 'product_name' => 'Headphones' // رشته (String) ); // اجتناب شود: تبدیل غیرضروری انواع $attributes = array( 'quantity' => '5', // باید عدد صحیح باشد 'price' => '29.99', // باید عدد اعشاری باشد 'in_stock' => 'true' // باید Boolean باشد ); ?>

ردیابی ایونت ها در قالب‌ها

در قالب تک پست/محصول

<?php // single-post.php یا single-product.php get_header(); Metrix_SDK::new_event('content_viewed', array( 'content_type' => get_post_type(), 'content_title' => get_the_title(), 'content_id' => get_the_ID(), 'author' => get_the_author(), 'category' => get_the_category()[0]->name ?? 'uncategorized' )); the_content(); get_footer(); ?>

در قالب آرشیو/لیست

<?php // archive.php یا category.php get_header(); Metrix_SDK::new_event('archive_viewed', array( 'archive_type' => get_post_type(), 'archive_title' => get_the_archive_title(), 'posts_count' => wp_count_posts()->publish )); while (have_posts()) { the_post(); // نمایش پست‌ها... } get_footer(); ?>

مشاهده ایونت ها در داشبورد Metrix

پس از شروع ارسال ایونت ها، می‌توانید آن‌ها را مشاهده و تحلیل کنید:

  1. به داشبورد Metrix خود وارد شوید
  2. به بخش تحلیل‌ها (Analytics) یا ایونت ها (Events) بروید
  3. تعداد ایونت ها، ویژگی‌ها و مسیرهای کاربری را مشاهده کنید
  4. بر اساس ایونت ها سگمنت ایجاد کنید
  5. از ایونت ها برای هدف‌گیری اعلان‌های پوش یا کمپین‌ها استفاده کنید

عیب‌یابی

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

دلایل احتمالی:

  • ایونت هنوز در داشبورد Metrix ایجاد نشده است
  • App ID یا API Key نادرست است
  • اسلاگ/نام ایونت با آنچه در داشبورد ایجاد شده مطابقت ندارد

راه‌حل:

  1. بررسی کنید که ایونت در داشبورد Metrix شما وجود داشته باشد
  2. مطمئن شوید که اسلاگ/نام ایونت دقیقاً مطابقت دارد (حساس به حروف کوچک و بزرگ)
  3. اطمینان حاصل کنید که App ID و API Key به درستی پیکربندی شده‌اند
  4. کنسول مرورگر را برای خطاهای جاوااسکریپت بررسی کنید

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

دلایل احتمالی:

  • نام ویژگی‌ها با تعریف ایونت در داشبورد مطابقت ندارد
  • داده‌ها حاوی کاراکترهای خاص یا مشکلات کدگذاری هستند
  • انواع داده با فرمت مورد انتظار مطابقت ندارند

راه‌حل:

  1. نام ویژگی‌ها را در تعریف ایونت Metrix تأیید کنید
  2. قبل از ارسال، تمام ورودی‌های کاربر را پاک‌سازی (sanitize) کنید
  3. از انواع داده صحیح برای ویژگی‌ها استفاده کنید
  4. ابتدا با ویژگی‌های ساده آزمایش کنید، سپس پیچیدگی را اضافه کنید

ایونت ها ارسال شده‌اند اما شمارش نمی‌شوند

دلایل احتمالی:

  • کاربر ناشناس است و ایونت فقط برای کاربران وارد شده محدود شده است
  • ایونت با فرکانس زیاد یا با محدودیت (throttling) ارسال می‌شود
  • کاربر با ردیابی موافقت نکرده است

راه‌حل:

  1. پیکربندی ایونت را در داشبورد Metrix بررسی کنید
  2. بررسی کنید که کاربر وارد شده باشد زمانی که ایونت نیاز به آن دارد
  3. بررسی کنید که آیا رضایت ردیابی لازم است
  4. تنظیمات فایروال/فیلتر را مرور کنید