تتبع التحليلات: جمع الأحداث مع الأولوية للخصوصية

يشرح هذا المقال كيف نتتبع سلوك المستخدم مع احترام الخصوصية وتجنب حركة مرور الروبوتات.

المشكلة: فهم سلوك المستخدم

نحتاج إلى معرفة:

  • أي الصفحات يزورها المستخدمون

  • أي المنتجات يشاهدونها

  • من أين يأتي الزوار (إعلانات جوجل، بحث عضوي، وسائل التواصل الاجتماعي)

  • أي الحملات تقود إلى التحويلات (المبيعات)

ولكن يجب علينا تجنب:

  • تتبع الروبوتات والعناكب (Bots & Crawlers)

  • تخزين المعلومات الشخصية القابلة للتحديد (PII)

  • انتهاك لوائح الخصوصية

الحل: التتبع من جانب العميل + جانب الخادم

جانب العميل: التتبع عبر جافاسكريبت

معرف الزائر (Visitor ID): معرف عشوائي مخزن في ملف تعريف الارتباط (كوكي) (لمدة 365 يومًا)

معرف الجلسة (Session ID): معرف عشوائي مخزن في تخزين الجلسة (sessionStorage) (حتى إغلاق المتصفح)

معلمات الحملة (Campaign params): مستخرجة من عنوان URL ومخزنة في تخزين الجلسة

المعلمات التي يتم تتبعها:

  • gclid - معرف نقر جوجل (إعلانات البحث)

  • gbraid - معرف نقر إعلانات جوجل (إعلانات التسوق)

  • wbraid - معرف نقر إعلانات جوجل (iOS)

  • fbclid - معرف نقر فيسبوك

  • srsltid - معرف نتيجة البحث العضوي في جوجل

  • utm_source, utm_medium, utm_campaign, utm_term, utm_content

التخزين: تُخزن المعلمات في ملفات تعريف الارتباط (كوكيز) (لمدة 30 دقيقة) لربط التحويلات بنقرات واتساب أو الهاتف

جانب الخادم: الإثراء

يقوم الخادم بإثراء الأحداث بـ:

بيانات تحديد الموقع الجغرافي (GeoIP): الدولة، المنطقة، المدينة من عنوان IP

تحليل وكيل المستخدم (User-Agent): المتصفح، نظام التشغيل، نوع الجهاز

الطابع الزمني (Timestamp): وقت الخادم (UTC)

كشف الروبوتات: يقوم بتصفية وكيل المستخدم المعروف للروبوتات

أنواع الأحداث

عرض الصفحة (Page view): زيارة المستخدم لصفحة

عرض المنتج (Product view): عرض المستخدم لصفحة منتج

إضافة إلى السلة (Add to cart): إضافة المستخدم منتجًا إلى سلة التسوق

الدفع (Checkout): بدء المستخدم لعملية الدفع

الشراء (Purchase): إكمال المستخدم للشراء

نقر واتساب (WhatsApp click): نقر المستخدم على زر واتساب

نقر الهاتف (Phone click): نقر المستخدم على رقم الهاتف

تدفق البيانات

sequenceDiagram
    participant User
    participant JS as JavaScript
    participant API as /api/analytics
    participant Firehose as Kinesis Firehose
    participant S3
    
    User->>JS: زيارة الصفحة
    JS->>JS: استخراج معلمات الرابط
(gclid, utm_*, إلخ.) JS->>JS: التخزين في sessionStorage JS->>API: إرسال حدث POST + المعلمات API->>API: إثراء ببيانات تحديد الموقع الجغرافي API->>API: تحليل وكيل المستخدم API->>API: تصفية الروبوتات API->>Firehose: إرسال الحدث المثرى Firehose->>S3: التخزين في حزمة التحليلات (bucket)

كشف الروبوتات

نقوم بتصفية حركة مرور الروبوتات باستخدام إشارات متعددة:

أنماط وكيل المستخدم (User-Agent patterns): سلاسل نصية معروفة للروبوتات (Googlebot, Bingbot, إلخ.)

أنماط السلوك (Behavior patterns): سريعة جدًا، طلبات كثيرة جدًا

غياب جافاسكريبت (Missing JavaScript): غالبًا لا تقوم الروبوتات بتنفيذ JS

كوكي الاستبعاد (Exclusion cookie): tv_exclude=true يوقف جميع عمليات التتبع

حماية الخصوصية

لا لمعلومات التعريف الشخصية (No PII): لا نقوم أبدًا بتخزين الأسماء أو البريد الإلكتروني أو أرقام الهواتف

عناوين IP مجهولة المصدر (Anonymized IPs): إزالة الجزء الأخير من عنوان IP قبل التخزين

لا للتتبع عبر المواقع (No cross-site tracking): ملفات تعريف الارتباط (كوكيز) خاصة بالموقع الأول فقط

الانسحاب (Opt-out): يمكن للمستخدمين تعيين كوكي الاستبعاد

احتفاظ بالبيانات (Data retention): يتم حذف الأحداث بعد 90 يومًا

تحميل بكسل التتبع المشروط

نقوم بتحميل بكسل التتبع فقط عندما يكون ذا صلة:

بكسل إعلانات جوجل (Google Ads pixel): فقط إذا كان gclid أو gbraid أو wbraid موجودًا

بكسل لينكد إن (LinkedIn pixel): فقط إذا كان msclkid موجودًا

بكسل فيسبوك (Facebook pixel): فقط إذا كان fbclid موجودًا

الفائدة: تحميل أسرع للصفحات، حمل تتبع أقل

اكتشاف مصدر الزوار

نكتشف مصدر الزوار من معلمات عنوان URL:

إعلانات جوجل (Google Ads): gclid, gbraid, wbraidutm_source=google_ads

بحث جوجل العضوي (Google Organic): srsltidutm_source=google_search

فيسبوك (Facebook): fbclidutm_source=facebook

لينكد إن (LinkedIn): msclkidutm_source=linkedin

مباشر (Direct): لا توجد معلمات → utm_source=direct

تتبع التحويلات

نتتبع التحويلات عبر مسار المبيعات:

عرض المنتجإضافة إلى السلةالدفعالشراء

تتضمن كل خطوة:

  • معرف الزائر (لربط التحويلات)

  • معرف الجلسة (لتحليل الجلسة)

  • معلمات الحملة (لحساب عائد الاستثمار ROI)

  • رمز المنتج (SKU) (لتحليل المنتج)

تتبع اتصالات العملاء المحتملين

عندما يتصل بنا المستخدمون (واتساب، هاتف، بريد إلكتروني)، نقوم بتسجيل:

طريقة الاتصال (Contact method): واتساب، هاتف، بريد إلكتروني

معلمات الحملة (Campaign params): من ملفات تعريف الارتباط (كوكيز) (نافذة زمنية مدتها 30 دقيقة)

سياق المنتج (Product context): صفحة المنتج التي كانوا عليها

الفائدة: ربط التحويلات غير المتصلة بالإنترنت (Offline) بالحملات عبر الإنترنت

تحديد معدل الطلبات

نقطة نهاية التحليلات محددة بمعدل الطلبات:

الحد (Limit): 100 طلب كل 10 دقائق لكل عنوان IP

الفائدة: يمنع إساءة الاستخدام وطوفان الطلبات من الروبوتات

التخزين

يتم تخزين الأحداث في S3 عبر Kinesis Firehose:

التنسيق (Format): أسطر JSON (حدث واحد لكل سطر)

التقسيم (Partitioning): حسب التاريخ (سنة/شهر/يوم/ساعة)

الضغط (Compression): Gzip

الاحتفاظ (Retention): 90 يومًا

الاستعلام

يتم الاستعلام عن الأحداث عبر AWS Athena:

المخطط (Schema): معرف في كتالوج بيانات Glue

الاستعلامات (Queries): SQL على بيانات S3

حالات الاستخدام (Use cases): عائد الاستثمار للحملات، شعبية المنتجات، مصادر الزوار

المراجع

المفاهيم التقنية

خدمات AWS

مقالات ذات صلة

الملخص

يتتبع نظام التحليلات لدينا سلوك المستخدم مع احترام الخصوصية:

جانب العميل:

  • ✅ استخراج معلمات الحملة من عنوان URL

  • ✅ التخزين في تخزين الجلسة (sessionStorage) (محدود بالجلسة)

  • ✅ التخزين في ملفات تعريف الارتباط (كوكيز) (30 دقيقة لربط التحويلات)

  • ✅ إرسال الأحداث إلى API

جانب الخادم:

  • ✅ الإثراء ببيانات تحديد الموقع الجغرافي ووكيل المستخدم

  • ✅ تصفية حركة مرور الروبوتات

  • ✅ الإرسال إلى Kinesis Firehose

  • ✅ التخزين في S3 (مقسم حسب التاريخ)

الخصوصية:

  • ✅ لا يتم تخزين معلومات التعريف الشخصية (PII)

  • ✅ عناوين IP مجهولة المصدر

  • ✅ ملفات تعريف الارتباط (كوكيز) خاصة بالموقع الأول فقط

  • ✅ خيار الانسحاب متاح

  • ✅ احتفاظ لمدة 90 يومًا

التحميل المشروط:

  • ✅ بكسل إعلانات جوجل فقط إذا كان gclid موجودًا

  • ✅ بكسل لينكد إن فقط إذا كان msclkid موجودًا

  • ✅ بكسل فيسبوك فقط إذا كان fbclid موجودًا

يوازن هذا النهج بين الحصول على رؤى وبين الخصوصية والأداء.


← العودة إلى فهرس الوثائق