# কীভাবে একটি পরিত্যক্ত কার্ট ক্যাম্পেইন সেট আপ করবেন

যেসব ক্রেতারা কার্টে আইটেম যোগ করে এবং না কিনেই চলে যায়, তাদের পুনরুদ্ধার করা সবচেয়ে সহজ কনভার্সনগুলির মধ্যে অন্যতম। তারা ইতিমধ্যেই কেনার ইচ্ছা প্রকাশ করেছে।

এই গাইডটি দেখায় কিভাবে Pushwoosh-এ তাদের একটি পরিত্যক্ত কার্ট ইমেল পাঠাতে হয়: আপনার স্টোর থেকে `PW_AbandonedCart` ইভেন্টটি ফায়ার করুন, [Products](/bn/product/content/email-content/drag-and-drop-email-editor/blocks/#products) ব্লক ব্যবহার করে ইমেলের মধ্যে ফেলে যাওয়া আইটেমগুলি দেখান, এবং একটি Customer Journey থেকে পাঠানো ট্রিগার করুন।

## PW_AbandonedCart কী

`PW_AbandonedCart` চিহ্নিত করে যে একজন ব্যবহারকারী না কিনেই তাদের কার্টে আইটেম রেখে গেছে। এটি একটি বিল্ট-ইন [default event](/bn/product/audience-data-and-segmentation/events/default-events/) নয়। এটি একটি শেয়ার্ড ইভেন্টের নাম যা Pushwoosh-এর ই-কমার্স ইন্টিগ্রেশন জুড়ে ব্যবহৃত হয় যাতে journeys, Products ব্লক, এবং সেগমেন্টগুলি একই ভাবে কাজ করে।

*   **[Magento integration](/bn/product/integrations/magento-integration/):** আপনার জন্য স্বয়ংক্রিয়ভাবে `PW_AbandonedCart` এবং `PW_OrderCreated` পাঠায়।
*   **[Shopify integration](/bn/product/integrations/shopify-integration/):** আপনার জন্য স্বয়ংক্রিয়ভাবে `PW_AbandonedCart`, `PW_OrderCreated`, এবং `PW_AbandonedCartUpdate` (ক্রেতা একই চেকআউট সম্পাদনা করতে থাকলে আবার ফায়ার হয়) পাঠায়, আপনার Product Catalog থেকে কার্ট আইটেম সমৃদ্ধ করে।
*   **অন্য কোনো স্টোর বা কাস্টম ব্যাকএন্ড:** আপনার টিম [কিভাবে পরিত্যক্ত কার্ট রিমাইন্ডার পাঠাতে হয়](#how-to-send-abandoned-cart-reminders)-এ থাকা নাম এবং অ্যাট্রিবিউট সহ [postEvent](/bn/developer/api-reference/user-centric-api/#postevent) এর মাধ্যমে উভয় ইভেন্ট পাঠায়।

### আপনি যখন PW_AbandonedCart পাঠান তখন কী হয়

Pushwoosh-এর দিকে `PW_AbandonedCart` পাঠালে দুটি জিনিস হয়:

1.  এটি অন্য যেকোনো কাস্টম ইভেন্টের মতো রেকর্ড করা হয়, তাই আপনি এটি [Event statistics](/bn/product/audience-data-and-segmentation/events/)-এ দেখতে পারেন এবং [segments](/bn/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` ইভেন্টের আইটেম তালিকা ব্যবহার করে না।

*   **একই `orderId`:** প্রতিটি নতুন `PW_AbandonedCart` সংরক্ষিত কার্টটিকে ওভাররাইট করে। রিমাইন্ডারটি সর্বশেষ আইটেমগুলি দেখায়।
*   **ভিন্ন `orderId`:** Pushwoosh একটি পৃথক কার্ট সংরক্ষণ করে। আইটেমগুলি একত্রিত করা হয় না।
</Aside>

<span id="how-to-send-abandoned-cart-reminders" />

## কিভাবে পরিত্যক্ত কার্ট রিমাইন্ডার পাঠাতে হয়

ইভেন্টগুলি তৈরি করতে, আপনার স্টোর থেকে সেগুলি পাঠাতে, ইমেল তৈরি করতে এবং Customer Journey চালু করতে এই পদক্ষেপগুলি অনুসরণ করুন।

### আপনার Control Panel-এ ইভেন্ট তৈরি করুন

[Pushwoosh স্বয়ংক্রিয়ভাবে তৈরি করে](/bn/product/audience-data-and-segmentation/events/#1-create-events-in-pushwoosh-control-panel) একটি ইভেন্ট এবং তার অ্যাট্রিবিউটগুলি প্রথম `postEvent` কল থেকে এমন একটি নামের অধীনে যা এটি চিনতে পারে না, প্রেরিত মান থেকে প্রতিটি অ্যাট্রিবিউটের টাইপ অনুমান করে। `PW_AbandonedCart`-এর টাকার ফিল্ডগুলির জন্য এই অনুমান নির্ভরযোগ্য নয়। উভয় ইভেন্ট স্পষ্টভাবে ঘোষণা করুন যাতে টাইপগুলি সঠিকভাবে সেট করা হয়:

1.  আপনার Pushwoosh Control Panel-এ **Audience → Events**-এ যান এবং **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.  একটি একক `orderId` অ্যাট্রিবিউট সহ `PW_OrderCreated`-এর জন্য পুনরাবৃত্তি করুন।

<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 পেলোডে অবজেক্টের একটি অ্যারে হিসাবে পাঠান। `price` এবং `quantity`-এর জন্য আসল JSON সংখ্যা ব্যবহার করুন, কোটেড স্ট্রিং নয়।
</Aside>

[কাস্টম ইভেন্ট তৈরি সম্পর্কে আরও জানুন](/bn/product/audience-data-and-segmentation/events/custom-events/#creating-custom-events)।

### আপনার ব্যাকএন্ড থেকে ইভেন্টগুলি পাঠান

<Aside type="caution" icon="setting" title="ডেভেলপারের সহায়তা প্রয়োজন">
আপনার স্টোর বা ব্যাকএন্ড থেকে ইভেন্ট পাঠাতে আপনার ডেভেলপমেন্ট টিমের সাহায্যের প্রয়োজন হবে। অনুগ্রহ করে এই গাইডটি তাদের সাথে শেয়ার করুন।
</Aside>

আপনার ডেভেলপমেন্ট টিমকে বলুন যখনই কোনো কার্ট পরিত্যক্ত হয়, তখন এই অ্যাট্রিবিউট স্কিমা ব্যবহার করে [postEvent](/bn/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"
  }
}
```

যখন কার্টটি একটি অর্ডারে রূপান্তরিত হয়, তখন কার্ট ট্যাগগুলি মুছে ফেলার জন্য শুধুমাত্র `orderId` সহ `PW_OrderCreated` পাঠান:

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

<Aside type="tip">
আপনি যদি [Magento integration](/bn/product/integrations/magento-integration/#abandoned-cart-sync-configuration) বা [Shopify integration](/bn/product/integrations/shopify-integration/#part-5-track-orders-carts-and-checkout-steps) ব্যবহার করেন, তাহলে আপনার ব্যাকএন্ড থেকে এই ইভেন্টগুলি পাঠানোর প্রয়োজন নেই। Magento একটি সময়সূচী অনুযায়ী আপনার জন্য `PW_AbandonedCart` এবং `PW_OrderCreated` পাঠায়; Shopify রিয়েল টাইমে ওয়েবহুক থেকে সেগুলি (এবং চলমান চেকআউট সম্পাদনার জন্য `PW_AbandonedCartUpdate`) পাঠায়।
</Aside>

<span id="add-a-products-block-to-your-email" />

### আপনার ইমেইলে একটি Products ব্লক যোগ করুন

1.  [email content editor](/bn/product/content/email-content/drag-and-drop-email-editor/) খুলুন এবং ক্যানভাসে একটি [Products](/bn/product/content/email-content/drag-and-drop-email-editor/blocks/#products) ব্লক যোগ করুন।
2.  সেটিংস প্যানেলে, **Source** হিসেবে [Cart](/bn/product/content/email-content/drag-and-drop-email-editor/blocks/#show-items-from-the-cart) সেট করুন।

<Aside type="note">
Products ব্লকের **Cart** সোর্সের জন্য আপনার প্ল্যানে **Content Templates** এবং একটি [API access token](/bn/developer/api-reference/api-access-token/) প্রয়োজন। দেখুন [Products block](/bn/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="Source হিসেবে Cart এবং Max products shown সেট করা সহ Products ব্লকের সেটিংস"/>

4.  প্রয়োজন অনুযায়ী গ্রিড এবং কার্ড টেমপ্লেট স্টাইল করুন। দেখুন [Style the grid](/bn/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](/bn/product/customer-journey/journey-elements/channels/push/) ধাপ ব্যবহার করুন যেখানে [personalization](/bn/product/personalization/dynamic-content/) থাকবে যা ইভেন্ট থেকে কার্টের বিবরণ উল্লেখ করে।
</Aside>

### Customer Journey তৈরি করুন

1.  `PW_AbandonedCart` ইভেন্ট ব্যবহার করে একটি [Trigger-based Entry](/bn/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/) যোগ করুন।
2.  একটি [Wait for Trigger](/bn/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](/bn/product/customer-journey/journey-elements/flow-controls/exit/)-এ রুট করুন। ব্যবহারকারী ইতিমধ্যেই কিনে ফেলেছে, তাই তাদের মনে করিয়ে দেবেন না।
4.  **Not triggered** শাখাকে [Email](/bn/product/customer-journey/journey-elements/channels/email/) ধাপে রুট করুন। [আপনার ইমেইলে একটি Products ব্লক যোগ করুন](#add-a-products-block-to-your-email)-এ তৈরি করা ইমেলটি [email content](/bn/product/content/email-content/) হিসেবে সংরক্ষণ করুন, তারপর এই ধাপের বিষয়বস্তু হিসেবে এটি নির্বাচন করুন।

<img src="/lifecycle-marketing-campaigns-how-to-set-up-an-abandoned-cart-campaign-3.webp" alt="Trigger-based Entry, Order placed এবং Not triggered শাখা সহ Wait for Trigger, Email এবং Exit ধাপ, এবং কোনো Time Delay ছাড়া Customer Journey ক্যানভাস"/>

### চালু করার আগে পরীক্ষা করুন

1.  একটি টেস্ট ডিভাইসের জন্য একটি টেস্ট `PW_AbandonedCart` ইভেন্ট পাঠান। `PW_AbandonedCartID` ট্যাগটি ম্যানুয়ালি সেট করবেন না: Products ব্লক ইভেন্টের দ্বারা তৈরি সংরক্ষিত কার্ট থেকে কার্টের বিষয়বস্তু লোড করে, ট্যাগ মান থেকে নয়। একটি আসল ইভেন্ট ছাড়া, ব্লকটি খালি রেন্ডার হবে।
2.  আসল ক্রেতাদের কাছে পাঠানোর আগে ইমেলটি প্রিভিউ করুন এবং লেআউট ও পণ্যের বিষয়বস্তু নিশ্চিত করুন।