تعتمد هذه المقالة على أحدث دليل رسمي من Google (إصدار GA4 لعام 2025)، بالإضافة إلى حالات عملية من عملاء تجارة إلكترونية قمت بتجربتها بنفسي (مثل علامة تجارية كبيرة حسّنت معدل الإضافة إلى السلة بنسبة 27% من خلال تحسين المشغّل). سنقوم بشرح شامل لمنطق عمل مشغّل الإضافة إلى السلة في GTM، مع طرق لتجنب الأخطاء الشائعة، وتمرير المعطيات الديناميكية، وبعض الحيل المتقدمة.
سواء كنت مبتدئ في استخدام GTM أو مطوّر تحتاج لدمجه مع منصات متعددة (مثل Shopify أو WooCommerce)، هذا الدليل سيساعدك في تنفيذ تتبع بيانات دقيق وخالٍ من الأخطاء.
الفكرة الأساسية لمشغّل الإضافة إلى السلة في GTM
من مجرد “زر تشغيل” إلى “مركز بيانات ديناميكي”
في Google Tag Manager (GTM)، لا يُعتبر المشغّل (Trigger) مجرد زر تشغيل، بل هو محرك قواعد ديناميكي.
يقوم بمراقبة تفاعلات معينة على الموقع (مثل النقر، التمرير، إرسال النماذج) أو أحداث يتم دفعها إلى dataLayer (مثل add_to_cart
)، ويحدّد إذا ما كانت الشروط المحددة مسبقًا مستوفاة (مثل “فقط لمستخدمي الجوال” أو “سعر المنتج أكبر من 100 دولار”)، ليقرر إن كان يجب تفعيل الوسم (Tag) المرتبط.
أنواع المشغّلات:
- الأحداث التلقائية: مدمجة لمراقبة تحميل الصفحات، النقر على عناصر، إرسال النماذج… إلخ.
- الأحداث المخصصة: تتطلب من المطوّر دفع الأحداث يدويًا باستخدام
dataLayer.push()
(مثلadd_to_cart
).
شروط التفعيل:
- يمكن تحديدها بناءً على المتغيرات (Variables) بشكل ديناميكي، مثل:
{{Click ID}} == "cart-button" && {{Page Path}} contains "/product/"
. - تدعم التعبيرات النمطية (Regex)، والعوامل المنطقية (AND/OR)، وغيرها من القواعد المتقدمة.
سلسلة نقل البيانات بدقة
إليك سلسلة الأحداث الكاملة من لحظة نقر المستخدم وحتى وصول البيانات:
عند حدوث تصرّف المستخدم:
- المستخدم ينقر على زر “إضافة إلى السلة”.
- المتطلبات التقنية: يجب أن يحتوي الزر على خصائص HTML واضحة (مثل
class="cart-button"
) أو يكون مدمجًا مع dataLayer مسبقًا.
دفع الحدث إلى طبقة البيانات (dataLayer):
- الخيار 1 (المراقبة من الواجهة الأمامية): استخدام مشغّل “Click” في GTM لمراقبة النقر مباشرة.
- الخيار 2 (إرسال الحدث يدويًا): يقوم كود الموقع بإرسال حدث مخصص مثل:
dataLayer.push({event: "add_to_cart"})
.
مطابقة شروط المشغّل:
- يتحقق GTM من مطابقة القواعد (مثل أن يكون اسم الحدث
add_to_cart
ومسار الصفحة يحتوي على/product/
). - الأخطاء الشائعة: تضارب المُحددات (عدة أزرار بنفس الـ Class)، أو عدم تطابق أسماء الأحداث.
تنفيذ الوسم وإرسال البيانات:
- يتم تفعيل وسم GA4 المرتبط، ويرسل المعطيات الديناميكية (مثل معلومات المنتج) إلى أداة التحليل.
- نقطة التحقق المهمة: تأكد من ظهور حدث
add_to_cart
في تقرير GA4 الفوري.
رسم توضيحي للتسلسل:
نقر المستخدم → إرسال الحدث إلى dataLayer → مطابقة المشغّل في GTM → تفعيل وسم GA4 → حفظ البيانات للتحليل
ليش نستخدم dataLayer بالضرورة؟
- التقاط بيانات ديناميكية بثبات: سحب معلومات من عناصر الصفحة (DOM) غير موثوق لأن أي تغيير في التصميم ممكن يخرب العملية، بينما dataLayer يضمن تمرير البيانات بشكل منظم.
- متوافق مع كل أنواع المواقع: سواء موقعك مبني بـ React أو PHP، dataLayer يعطيك طريقة موحدة لإرسال الأحداث.
- الامتثال للخصوصية: من خلال dataLayer، تقدر تتحكم بشكل أدق في البيانات اللي تجمعها من المستخدمين، وتستثني الحساس منها.
مثال على الكود (دفع البيانات إلى طبقة البيانات):
// عند النقر على الزر، يتم إرسال الحدث وبيانات المنتج إلى dataLayer
document.querySelector(".cart-button").addEventListener("click", function() {
dataLayer.push({
event: "add_to_cart",
item_id: "PRODUCT_123",
price: 29.99,
currency: "USD"
});
});
خطوات الإعداد الأحدث لعام 2025
تحديد العناصر الرئيسية خلال 5 دقائق
تأكيد بيئة العمل التقنية
اسأل نفسك: هل يستخدم موقعي طبقة البيانات (غالبًا في تطبيقات React/Vue أحادية الصفحة)؟
- لا توجد طبقة بيانات → اختر الطريقة 1 (مشغّل النقر).
- توجد طبقة بيانات → الأفضل اختيار الطريقة 2 (حدث طبقة البيانات).
منصة CMS: إذا كنت تستخدم Shopify أو WooCommerce أو غيرها، يمكنك مباشرة استخدام الطريقة 3 (تكامل GA4 الأصلي).
الحصول على محدد الزر (ضروري للطريقة 1)
الخطوات:
- افتح متصفح Chrome، انقر بزر الفأرة الأيمن على زر “أضف إلى السلة” → اختر “فحص” (لفتح أدوات المطور).
- في لوحة العناصر (Elements)، ابحث عن كود HTML للزر وسجل خاصية
id
أوclass
(مثلًا:id="add-to-cart-btn"
). - تحقق من المحدد: اكتب في وحدة التحكم
document.querySelector('#add-to-cart-btn')
، إذا عاد بالعنصر، فهو صحيح.
مثال:
<button id="add-to-cart-btn" class="btn-primary">أضف إلى السلة</button>
✅ المحددات المتاحة: #add-to-cart-btn
(المعرّف ID) أو .btn-primary
(الفئة Class – تأكد أنها فريدة)
إعداد المُشغِّل (اختر واحدة من 3 طرق)
الطريقة 1: مُشغِّل النقر (بدون كود، مناسب للمبتدئين)
إنشاء مشغّل
في لوحة تحكم GTM → المُشغّلات → جديد → اختر Click – Just Links (زر رابط) أو Click – All Elements (زر عادي)
شروط التشغيل:
- اختر “Some Clicks” → واضبط
Click ID
ليكونadd-to-cart-btn
(أو أنClick Classes
يحتوي علىbtn-primary
) - ملاحظة: إذا لم يكن للزر ID أو Class، استخدم محدد CSS مثل
button[data-action='add-to-cart']
ربط مع حدث GA4
- أنشئ علامة جديدة → اختر GA4 Event → اجعل اسم الحدث
add_to_cart
- أضف المعلمات: أدخل معلومات المنتج يدويًا في “معلمات الحدث” (يجب التقاطها مسبقًا باستخدام المتغيرات – انظر مثال تمرير المعلمات أدناه)
الطريقة 2: حدث Data Layer (تتبع دقيق، يُنصح بها)
حدث يتم دفعه من الواجهة الأمامية (يتم تنفيذه من قِبل المطوّر)
أضف هذا الكود إلى حدث النقر على زر “إضافة إلى السلة”:
// مثال باستخدام JavaScript الأصلي
document.getElementById("add-to-cart-btn").addEventListener("click", function() {
dataLayer.push({
event: "add_to_cart",
ecommerce: {
items: [{
item_id: "PRODUCT_123", // مطلوب
item_name: "ساعة ذكية جديدة 2025",
price: 299.99,
item_category: "إلكترونيات"
}]
}
});
});
إعداد GTM
- المشغّل: إنشاء جديد → اختر حدث مخصص (Custom Event) → اسم الحدث:
add_to_cart
. - الوسم (Tag): في وسم حدث GA4، استخدم مباشرة متغير طبقة البيانات
{{ecommerce}}
لتمرير المعلمات تلقائيًا.
الطريقة 3: دمج GA4 الأصلي (خاص بـ Shopify/WooCommerce)
إعدادات لوحة تحكم Shopify
اذهب إلى لوحة تحكم Shopify → المتجر الإلكتروني → التفضيلات → فعّل Google Analytics 4 وقم بتشغيل “تتبع التجارة الإلكترونية المحسّن”.
GTM فقط لنقل البيانات
لا حاجة لإعداد مشغّل! GA4 يلتقط حدث “إضافة إلى السلة” تلقائيًا، وGTM يحتاج فقط إلى تفعيل وسم إعداد GA4 الأساسي.
الاختبار والتحقق (ضروري!)
وضع المعاينة في GTM
قبل نشر الحاوية، اضغط على “معاينة” في الزاوية العلوية اليمنى من GTM → افتح الموقع → انقر على زر “إضافة إلى السلة”.
علامات النجاح:
- ظهور حدث
add_to_cart
في نافذة التصحيح (debug). - تحقق من أن معلمات طبقة البيانات تم تمريرها بالكامل (كما في الصورة).
تقرير الوقت الفعلي في GA4
- اذهب إلى GA4 → التقارير الفورية → تحقق من ظهور حدث
add_to_cart
، وافحص المعلمات مثلprice
.
مشاكل شائعة وحلول سريعة
- لا توجد بيانات؟ → تحقق مما إذا كان كود GTM مدمجًا في الموقع وهل شروط المشغّل دقيقة جدًا.
- المعلمات مفقودة؟ → تأكد من تفعيل متغير طبقة البيانات “ecommerce” في قسم “المتغيرات” داخل GTM.
مثال على تمرير المعلمات (متقدم – الطريقة 2)
التقاط معلومات المنتج تلقائيًا داخل وسم GA4:
إنشاء متغير داخل GTM:
نوع المتغير → متغير طبقة البيانات (Data Layer Variable) → اسم المتغير: ecommerce.items.0.item_id
(رقم تعريف المنتج)
إعداد معلمات الوسم في GA4:
event_name: add_to_cart
parameters:
item_id: {{dlv - ecommerce.items.0.item_id}}
item_name: {{dlv - ecommerce.items.0.item_name}}
currency: USD
value: {{dlv - ecommerce.items.0.price}}
(dlv هو اختصار لـ Data Layer Variable)
المشغّل لا يعمل؟ إليك طريقة التحقق
إذا لم تظهر البيانات في تقارير GA4، غالبًا السبب هو تضارب في الشروط، أو غياب الحدث في طبقة البيانات، أو مشاكل في الصلاحيات — اتبع هذه الخطوات لتصحيح ذلك خلال 10 دقائق:
تحقق مما إذا تم إرسال الحدث إلى طبقة البيانات
الخطوات:
- افتح أدوات المطور في المتصفح (F12)، اكتب
dataLayer
واضغط Enter → انقر على زر “إضافة إلى السلة” → راقب هل يظهر حدثadd_to_cart
.
أخطاء شائعة:
- خطأ في كتابة اسم الحدث:
add_to_cart
(صحيح) مقابلaddToCart
(خاطئ) - عدم ربط الحدث بزر النقر: الزر لا يحتوي على كود JavaScript للاستماع للنقرات.
مثال على تصحيح:
// كود صحيح لإرسال الحدث
document.querySelector("#cart-button").addEventListener("click", function() {
dataLayer.push({ event: "add_to_cart" });
});
تحقّق من منطق إعداد المُشغّل
الخطوات:
- قم بالدخول إلى وضع المعاينة في GTM، ثم اضغط على الزر وتحقق من حالة المشغّل في لوحة التصحيح.
نقاط مهمة:
- تأكّد من نوع المشغّل المستخدم (مثلاً إذا كان مشغّل نقر، اختر “All Elements”).
- راجع ما إذا كانت شروط التفعيل صارمة جداً (مثلاً الصفحة
/product/
بينما الفعلية/products/
).
تأكّد من ربط المعلمات في علامة GA4
الخطوات:
- في تقرير GA4 الفوري، تأكّد من ظهور حدث
add_to_cart
وتحقّق من المعلمات مثلitem_id
.
خطأ شائع:
- تم دفع
product_id
في dataLayer، ولكن تم إعداد العلامة في GA4 لاستخدامitem_id
، وبهذا تضيع البيانات.
ماذا تفعل إذا حصل تأخير أو فقدان للبيانات؟
فشل تحميل حاوية GTM
نقاط الفحص:
- استخدم أداة Google Tag Assistant للتحقّق مما إذا كانت الحاوية تُحمّل على جميع الصفحات.
مثال على تصحيح:
- ضع كود GTM في أعلى وسم
<head>
في HTML حتى لا يتم حظره من قبل سكربتات أخرى. - استخدم التحميل غير المتزامن (asynchronous):
<!-- الكود المُوصى به من Google -->
<script async src="https://www.googletagmanager.com/gtm.js"></script>
طلب الشبكة تم حجبه
الخطوات:
- من أدوات المطور في المتصفح، افتح تبويب “Network”، ثم فلتر النتائج بكلمة
collect?v=2
(وهي نقطة الإرسال لـ GA4)، وراجع رمز الحالة.
مشاكل شائعة:
- إضافات حجب الإعلانات: مثل uBlock Origin تمنع إرسال بيانات التتبع.
- سياسات الجدار الناري: بعض شبكات الشركات تحجب نطاقات GA4 مثل
www.google-analytics.com
.
تأخير معالجة بيانات GA4
ملاحظة:
- GA4 بشكل افتراضي يتأخر في معالجة البيانات من 24 إلى 48 ساعة. تقرير الوقت الحقيقي يعرض فقط جزء من البيانات.
الخطة الطارئة:
- إرسال الأحداث إلى BigQuery في نفس الوقت من خلال GTM، لعمل نسخة احتياطية فورية للبيانات الخام.
كيف نفرّق بين حدث “إضافة إلى السلة” و”البدء في الدفع”؟
توحيد أسماء الأحداث
القواعد:
add_to_cart
: يُستخدم فقط لما المستخدم يضغط على زر “إضافة إلى السلة”.begin_checkout
: يتم تفعيله لما يدخل المستخدم صفحة الدفع.
مثال على طبقة البيانات (Data Layer):
// حدث إضافة للسلة
dataLayer.push({ event: "add_to_cart", ... });
// حدث البدء في الدفع
dataLayer.push({ event: "begin_checkout", ... });
تصميم الفروقات من خلال المعايير
إعدادات وسوم GA4:
- أضف معايير مخصصة مثل
payment_method
(طريقة الدفع) وshipping_type
(نوع الشحن) لحدثbegin_checkout
.
مثال:
// معايير حدث البدء في الدفع
{
"event": "begin_checkout",
"items": [...],
"payment_method": "credit_card",
"coupon_code": "SUMMER2025"
}
استخدام الأبعاد المخصصة للتصفية
الخطوات:
- أنشئ بُعد مخصص في GA4 باسم “نوع الحدث” (event_type)، واستخدم الفلاتر لتمييز الحدثين.
الربط داخل الكود:
// بُعد مخصص لحدث الإضافة إلى السلة
dataLayer.push({
event: "add_to_cart",
custom_dimensions: { event_type: "cart_add" }
});