# كيفية إعداد حملة للسلات المتروكة

المتسوقون الذين يضيفون منتجات إلى سلة التسوق ويغادرون دون إتمام الشراء هم من أسهل التحويلات التي يمكن استعادتها. لقد أظهروا بالفعل نية الشراء.

يوضح هذا الدليل كيفية إرسال بريد إلكتروني للسلة المتروكة إليهم في Pushwoosh: أطلق حدث `PW_AbandonedCart` من متجرك، واعرض المنتجات المتبقية في البريد الإلكتروني باستخدام كتلة [Products](/ar/product/content/email-content/drag-and-drop-email-editor/blocks/#products)، وقم بتشغيل الإرسال من Customer Journey.

## ما هو PW_AbandonedCart

`PW_AbandonedCart` هو حدث يشير إلى أن مستخدمًا ترك منتجات في سلة التسوق الخاصة به دون إتمام عملية الشراء. إنه ليس حدثًا [افتراضيًا](/ar/product/audience-data-and-segmentation/events/default-events/) مدمجًا. بل هو اسم حدث مشترك يُستخدم عبر تكاملات التجارة الإلكترونية في Pushwoosh لضمان عمل journeys وكتلة Products والشرائح بنفس الطريقة.

*   **[تكامل Magento](/ar/product/integrations/magento-integration/):** يرسل حدثي `PW_AbandonedCart` و `PW_OrderCreated` تلقائيًا بالنيابة عنك.
*   **[تكامل Shopify](/ar/product/integrations/shopify-integration/):** يرسل أحداث `PW_AbandonedCart` و `PW_OrderCreated` و `PW_AbandonedCartUpdate` (يتم إطلاقه مرة أخرى مع استمرار المتسوق في تعديل نفس عملية الدفع) تلقائيًا بالنيابة عنك، مع إثراء بيانات منتجات السلة من كتالوج المنتجات الخاص بك.
*   **أي متجر آخر أو خلفية مخصصة:** يرسل فريقك كلا الحدثين عبر [postEvent](/ar/developer/api-reference/user-centric-api/#postevent) بالأسماء والسمات الموضحة في [كيفية إرسال تذكيرات السلة المتروكة](#how-to-send-abandoned-cart-reminders).

### ماذا يحدث عند إرسال PW_AbandonedCart

إرسال `PW_AbandonedCart` يقوم بأمرين من جانب Pushwoosh:

1.  يتم تسجيله مثل أي حدث مخصص آخر، لذا يمكنك رؤيته في [إحصائيات الأحداث](/ar/product/audience-data-and-segmentation/events/) واستخدامه في [الشرائح](/ar/product/audience-data-and-segmentation/segmentation/create-segments/by-events/).
2.  يقوم Pushwoosh بتخزين محتويات السلة ويضيف للمستخدم الوسوم التالية:
    *   **PW_AbandonedCartID:** معرف للسلة الحالية، يُستخدم لجلب محتوياتها عند وقت الإرسال.
    *   **PW_AbandonedCartDate:** قيمة `abandonedDate` من حمولة الحدث.

### ماذا يحدث عند إرسال PW_OrderCreated

عندما يقوم المتسوق بإجراء طلب، أرسل `PW_OrderCreated` (أو `PW_OrderUpdated`). يقوم Pushwoosh بمسح `PW_AbandonedCartID` و `PW_AbandonedCartDate` لذلك المستخدم على الفور. لا تتم مطابقة قيم `orderId`: أي طلب من المستخدم يزيل كلا الوسمين، حتى لو كان الشراء لسلة مختلفة.

**مثال:** متسوق يترك سلة `ORDER-100`، ثم يشتري `ORDER-200` قبل إرسال التذكير. يقوم Pushwoosh بمسح الوسوم، لذلك لن يتلقى تذكيرًا بخصوص `ORDER-100`.

<Aside type="note" title="ماذا يظهر في البريد الإلكتروني للتذكير">
تقرأ كتلة Products السلة المخزنة في ملف تعريف المستخدم عند وقت الإرسال. ولا تستخدم قائمة المنتجات من حدث `PW_AbandonedCart` الذي بدأ الـ journey.

*   **نفس orderId:** كل حدث `PW_AbandonedCart` جديد يقوم بالكتابة فوق السلة المخزنة. يعرض التذكير أحدث المنتجات.
*   **orderId مختلف:** يقوم Pushwoosh بتخزين سلة منفصلة. لا يتم دمج المنتجات.
</Aside>

## كيفية إرسال تذكيرات السلة المتروكة

اتبع هذه الخطوات لإنشاء الأحداث، وإرسالها من متجرك، وبناء البريد الإلكتروني، وإطلاق Customer Journey.

### إنشاء الأحداث في Control Panel الخاص بك

[يقوم Pushwoosh بإنشاء](/ar/product/audience-data-and-segmentation/events/#1-create-events-in-pushwoosh-control-panel) حدث وسماته تلقائيًا من أول استدعاء `postEvent` تحت اسم لا يتعرف عليه، مستنتجًا نوع كل سمة من القيمة المرسلة. هذا الاستنتاج غير موثوق به لحقول المبالغ المالية في `PW_AbandonedCart`. قم بتعريف كلا الحدثين بشكل صريح لضمان تعيين الأنواع بشكل صحيح:

1.  اذهب إلى **Audience → Events** في Pushwoosh Control Panel الخاص بك وانقر على **Create Event**.
2.  أنشئ حدثًا مخصصًا باسم `PW_AbandonedCart` بالسمات التالية:

| السمة | النوع |
| :--- | :--- |
| `email` | string |
| `orderId` | string |
| `customerId` | string |
| `orderUrl` | string |
| `abandonedDate` | date |
| `createdDate` | date |
| `totalPrice` | decimal (price) |
| `shippingAmount` | decimal (price) |
| `taxAmount` | decimal (price) |
| `discountAmount` | decimal (price) |
| `currency` | string |

3.  كرر العملية لـ `PW_OrderCreated` بسمة `orderId` واحدة.

<Aside type="caution" title="استخدم أنواع السمات الصحيحة">
يقوم Pushwoosh بتخزين كل قيمة سمة فقط بالنوع المحدد لها، سواء تم تعريفه هنا أو تم استنتاجه لسمة تم إنشاؤها تلقائيًا. يتم تجاهل أي قيمة لا تتطابق مع النوع بصمت، ولا يزال `postEvent` يعيد نجاحًا، لذلك لن ترى في الاستجابة أنه تم فقدان البيانات. يمكنك إصلاح النوع الخاطئ لاحقًا عن طريق تحرير الحدث في Control Panel، ولكن أي بيانات تم إرسالها قبل الإصلاح قد فُقدت بالفعل.

لكي تعمل ميزة السلة المتروكة، طابق الأنواع في الجدول أعلاه:

*   **حقول المبالغ المالية** (`totalPrice`, `shippingAmount`, `taxAmount`, `discountAmount`): استخدم **decimal (price)**. إذا تُركت دون تعريف، فإن قيمة عدد صحيح مثل `129` يتم استنتاجها كـ **integer**. إذا تم تعريفها كـ **string**، فلن يتم تخزين السلة ولن يتم تعيين أي وسوم. إذا تم تعريفها كـ **integer**، فإن `129.90` تصبح `129`.
*   **التواريخ** (`abandonedDate`, `createdDate`): استخدم **date**.
*   **items:** لا تقم بإضافتها إلى تعريف الحدث. أرسلها في حمولة JSON كمصفوفة من الكائنات. استخدم أرقام JSON حقيقية لـ `price` و `quantity`، وليس سلاسل نصية بين علامتي اقتباس.
</Aside>

[تعرف على المزيد حول إنشاء الأحداث المخصصة](/ar/product/audience-data-and-segmentation/events/custom-events/#creating-custom-events).

### إرسال الأحداث من الخلفية الخاصة بك

<Aside type="caution" icon="setting" title="مطلوب مساعدة المطورين">
ستحتاج إلى مساعدة فريق التطوير الخاص بك لإرسال الأحداث من متجرك أو الخلفية. يرجى مشاركة هذا الدليل معهم.
</Aside>

اطلب من فريق التطوير الخاص بك استدعاء [postEvent](/ar/developer/api-reference/user-centric-api/#postevent) كلما تم ترك سلة تسوق، باستخدام مخطط السمات هذا:

```json
{
  "request": {
    "hwid": "8f65b16df378e7a6bece9614e1530fb2",
    "application": "XXXXX-XXXXX",
    "event": "PW_AbandonedCart",
    "attributes": {
      "email": "shopper@example.com",
      "orderId": "ORDER-10293",
      "customerId": "CUST-4471",
      "orderUrl": "https://yourstore.com/cart/restore/ORDER-10293",
      "abandonedDate": "2026-07-28T10:15:00Z",
      "createdDate": "2026-07-28T09:40:00Z",
      "totalPrice": 129.90,
      "shippingAmount": 9.90,
      "taxAmount": 0,
      "discountAmount": 0,
      "currency": "USD",
      "items": [
        {
          "productId": "SKU-4821",
          "name": "Wireless headphones",
          "quantity": 1,
          "price": 119.90,
          "sku": "SKU-4821",
          "description": "Over-ear, noise-cancelling",
          "imageUrl": "https://yourstore.com/media/sku-4821.jpg",
          "productUrl": "https://yourstore.com/products/sku-4821",
          "category": "Audio"
        }
      ]
    },
    "userId": "shopper@example.com"
  }
}
```

عندما تتحول السلة إلى طلب، أرسل `PW_OrderCreated` مع `orderId` فقط لمسح وسوم السلة:

```json
{
  "request": {
    "hwid": "8f65b16df378e7a6bece9614e1530fb2",
    "application": "XXXXX-XXXXX",
    "event": "PW_OrderCreated",
    "attributes": {
      "orderId": "ORDER-10293"
    },
    "userId": "shopper@example.com"
  }
}
```

<Aside type="tip">
إذا كنت تستخدم [تكامل Magento](/ar/product/integrations/magento-integration/#abandoned-cart-sync-configuration) أو [تكامل Shopify](/ar/product/integrations/shopify-integration/#part-5-track-orders-carts-and-checkout-steps)، فلن تحتاج إلى إرسال هذه الأحداث من الخلفية الخاصة بك. يرسل Magento حدثي `PW_AbandonedCart` و `PW_OrderCreated` بالنيابة عنك وفقًا لجدول زمني؛ ويرسل Shopify هذه الأحداث (بالإضافة إلى `PW_AbandonedCartUpdate` لتعديلات الدفع الجارية) من webhooks في الوقت الفعلي.
</Aside>

### إضافة كتلة Products إلى بريدك الإلكتروني

1.  افتح [محرر محتوى البريد الإلكتروني](/ar/product/content/email-content/drag-and-drop-email-editor/) وأضف كتلة [Products](/ar/product/content/email-content/drag-and-drop-email-editor/blocks/#products) إلى لوحة العمل.
2.  في لوحة الإعدادات، اضبط **Source** على [Cart](/ar/product/content/email-content/drag-and-drop-email-editor/blocks/#show-items-from-the-cart).

<Aside type="note">
يحتاج مصدر **Cart** في كتلة Products إلى **Content Templates** في خطتك و [API access token](/ar/developer/api-reference/api-access-token/). راجع [كتلة Products](/ar/product/content/email-content/drag-and-drop-email-editor/blocks/#products).
</Aside>

3.  اضبط **Max products shown** لتحديد عدد منتجات السلة التي تظهر في البريد الإلكتروني.

<img src="/lifecycle-marketing-campaigns-how-to-set-up-an-abandoned-cart-campaign-1.webp" alt="إعدادات كتلة Products مع تعيين المصدر إلى Cart و Max products shown"/>

4.  صمم الشبكة وقالب البطاقة حسب الحاجة. راجع [تصميم الشبكة](/ar/product/content/email-content/drag-and-drop-email-editor/blocks/#style-the-grid).

<img src="/lifecycle-marketing-campaigns-how-to-set-up-an-abandoned-cart-campaign-2.webp" alt="كتلة Products على لوحة عمل البريد الإلكتروني مع إعدادات قالب البطاقة وتصميم الشبكة" width="580"/>

عند إرسال البريد الإلكتروني، تبحث كتلة Products عن السلة المخزنة لكل مستلم باستخدام وسم `PW_AbandonedCartID` الخاص به. ثم تملأ الكتلة بمنتجات السلة الحالية: الصورة، العنوان، السعر، ورابط للعودة إلى السلة. يأتي التخطيط من قالب البطاقة الذي قمت بتعيينه في المحرر. المستلمون الذين ليس لديهم هذا الوسم (لم يتركوا شيئًا، أو أتموا الطلب بالفعل) يتخطون الكتلة بدلاً من عرض محتوى فارغ، لذا من الآمن استخدامها في حملة أوسع أيضًا.

<Aside type="tip">
مصدر Cart متاح في محرر محتوى البريد الإلكتروني. لتذكير المتسوقين بإشعار push بدلاً من ذلك، استخدم خطوة [Push](/ar/product/customer-journey/journey-elements/channels/push/) مع [التخصيص](/ar/product/personalization/dynamic-content/) الذي يشير إلى تفاصيل السلة من الحدث.
</Aside>

### بناء Customer Journey

1.  أضف [Trigger-based Entry](/ar/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/) باستخدام حدث `PW_AbandonedCart`.
2.  أضف خطوة [Wait for Trigger](/ar/product/customer-journey/journey-elements/flow-controls/wait-for-trigger/). اضبط فترة الانتظار الخاصة بها على ساعة أو ساعتين. قم بتسمية الفرع **Order placed** وأضف حدث `PW_OrderCreated` إليه.

<Aside type="caution">
اضبط فترة الانتظار على خطوة **Wait for Trigger** نفسها. لا تقم بإضافة خطوة **Time Delay** منفصلة قبلها.

**Wait for Trigger** تبدأ فقط في الاستماع لحدث `PW_OrderCreated` بمجرد وصول المتسوق إلى تلك الخطوة. إذا جاءت خطوة **Time Delay** أولاً وقام المتسوق بإجراء طلب خلال فترة التأخير هذه، فلن يتم اكتشاف حدث الطلب. ينتقل المتسوق إلى فرع **Not triggered**، ولكن `PW_OrderCreated` يكون قد مسح بالفعل `PW_AbandonedCartID`. لا تجد كتلة Products أي سلة وتتخطاها. لا يزال المتسوق يتلقى البريد الإلكتروني للسلة المتروكة بدون منتجات، على الرغم من أنه قد أتم عملية الشراء بالفعل.
</Aside>

3.  وجه فرع **Order placed** إلى [Exit](/ar/product/customer-journey/journey-elements/flow-controls/exit/). لقد اشترى المستخدم بالفعل، لذا لا تذكره.
4.  وجه فرع **Not triggered** إلى خطوة [Email](/ar/product/customer-journey/journey-elements/channels/email/). احفظ البريد الإلكتروني الذي أنشأته في [إضافة كتلة Products إلى بريدك الإلكتروني](#add-a-products-block-to-your-email) كـ [محتوى بريد إلكتروني](/ar/product/content/email-content/)، ثم حدده كمحتوى لهذه الخطوة.

<img src="/lifecycle-marketing-campaigns-how-to-set-up-an-abandoned-cart-campaign-3.webp" alt="لوحة عمل Customer Journey مع Trigger-based Entry، و Wait for Trigger مع فرعي Order placed و Not triggered، وخطوات Email و Exit، وبدون Time Delay"/>

### اختبر قبل الإطلاق

1.  أرسل حدث `PW_AbandonedCart` اختباريًا لجهاز اختبار. لا تقم بتعيين وسم `PW_AbandonedCartID` يدويًا: تقوم كتلة Products بتحميل محتويات السلة من السلة المخزنة التي ينشئها الحدث، وليس من قيمة الوسم. بدون حدث حقيقي، سيتم عرض الكتلة فارغة.
2.  قم بمعاينة البريد الإلكتروني وتأكد من التخطيط ومحتوى المنتج قبل إرساله إلى المتسوقين الحقيقيين.