# খেলোয়াড়ের ডেটা সংগ্রহ করুন

Pushwoosh-কে জানতে হবে আপনার খেলোয়াড় কারা এবং তারা গেমে কী করে। ইভেন্ট কাজগুলো রেকর্ড করে, আর ট্যাগ প্রতিটি খেলোয়াড়ের বর্তমান অবস্থা ধরে রাখে।

<Aside type="tip" title="AI Assistant-কে দিয়ে ইভেন্ট ও ট্যাগ তৈরি করিয়ে নিন">
[AI Assistant](/bn/product/pushwoosh-ai/ai-assistant/) আপনার অ্যাপ্লিকেশনে এই পেজের ইভেন্ট ও ট্যাগ তৈরি করতে পারে। এটিকে পেজের লিঙ্ক পাঠান এবং ট্যাগগুলোকে User-specific করতে বলুন। অনুমোদন দেওয়ার আগে প্রতিটি পরিবর্তন যাচাই করুন।
</Aside>

<span id="identify-players-by-user-id" />

## User ID দিয়ে খেলোয়াড়দের শনাক্ত করুন

<Aside type="caution" icon="setting" title="ডেভেলপারের সহায়তা প্রয়োজন">
User ID সেট করা আপনার গেমের কোডে একটি পরিবর্তন। অনুগ্রহ করে [User ID সংগ্রহ](/bn/developer/first-steps/collecting-user-ids/#setuserid-sdk-method) আপনার ডেভেলপারদের সঙ্গে শেয়ার করুন।
</Aside>

Pushwoosh একজন খেলোয়াড়ের সব ডিভাইসকে একটি User ID-র সঙ্গে যুক্ত করে, ফলে আপনার সেগমেন্ট ও Journey একজন মানুষকে একজন খেলোয়াড় হিসেবেই গণ্য করে। খেলোয়াড় লগ ইন করার আগে কোনো ডিভাইস যে ইভেন্ট ও User-specific ট্যাগ রেকর্ড করেছিল, সেগুলো তার আগের ID-র সঙ্গেই থেকে যায়। Device-specific ট্যাগ ডিভাইসের সঙ্গে সরে যায়।

ডিফল্টভাবে, Pushwoosh প্রতিটি ডিভাইসের হার্ডওয়্যার ID (HWID)-কে তার User ID হিসেবে ব্যবহার করে। ফলে দুটি ডিভাইসে খেলা একজন খেলোয়াড় দুজন খেলোয়াড় হিসেবে গণ্য হন। লগ ইন করা খেলোয়াড়দের ক্ষেত্রে এটি এড়াতে, আপনার নিজস্ব অ্যাকাউন্ট ID-কে তাদের User ID হিসেবে সেট করুন:

1. কোন ID ব্যবহার করবেন তা বেছে নিন। আপনার গেম প্রতিটি খেলোয়াড়কে আগে থেকেই যে অ্যাকাউন্ট ID দেয়, সেটি নিন।
2. খেলোয়াড় লগ ইন করলে এই ID দিয়ে `setUserId` কল করতে আপনার ডেভেলপারদের বলুন।
3. ফলাফল যাচাই করুন। একটি টেস্ট ডিভাইসে গেমে লগ ইন করুন, তারপর **অডিয়েন্স** → **ব্যবহারকারী এক্সপ্লোরার** খুলুন, **ব্যবহারকারী ID** দিয়ে খুঁজুন এবং অ্যাকাউন্ট ID লিখুন। খেলোয়াড়ের প্রোফাইল খুলে যায়।

যে খেলোয়াড়রা কখনো লগ ইন করেন না, তাদের User ID হিসেবে HWID থেকে যায়, এবং Pushwoosh তাদের জন্য এটি সেট করে।

User ID ও ডিভাইসের মধ্যে সম্পর্ক সম্পর্কে আরও জানতে, [ব্যবহারকারী (ইউজার আইডি)](/bn/product/pushwoosh-knowledge-hub/users-userids/) দেখুন।

<span id="set-up-the-events-to-track" />

## ট্র্যাক করার জন্য ইভেন্ট সেট আপ করুন

ইভেন্টের মাধ্যমেই Pushwoosh জানতে পারে একজন খেলোয়াড় কী করছেন। প্রথমে এগুলো তৈরি করুন: [সেগমেন্ট](/bn/tutorials/industry-playbooks/mobile-games/build-the-segments/) খেলোয়াড়দের তাদের ট্রিগার করা ইভেন্ট অনুযায়ী দলে ভাগ করে, আর [Journey](/bn/tutorials/industry-playbooks/mobile-games/build-the-journeys/) কোনো ইভেন্ট ঘটলে শুরু হয়।

কিছু তৈরি করার আগে ইভেন্ট ও তাদের অ্যাট্রিবিউট দুটোরই পরিকল্পনা করুন। [গেমিং অ্যাপের জন্য প্রস্তাবিত ইভেন্ট](/bn/product/audience-data-and-segmentation/events/recommended-events-for-gaming-apps/)-এ অ্যাট্রিবিউটসহ তৈরি গেমিং ইভেন্টের তালিকা আছে, আর [কাস্টম ইভেন্ট](/bn/product/audience-data-and-segmentation/events/custom-events/)-এ নিজের ইভেন্ট কীভাবে নির্ধারণ করবেন তা ব্যাখ্যা করা আছে।

ইভেন্ট দুই ধরনের:

* [ডিফল্ট ইভেন্ট](#default-events): ডিভাইস রেজিস্ট্রেশন, অ্যাপ খোলা, কেনাকাটা এবং আরও কয়েকটি। SDK এগুলো পাঠায়, এবং কন্ট্রোল প্যানেলে আপনাকে এগুলো তৈরি করতে হয় না।
* [কাস্টম ইভেন্ট](#custom-events): লেভেল সম্পন্ন, রিওয়ার্ড সংগ্রহ, স্টোর খোলা এবং অন্যান্য। আপনার ডেভেলপাররা [এগুলো গেম থেকে পাঠান](#send-the-events-from-the-game), এবং প্রতিটি ইভেন্ট প্রথমবার আসার সময় Pushwoosh সেটি তৈরি করে। অ্যাট্রিবিউটের ধরন নিজে বেছে নিতে, আগে কন্ট্রোল প্যানেলে ইভেন্টটি তৈরি করুন। [কাস্টম ইভেন্ট](/bn/product/audience-data-and-segmentation/events/custom-events/) এবং [স্বয়ংক্রিয়ভাবে তৈরি ইভেন্ট](/bn/product/audience-data-and-segmentation/events/#events-created-automatically) দেখুন।

<span id="default-events" />

### ডিফল্ট ইভেন্ট

SDK আপনার হয়ে এই ইভেন্টগুলো পাঠায়। এই প্লেবুকের বেশিরভাগ Journey-র জন্য এগুলো দরকার: অনবোর্ডিং, উইন-ব্যাক এবং কেনাকাটার অফার।

* [`PW_DeviceRegistered`](/bn/product/audience-data-and-segmentation/events/default-events/#pw_deviceregistered): একটি ডিভাইস তার প্রথম পুশ টোকেন পেয়েছে। গেম যখন `registerForPushNotifications` কল করে কেবল তখনই SDK টোকেনের অনুরোধ করে, যা iOS-এ অনুমতির প্রম্পটও দেখায়, এবং খেলোয়াড় যা-ই উত্তর দিন না কেন টোকেন আসে। গেম যদি প্রথম লঞ্চের পরে অনুমতি চায়, তাহলে ইভেন্টটি সেই মুহূর্তেই ফায়ার হয়, ইনস্টলের সময় নয়। নতুন খেলোয়াড়দের ধরতে, এর বদলে `Tutorial started` ইভেন্ট ব্যবহার করুন।
* [`PW_ApplicationOpen`](/bn/product/audience-data-and-segmentation/events/default-events/#pw_applicationopen): একজন খেলোয়াড় গেম খুলেছেন। যারা এখনও খেলছেন এবং যারা খেলা বন্ধ করেছেন তাদের খুঁজে বের করতে এটি দরকার, যাতে আপনি তাদের ফিরিয়ে আনতে পারেন।
* [`PW_InAppPurchase`](/bn/product/audience-data-and-segmentation/events/default-events/#pw_inapppurchase): একজন খেলোয়াড় গেমে কিছু কিনেছেন। পেয়িং ও নন-পেয়িং খেলোয়াড়দের আলাদা করতে এটি দরকার, যেমন শুধু যারা কখনো পেমেন্ট করেননি তাদের প্রথম কেনাকাটার অফার দিতে। আপনার ডেভেলপাররা iOS SDK-তে কেনাকাটা ট্র্যাকিং চালু করেন বা কোড থেকে কেনাকাটা পাঠান, আর Android-এ তারা সবসময় কোড থেকে পাঠান। iOS-এ এটি কেবল App Store Connect-এ কনফিগার করা প্রোডাক্টের জন্য ফায়ার হয়।
* ঐচ্ছিক: [`PW_UserIdle`](/bn/product/audience-data-and-segmentation/events/default-events/#pw_useridle): কোনো খেলোয়াড় আপনার নির্ধারিত সময় ধরে, কমপক্ষে 30 সেকেন্ড, স্ক্রিন স্পর্শ না করলে ফায়ার হয়। এটি এমন একটি Journey শুরু করে যা খেলোয়াড় আটকে গেলে in-app ইঙ্গিত দেখায়। আপনার ডেভেলপাররা SDK কনফিগারেশনে এটি চালু করেন।
* ঐচ্ছিক: [`PW_ApplicationExit`](/bn/product/audience-data-and-segmentation/events/default-events/#pw_applicationexit): কোনো খেলোয়াড় গেম ছেড়ে গিয়ে 10 থেকে 30 সেকেন্ডের মধ্যে ফিরে না এলে ফায়ার হয়। মাঝপথে ছেড়ে যাওয়া খেলোয়াড়দের জন্য এটি একটি উইন-ব্যাক Journey শুরু করে। আপনার ডেভেলপাররা SDK কনফিগারেশনে এটি চালু করেন।

SDK প্রথমবার পাঠানোর পরে ইভেন্টটি **অডিয়েন্স** → **ইভেন্ট**-এ দেখা যায়।

অন্য কোনো ডিফল্ট ইভেন্ট আগেভাগে তালিকায় যোগ করতে, যেমন গেম আপডেট লাইভ হওয়ার আগে সেগমেন্ট তৈরি করতে:

1. **অডিয়েন্স** → **ইভেন্ট** খুলুন এবং **ইভেন্ট তৈরি করুন**-এ ক্লিক করুন।
2. **ডিফল্ট ইভেন্ট** বেছে নিন।
3. ইভেন্টটি নির্বাচন করুন এবং **সক্রিয় করুন**-এ ক্লিক করুন।

ধাপ 3-এর তালিকায় `PW_UserIdle` এবং `PW_ApplicationExit` নেই। SDK প্রথমবার এগুলো পাঠানোর পরেই কেবল এগুলো **অডিয়েন্স** → **ইভেন্ট**-এ দেখা যায়।


এগুলো ও অন্যান্য ডিফল্ট ইভেন্ট সম্পর্কে বিস্তারিত জানতে, [ডিফল্ট ইভেন্ট](/bn/product/audience-data-and-segmentation/events/default-events/) দেখুন।

<span id="custom-events" />

### কাস্টম ইভেন্ট

কাস্টম ইভেন্ট আপনার গেমে যা ঘটে তা রেকর্ড করে, যেমন একটি লেভেল সম্পন্ন করা। গেমের কোনগুলো দরকার তা আপনি বেছে নেন, আপনার ডেভেলপাররা সেগুলো পাঠান, আর আপনি যাচাই করেন যে সেগুলো পৌঁছাচ্ছে।

<span id="choose-the-events-to-track" />

#### ট্র্যাক করার জন্য ইভেন্ট বেছে নিন

আপনার গেমের প্রয়োজনীয় ইভেন্ট এবং প্রতিটির সঙ্গে থাকা অ্যাট্রিবিউট বেছে নিন, যেমন `Level completed`-এর জন্য `level_id`। টেবিলে উদাহরণ দেওয়া আছে: এগুলো যেমন আছে তেমন ব্যবহার করুন, নাম বদলান বা নিজের ইভেন্ট যোগ করুন। আপনি যে Journey-গুলো চালু করবেন, কেবল সেগুলোর প্রয়োজনীয় ইভেন্টই ট্র্যাক করুন।

| ইভেন্ট | কখন ফায়ার হয় | মূল অ্যাট্রিবিউট | কী চালায় |
| --- | --- | --- | --- |
| [New level](/bn/product/audience-data-and-segmentation/events/recommended-events-for-gaming-apps/#new-level) | খেলোয়াড় নতুন লেভেলে পৌঁছান | `level_id` (String) | ঐচ্ছিক: আপনার নিজস্ব মাইলস্টোন সেগমেন্ট |
| [Level completed](/bn/product/audience-data-and-segmentation/events/recommended-events-for-gaming-apps/#level-completed) | খেলোয়াড় একটি লেভেল শেষ করেন | `level_id` (String) | এনগেজড নন-পেয়ার ও আটকে থাকা খেলোয়াড় সেগমেন্ট, আটকে থাকা খেলোয়াড়দের জন্য সাহায্য Journey |
| Level failed | খেলোয়াড় একটি লেভেলে ব্যর্থ হন | `level_id` (String) | আটকে থাকা খেলোয়াড় সেগমেন্ট ও Journey |
| Tutorial started | খেলোয়াড় গেমের টিউটোরিয়াল শুরু করেন | `tutorial_name` (String) | অনবোর্ডিং Journey, টিউটোরিয়াল ছেড়ে দেওয়া সেগমেন্ট |
| [Tutorial completed](/bn/product/audience-data-and-segmentation/events/recommended-events-for-gaming-apps/#tutorial-completed) | খেলোয়াড় গেমের টিউটোরিয়াল শেষ করেন | `tutorial_name` (String), `completion` (Boolean) | অনবোর্ডিং Journey, পুশ অনুমতি ফ্লো |
| [Virtual currency earned](/bn/product/audience-data-and-segmentation/events/recommended-events-for-gaming-apps/#virtual-currency-earned) | খেলোয়াড়ের ইন-গেম কারেন্সি ব্যালান্স বাড়ে | `currency_name` (String), `quantity` (Integer) | ঐচ্ছিক: কারেন্সিভিত্তিক আপনার নিজস্ব সেগমেন্ট |
| [Achievement unlocked](/bn/product/audience-data-and-segmentation/events/recommended-events-for-gaming-apps/#achievement-unlocked) | খেলোয়াড় একটি অ্যাচিভমেন্ট আনলক করেন | `achievement_name` (String), `level` (Integer) | অ্যাচিভমেন্ট হান্টার সেগমেন্ট |
| Daily reward claimed | খেলোয়াড় ডেইলি রিওয়ার্ড সংগ্রহ করেন | `day_number` (Integer) | ডেইলি রিওয়ার্ড রিমাইন্ডার Journey |
| Live event joined | খেলোয়াড় একটি লাইভ ইভেন্টে যোগ দেন | `event_id` (String) | লাইভ ইভেন্ট Journey-র কনভার্সন লক্ষ্য |
| Store opened | খেলোয়াড় ইন-গেম স্টোর খোলেন | `section` (String) | স্টোর ছেড়ে যাওয়া খেলোয়াড়দের Journey |

<Aside type="tip" title="আপনার গেমে টিউটোরিয়াল নেই?">
এই প্লেবুকে যেখানেই `Tutorial started` ও `Tutorial completed`-এর উল্লেখ আছে, সেখানে এগুলোর বদলে প্রতিটি নতুন খেলোয়াড়ের প্রথম দুটি কাজের জন্য নিজের ইভেন্ট ব্যবহার করুন, যেমন প্রথম লেভেল শুরু ও শেষ করা।

* প্রথম ইভেন্টটি অনবোর্ডিং Journey শুরু করে, আর দ্বিতীয়টি জানিয়ে দেয় যে খেলোয়াড় শেষ করেছেন। `Tutorial completed`-এর সঙ্গে থাকা `completion` শর্তটি বাদ দিন।
* SDK-গুলো নিজস্ব কোনো ফার্স্ট-লঞ্চ ইভেন্ট পাঠায় না, তাই দুটিকেই আপনার গেমের পাঠানো কাস্টম ইভেন্ট হতে হবে।
</Aside>

<span id="send-the-events-from-the-game" />

#### গেম থেকে ইভেন্ট পাঠান

<Aside type="caution" icon="setting" title="ডেভেলপারের সহায়তা প্রয়োজন">
ইভেন্ট পাঠানো আপনার গেমের কোডে একটি পরিবর্তন। অনুগ্রহ করে [ডেভেলপারদের জন্য ইভেন্ট](/bn/developer/guides/audience-and-segmentation/events/) এবং [গেমিং ইভেন্টের উদাহরণ](/bn/developer/guides/audience-and-segmentation/events/custom-events-examples#gaming-apps) আপনার ডেভেলপারদের সঙ্গে শেয়ার করুন। কাজটি ঘটার মুহূর্তেই তারা প্রতিটি ইভেন্ট `postEvent` দিয়ে পাঠান। কেনাকাটা ও রিওয়ার্ড দেওয়ার ইভেন্ট খেলোয়াড়ের `userId`-সহ গেম সার্ভার থেকে আসা উচিত।
</Aside>

গেম কোন ইভেন্ট পাঠাবে এবং প্রতিটির সঙ্গে কোন অ্যাট্রিবিউট থাকবে, তা আপনার ডেভেলপারদের সঙ্গে ঠিক করে নিন। ইভেন্ট ও অ্যাট্রিবিউটের নাম হুবহু মিলতে হবে।

উদাহরণস্বরূপ, গেম এভাবে `level_id` অ্যাট্রিবিউটসহ `Level completed` পাঠায়:

<Tabs>
<TabItem label="Android">
```java
TagsBundle attributes = new TagsBundle.Builder()
    .putString("level_id", "12")
    .build();

InAppManager.getInstance().postEvent("Level completed", attributes);
```
</TabItem>
<TabItem label="iOS">
```swift
PWInAppManager.shared().postEvent("Level completed", withAttributes: ["level_id": "12"])
```
</TabItem>
</Tabs>

যদি কোনো ইভেন্ট এমন সার্ভারে ঘটে যা আগে থেকেই নিজস্ব ওয়েবহুক পাঠায়, যেমন আপনার গেম ব্যাকএন্ড বা টুর্নামেন্ট সার্ভিস, তাহলে সেটি `postEvent`-এর বদলে [ইনবাউন্ড ওয়েবহুক](/bn/product/integrations/inbound-webhook/)-এর মাধ্যমে Pushwoosh-এ পৌঁছাতে পারে। কন্ট্রোল প্যানেলে আপনি এর পাঠানো ফিল্ডগুলো একটি Pushwoosh ইভেন্টের সঙ্গে ম্যাপ করেন, এবং সেই ইভেন্ট অন্য যেকোনো ইভেন্টের মতোই Journey শুরু করতে পারে।

কোনো ইভেন্ট পৌঁছেছে কি না যাচাই করতে, **অডিয়েন্স** → **ব্যবহারকারী এক্সপ্লোরার** খুলুন, একজন টেস্ট খেলোয়াড় খুঁজুন এবং **ইভেন্টের ইতিহাস** ট্যাব খুলুন।


<span id="track-revenue-as-pw_conversion" />

### PW_Conversion হিসেবে রেভিনিউ ট্র্যাক করুন

`PW_Conversion` প্রতিটি কেনাকাটার পরিমাণ ও মুদ্রা একই ফরম্যাটে রেকর্ড করে। Journey-তে রেভিনিউ লক্ষ্যের জন্য এবং [RFM সেগমেন্টেশন](/bn/product/audience-data-and-segmentation/segmentation/rfm-segmentation/)-এ খরচের স্তরের জন্য এটি দরকার, যা খেলোয়াড়দের তারা কত সাম্প্রতিক, কত ঘন ঘন এবং কত টাকার কেনাকাটা করেন সেই অনুযায়ী দলে ভাগ করে।

iOS SDK যে কেনাকাটাগুলো ট্র্যাক করে, সেগুলো নিজে থেকেই `PW_Conversion`-এ পৌঁছায়, কারণ এগুলোতে `__amount` ও `__currency` অ্যাট্রিবিউট থাকে। Android-এর কেনাকাটার জন্য এগুলোর একটি দরকার:

* আপনার গেম যদি iOS ও Android দুটোতেই চলে, তাহলে আপনার ডেভেলপারদের বলুন Android-এর কেনাকাটা SDK-র পারচেজ মেথডের বদলে `postEvent`-এর মাধ্যমে সাংখ্যিক `__amount` ও `__currency` অ্যাট্রিবিউটসহ `PW_InAppPurchase` হিসেবে পাঠাতে। তখন একই স্বয়ংক্রিয় ম্যাপিং দুটি প্ল্যাটফর্মই কভার করে।
* আপনার গেম যদি শুধু Android-এ চলে, তাহলে নতুন কোড ছাড়াই কেনাকাটাগুলো নিজে ম্যাপ করুন। একটি ইভেন্টে একটিই ম্যাপিং থাকে, তাই iOS কেনাকাটা থাকা গেমে ম্যানুয়াল ম্যাপিং স্বয়ংক্রিয় ম্যাপিংয়ের জায়গা নিয়ে নেবে।

কেনাকাটা নিজে ম্যাপ করতে:

1. **অডিয়েন্স** → **ইভেন্ট** খুলুন এবং কনভার্সন ইভেন্ট সেটিংস খুলুন।
2. `PW_InAppPurchase`-কে কনভার্সন ইভেন্ট হিসেবে যোগ করুন।
3. যে অ্যাট্রিবিউটগুলোতে এর **দাম** ও **মুদ্রা** থাকে, সেগুলো নির্বাচন করুন।
4. **প্রয়োগ করুন**-এ ক্লিক করুন।

<Aside type="caution">
প্রতিটি লেনদেনের জন্য কেবল একটি পদ্ধতি ব্যবহার করুন। আপনার কোড যদি একই কেনাকাটার জন্য `PW_Conversion`-ও পাঠায়, তাহলে Pushwoosh দুটি আলাদা কনভার্সন ইভেন্ট রেকর্ড করে।
</Aside>

সেটআপের সব বিকল্পের জন্য, [রূপান্তর ইভেন্ট](/bn/product/audience-data-and-segmentation/events/conversion-events/) দেখুন।

<span id="track-subscriptions-from-the-stores" />

### স্টোর থেকে সাবস্ক্রিপশন ট্র্যাক করুন

আপনার গেম যদি সাবস্ক্রিপশন বিক্রি করে, যেমন VIP পাস বা ব্যাটল পাস, তাহলে Pushwoosh App Store ও Google Play থেকে সেগুলোর স্ট্যাটাস পরিবর্তনের তথ্য পায়। প্রতিটি পরিবর্তন একটি `PW_Subscription*` ইভেন্ট হিসেবে আসে, যেমন:

* `PW_SubscriptionStart`: একজন খেলোয়াড় সাবস্ক্রাইব করেন।
* `PW_SubscriptionCancel`: একজন খেলোয়াড় অটো-রিনিউয়াল বন্ধ করেন।
* `PW_SubscriptionBillingIssue`: রিনিউয়ালের পেমেন্ট ব্যর্থ হয়।

Journey শুরু করতে এই ইভেন্টগুলো ব্যবহার করুন, যেমন বাতিল করা পাসের মেয়াদ শেষ হওয়ার আগে একটি রিমাইন্ডার।

<Aside type="caution" icon="setting" title="ডেভেলপারের সহায়তা প্রয়োজন">
প্রতিটি কেনাকাটার সঙ্গে গেমকে খেলোয়াড়ের Pushwoosh HWID পাঠাতে হবে:

* iOS-এ, `appAccountToken` হিসেবে।
* Android-এ, `obfuscatedAccountId` হিসেবে। গেম SDK-র `getSubscriptionAccountId()`-এর মান পাঠায়, যা Application Code ও HWID একসঙ্গে, শুধু HWID নয়।

এটি ছাড়া Pushwoosh নোটিফিকেশন পায় কিন্তু কোনো ইভেন্ট রেকর্ড করে না, এবং আগে কেনা সাবস্ক্রিপশন পরে আর মেলানো যায় না। অনুগ্রহ করে [অ্যাপ স্টোর সাবস্ক্রিপশন ট্র্যাকিং](/bn/product/integrations/app-store-subscription-tracking/) ও [Google Play সাবস্ক্রিপশন ট্র্যাকিং](/bn/product/integrations/google-play-subscription-tracking/) আপনার ডেভেলপারদের সঙ্গে শেয়ার করুন।
</Aside>

এই ইভেন্টগুলো শুধু সাবস্ক্রিপশন কভার করে। এককালীন কেনাকাটা, যেমন একটি কয়েন প্যাক, এখনও `PW_InAppPurchase` হিসেবেই আসে।

<span id="store-player-data-in-tags" />

## ট্যাগে খেলোয়াড়ের ডেটা সংরক্ষণ করুন

[ট্যাগ](/bn/product/audience-data-and-segmentation/user-data-tags/) হলো একটি মান যা Pushwoosh খেলোয়াড়ের প্রোফাইলে সংরক্ষণ করে, যেমন খেলোয়াড়ের লেভেল বা খেলোয়াড় পেমেন্ট করেছেন কি না। ইভেন্ট রেকর্ড করে কী ঘটেছে, আর ট্যাগ বর্তমান অবস্থা ধরে রাখে। ট্যাগ আপনাকে সাহায্য করে:

* শুধু নির্দিষ্ট মানের খেলোয়াড়দের বার্তা পাঠাতে, যেমন শুধু পেয়িং খেলোয়াড়দের একটি অফার।
* বার্তার টেক্সটে মানটি বসাতে, যেমন খেলোয়াড়ের লেভেল। [Journey তৈরি করুন](/bn/tutorials/industry-playbooks/mobile-games/build-the-journeys/) দেখুন।

ট্যাগ ঐচ্ছিক। এই প্লেবুকের Journey-গুলো ইভেন্ট এবং Pushwoosh নিজে সেট করা ডিফল্ট ট্যাগের ওপর চলে, তাই শুরুতে আপনি নিজের ট্যাগ বাদ দিতে পারেন। খেলোয়াড়দের দলে ভাগ করার আরও উপায় চাইলে এগুলো যোগ করুন। [ট্যাগ অনুযায়ী সেগমেন্ট](/bn/tutorials/industry-playbooks/mobile-games/build-the-segments/#segments-by-tags) দেখুন।

### আপনার নিজস্ব ট্যাগ

আপনার ডেভেলপাররা গেম থেকে ট্যাগের মান পাঠান, অথবা আপনি [CSV ফাইল থেকে সেগুলো ইমপোর্ট](/bn/product/audience-data-and-segmentation/user-data-tags/update-tags-via-csv/) করতে পারেন। আপনার ডেভেলপাররা প্রথমবার কোনো ট্যাগ পাঠালে Pushwoosh সেটি User-specific ট্যাগ হিসেবে তৈরি করে। ট্যাগের ধরন নিজে বেছে নিতে চাইলে আগে কন্ট্রোল প্যানেলে ট্যাগটি তৈরি করুন। [ট্যাগ দিয়ে ব্যবহারকারীর ডেটা পরিচালনা করুন](/bn/product/audience-data-and-segmentation/user-data-tags/tags/) দেখুন।

এই ট্যাগগুলো উদাহরণ। আপনার গেমের শব্দভান্ডার অনুযায়ী এগুলোর নাম বদলান এবং নিজের ট্যাগ যোগ করুন:

| ট্যাগ | ধরন | উদাহরণ | কী চালায় |
| --- | --- | --- | --- |
| `player_level` | Integer | `12` | প্রোগ্রেসের স্তর অনুযায়ী বার্তা ফিল্টার করা |
| `is_paying_user` | Boolean | `true` | পেয়িং ও নন-পেয়িং খেলোয়াড়দের বার্তা আলাদা করা |
| `soft_currency_balance` | Integer | `1500` | কম ব্যালান্সের খেলোয়াড়দের কারেন্সি প্যাক অফার করা |
| `vip_tier` | String | `gold` | VIP খেলোয়াড়দের নিজস্ব অফার ও আর্লি অ্যাক্সেস দেওয়া |
| `favorite_mode` | String | `pvp` | খেলোয়াড়ের পছন্দের মোডের জন্য লাইভ ইভেন্টের ঘোষণা দেওয়া |

কন্ট্রোল প্যানেলে ট্যাগ তৈরি করার সময় [**ব্যবহারকারী-নির্দিষ্ট**](/bn/product/audience-data-and-segmentation/user-data-tags/tags/#tag-scope-general-vs-user-specific) চালু রাখুন, যেমনটা এটি ডিফল্টভাবে থাকে। তখন Pushwoosh প্রতিটি User ID-র জন্য একটি মান রাখে, ফলে মানটি খেলোয়াড়ের, তার কোনো একটি ডিভাইসের নয়। **ব্যবহারকারী-নির্দিষ্ট** বন্ধ থাকলে প্রতিটি ডিভাইস নিজের মান রাখে। [User ID দিয়ে খেলোয়াড়দের শনাক্ত করুন](/bn/tutorials/industry-playbooks/mobile-games/collect-player-data/#identify-players-by-user-id) দেখুন।

### ডিফল্ট ট্যাগ

Pushwoosh প্রতিটি ডিভাইসের জন্য এই [ডিফল্ট ট্যাগগুলো](/bn/product/audience-data-and-segmentation/user-data-tags/tags/#default-tags) সংরক্ষণ করে, তাই আপনাকে এগুলো তৈরি করতে হয় না:

* **Language**: ডিভাইসের ভাষা। Pushwoosh এটি ব্যবহার করে প্রতিটি খেলোয়াড়কে তার নিজের ভাষায় বার্তা পাঠায়।
* **Last Application Open**: ডিভাইসে গেমটি শেষবার কখন খোলা হয়েছিল। যারা খেলা বন্ধ করেছেন তাদের খুঁজে পেতে এটি ব্যবহার করুন।
* **Push Alerts Enabled**: ডিভাইসের সেটিংসে নোটিফিকেশনের অনুমতি আছে কি না। যারা এখনও অনুমতি দেননি শুধু তাদের in-app বার্তা দেখাতে এটি ব্যবহার করুন।
* **First Install**: ডিভাইসে গেমটি প্রথম কখন ইনস্টল করা হয়েছিল। ইনস্টলের বার্ষিকীর জন্য এটি ব্যবহার করুন।
* **Country**: ডিভাইসের দেশ। শুধু একটি অঞ্চলের খেলোয়াড়দের অফার বা লাইভ ইভেন্টের ঘোষণা পাঠাতে এটি ব্যবহার করুন।