تخطَّ إلى المحتوى
شركاء زد
برامج المطوريننظرة عامة على كل مسارات البناء على زدشركاء التطبيقاتانشر تطبيقك في سوق التطبيقاتشركاء الثيماتأطلق ثيمك في سوق الثيمات
سوق التطبيقاتالتطبيقات المتاحة لتجار زدسوق الثيماتثيمات جاهزة للتثبيت
الدعم
مركز مساعدة الشركاءأدلة الاستخدام وحل المشاكلالتوثيق التقنيالواجهات والـSDK وأدلة التكاملاحجز اجتماعًااجتماع تجاري أو دعم تقني
ما الجديد؟
المدونةأدلة وتحديثات للمطورينسجل التحديثاتآخر تحديثات منصة الشركاءاقترح ميزةبوابة الملاحظات والأفكار
تمكين الشريك
إعلانات الشركاء قريبًاباقات ظهور في قنوات زدالثيمات المخصصةثيمات تبنيها لمتجر محددمجتمع الشركاءتواصل مع مطوّرين يبنون على زد
مكتبة زد
تقارير زدكل ما تحتاج معرفته عن السوقأدلة المطورينمراجع رسمية تبني عليها
ENتسجيل الدخولانضم كشريك الآن

برامج الشركاء

برامج المطورينشركاء التطبيقاتشركاء الثيمات

تصفّح السوق

سوق التطبيقاتسوق الثيمات

الدعم والتمكين

مركز مساعدة الشركاءالتوثيق التقنياحجز اجتماعًاالمدونةسجل التحديثاتاقترح ميزةإعلانات الشركاء قريبًاالثيمات المخصصةمجتمع الشركاءتقارير زدأدلة المطورين

اللغة

English
تسجيل الدخولانضم كشريك الآن
الرئيسية/المدونة/الواجهات والتكامل
الواجهات والتكامل

أحداث واجهة المتجر في زد: تتبّع المشاهدات والسلة والمشتريات عبر Scripts تطبيقك

ما أحداث واجهة المتجر التي توفرها زد، وماذا تحمل كل Payload، وكيف تضيف Scripts التتبّع عبر Custom Snippets، ودوال zidTracking لمطوري الثيمات.

1 نوفمبر 20266 دقائق

لماذا طبقة الأحداث؟

تتيح App Scripts لتطبيقك إدراج JavaScript في واجهات متاجر التجار دون أن يعدّل التاجر أي شيفرة. وتذكر زد استخدامات مثل تتبّع التحويلات، وتحسين التحليلات، والتخصيص، وتخصيص التفاعل مع واجهة المتجر. ويصف التوثيق أحداث واجهة المتجر بأنها متاحة رسميًا للتتبّع من جهة العميل وللتكامل، سواء كان تطبيقك مضمّنًا في لوحة التاجر أو خارجيًا.

هناك نوعان من الـ Scripts:

  • Scripts عامة (Global) تُحمَّل في كل صفحة.
  • Scripts مرتبطة بحدث (Event-driven) تعمل استجابةً لتصرف المتسوق، مثل مشاهدة منتج أو إضافته إلى السلة أو إتمام الشراء.
هذه أحداث تقع في متصفح المتسوق داخل واجهة المتجر، وتختلف عن الـ Webhooks التي ترسلها زد إلى الـ Server الخاص بك مثل order.create. ومن التقسيمات الجيدة أن تعتمد على الـ Webhooks لبيانات الطلبات الموثوقة، وعلى أحداث الواجهة لما يحدث في المتصفح.

الـ Objects العامة: من المتسوق؟

تتوفر ثلاثة Objects في Scope window داخل الصفحة:

  • window.customer: العميل المسجّل دخوله، ويحتوي id وname وfirstname وlastname وmobile وemail. ويكون فارغًا إذا لم يسجّل أحد دخوله.
  • window.customerAuthState: متاح فور تحميل الصفحة، ويحتوي isAuthenticated وisGuest.
  • window.customerAsync: وعد (Promise) يُحلّ ببيانات العميل بعد جلبها، مفيد عندما لا يكون window.customer جاهزًا بعد.
(async function () {
  var auth = window.customerAuthState || {};
  if (!auth.isAuthenticated) return; // guest or logged out

  var customer = (window.customer && window.customer.id)
    ? window.customer
    : await window.customerAsync;

  // use customer.id to map the shopper to your own records
})();
يتضمن Object العميل البريد الإلكتروني ورقم الجوال. ومن الممارسات الجيدة أن ترسل فقط الـ IDs التي تحتاجها خدمتك، وأن تُجزّئ (hash) البيانات الشخصية أو تحذفها قبل أن تصل إلى أي أداة خارجية.

الأحداث السبعة المدعومة

  1. Purchase: بعد إتمام عملية شراء ناجحة.
  2. Product View: عند مشاهدة المتسوق لمنتج (productViewd).
  3. Add to Cart: عند إضافة منتج إلى السلة (productCart).
  4. Remove from Cart: عند حذف منتج من السلة (productCart).
  5. Start Checkout: عند بدء المتسوق إتمام الطلب.
  6. View Item List (جديد): عند مشاهدة قائمة منتجات، مثل صفحة تصنيف أو نتائج بحث.
  7. Select Item (جديد): عند نقر المتسوق على منتج في قائمة.

الكتابة غير المألوفة لـ productViewd وproductCart مقصودة، وهي مطابقة لشيفرة زد، فاستخدمها كما هي.

أحداث Product View وAdd to Cart وRemove from Cart تحمل Object منتج واحدًا فيه id وname وsku وcategory وprice وposition (ترتيب العرض)، ويضيف حدثا السلة quantity. ويحمل Select Item Object product (بنفس بنية productViewd) وlistName. أما View Item List فيحمل listName ومصفوفة products فيها item_id وitem_name وitem_sku وcurrency وprice وquantity وitem_category.

Payloads الشراء وبدء الدفع: الحالية والقديمة

يحمل حدث Purchase الحقول order (Object الطلب كاملًا) وtransaction_id (رقم الطلب) وvalue وcurrency ومصفوفة items. المثال التالي مبني من الحقول الموثّقة:

{
  "transaction_id": "order-123",
  "value": 199.98,
  "currency": "SAR",
  "items": [
    {
      "item_id": "product-1",
      "item_name": "Product Name",
      "item_sku": "SKU-123",
      "price": 99.99,
      "quantity": 2,
      "item_category": "Category Name"
    }
  ],
  "order": { }
}

ويستقبل حدث Start Checkout الآن Object cart كاملًا: id وsession_id وproducts (فيها product_id وname وsku وprice وquantity) وproducts_count وproducts_subtotal وtotals وcurrency (الرمز في cart_currency.code) وcoupon.

ولكلا الحدثين شكل قديم (Legacy) موثّق أيضًا. في الشراء القديم تصل مصفوفة مسطّحة transactionItems مع رقم الطلب في id، وفي بدء الدفع القديم تصل حقول مسطّحة مثل cart_id وcart_total وcurrency وitems بعناصر فيها item_id وitem_name وitem_price وitem_quantity. إذا كان الـ Script الخاص بك قد يواجه الشكلين، فوحّدهما أولًا:

function normalizePurchase(evt) {
  if (evt.items) {
    return { orderId: evt.transaction_id, value: evt.value,
             currency: evt.currency, items: evt.items };
  }
  var legacy = evt.transactionItems || [];
  return {
    orderId: evt.id,
    value: legacy.reduce(function (s, i) { return s + Number(i.total || 0); }, 0),
    currency: legacy.length ? legacy[0].currency : undefined,
    items: legacy.map(function (i) {
      return { item_id: i.id, item_name: i.name, item_sku: i.sku,
               price: i.price, quantity: i.quantity, item_category: i.category };
    })
  };
}

إيصال الـ Script الخاص بك عبر Custom Snippets

  1. افتح تطبيقك في لوحة الشركاء وانتقل إلى General Settings.
  2. اضغط Add Snippet وأدخل شيفرة JavaScript أو CSS.
  3. حدّد موضع الـ Script (مثل الـ Header أو التذييل) واضبط أي Parameters مطلوبة.
  4. أرسله للمراجعة والاعتماد. ويمكنك تعديله أو حذفه لاحقًا في أي وقت.

في بيئات الجوال والتطبيقات الهجينة، يوضح ملف Scripts الموثّق (GET /api/v1/scripts) طريقة تجميع الـ Scripts: external_scripts فيه روابط الـ Scripts البعيدة المعتمدة، وapp_scripts_bundle فيه الـ Scripts المضمّنة تحت مفاتيح محجوزة: head وglobal_head_script وpurchase_event وproduct_details_event وadd_to_cart_event وremove_from_cart_event وstart_checkout_event، إضافة إلى params لـ IDs مثل IDs البكسل.

قد يعمل الـ Script الخاص بك على ثيم Vitrin أو على ثيم قديم. تحقّق من window.vitrin، فقيمته true فقط في متاجر Vitrin. وإذا كان الـ Script الخاص بك البعيد يستخدم Parameters في الرابط، فسيصلك vitrin=true في متاجر Vitrin، فتقدّم نسخة أحدث دون فحص داخل الـ Script:

// Inside your script
var hasVitrin = window.vitrin == true;

// How Zid calls a remote script URL:
//   Vitrin: {script_url}?store={store_uuid}&vitrin=true
//   Legacy: {script_url}?store={store_uuid}
تطلب زد اختبار الـ Scripts في المتجر التجريبي قبل النشر، وتحسين أدائها حتى لا تبطئ تحميل واجهة المتجر.

لمطوري الثيمات: zidTracking

يوثّق قسم JS Integration حدثَي تتبّع يستدعيهما مطور الثيم يدويًا، وكلاهما متاح عبر window.zidTracking:

  • zidTracking.sendGaSelectItemEvent({ product, listName, listId, index }) عند نقر المتسوق على منتج في قائمة، مثل شريط المنتجات ذات الصلة. الحقل الوحيد المطلوب هو product، وقيمة listName الافتراضية "products"، وindex يبدأ من الصفر. ويُرسل باسم select_item إلى GA4 وGTM.
  • zidTracking.sendGaCartDetailViewedEvent({ cart }) عند عرض محتوى السلة خارج صفحة السلة، مثل سلة مصغّرة أو درج جانبي. ويُرسل باسم view_cart إلى GA4 وGTM، وباسم ViewCart إلى Facebook.
// Product card click in a list
zidTracking.sendGaSelectItemEvent({
  product: product,
  listName: 'Related Products',
  listId: 'related_products_pdp',
  index: 2
});

// Cart drawer opened (not on /cart)
const cart = await zid.cart.get();
window.zidTracking?.sendGaCartDetailViewedEvent({ cart });
حدث view_cart يُطلق تلقائيًا في صفحة /cart، فلا تستدعه هناك حتى لا يُحتسب مرتين.

الخلاصة

  • توفر زد سبعة أحداث في واجهة المتجر: الشراء، ومشاهدة المنتج، والإضافة إلى السلة، والحذف منها، وبدء الدفع، ومشاهدة قائمة، واختيار منتج.
  • استخدم window.customerAuthState لمعرفة حالة الدخول فورًا، وwindow.customerAsync عندما لا يكون window.customer جاهزًا.
  • تعامل مع الشكلين الحالي والقديم لـ Payloads الشراء وبدء الدفع.
  • أضف الـ Scripts الخاصة بك عبر Custom Snippets في لوحة الشركاء، وتُراجع قبل أن تعمل.
  • مطور الثيم يستدعي sendGaSelectItemEvent وsendGaCartDetailViewedEvent يدويًا، ولا يستدعي view_cart في /cart.

المصادر

  1. StoreFront Events
  2. Understanding the Zid App Scripts and Event Layer
  3. Events (JS Integration)
  4. Cart (JS Integration)
  5. Scripts (Mobile Apps)
  6. Supporting both Vitrin and Legacy themes
  7. Create a public app
  8. Webhooks Overview

ابدأ البناء على زد

سجّل بنفسك في بوابة الشركاء، وطوّر واختبر على متجر تجريبي.

أنشئ حسابك ←

جدول المحتويات

  1. لماذا طبقة الأحداث؟
  2. الـ Objects العامة: من المتسوق؟
  3. الأحداث السبعة المدعومة
  4. Payloads الشراء وبدء الدفع: الحالية والقديمة
  5. إيصال الـ Script الخاص بك عبر Custom Snippets
  6. لمطوري الثيمات: zidTracking

شارك المقال

ابدأ البناء

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

←
الواجهات والتكامل

حدود الطلبات والأخطاء في Zid API: وزّع طلباتك وتعامل مع 429 واقرأ ردود الأخطاء

كيف يعمل حد 60 طلبًا في الدقيقة، وكيف تتراجع عند 429، وما شكل ردود الأخطاء، وكيف تبقيك الصفحات والتخزين المؤقت والـ Webhooks تحت الحد.

6 دقائق
الواجهات والتكامل

دليل زد للتكامل مع ERP: ماذا تبني، وبأي ترتيب

دليل جديد في 53 صفحة: ما يحتاجه تكامل ERP أو نظام محاسبي من متجر زد — ما يصلك عبر Webhook وما تسحبه، الـ OAuth، المبالغ والمرتجعات، وقائمة فحص قبل الإطلاق.

5 دقائق
الواجهات والتكامل

تأمين تطبيقك على زد: توثيق الـ Webhooks وحماية الـ Tokens وأقل الصلاحيات وTLS

تحقّق من كل webhook عبر Basic Auth، واحفظ الـ Tokens والأسرار على الـ Server، واطلب الصلاحيات التي تستخدمها فقط، واجتز فحوص TLS في زد قبل المراجعة.

6 دقائق
شركاء زد

برامج الشركاء

برامج المطورينشركاء التطبيقاتشركاء الثيماتأنشئ حسابك

الموارد

المدونةتقارير زدالتوثيق التقنيمركز مساعدة الشركاءسجل التحديثاتاقترح ميزة

التمكين

إعلانات الشركاء قريبًا

تصفّح السوق

سوق التطبيقاتسوق الثيمات

الشروط والسياسات

الشروط والأحكام للشركاءسياسة الخصوصية

تواصل معنا

احجز اجتماعًا تجاريًااحجز اجتماع دعم تقنيمجتمع الشركاء
زد — القدرة التقنية للتقنية والاتصالاتEnglish
Al-Qudrah Al-Taqniyah for Technology and Communication Companyرقم السجل التجاري 1010365366رقم ضريبة القيمة المضافة 300827827900003