# لینک‌ها و پارامترهای UTM

> سه نوع لینک در یکپارچه‌سازی بازینس، و اینکه لینک‌هایی را که بازیکن به بازی شما می‌آورند چطور برچسب بزنید تا هر بازیکن به کمپین درستش نسبت داده شود.

## سه نوع لینک
| لینک | جهت | سازنده | جزئیات |
| --- | --- | --- | --- |
| **لینک صفحه‌های بازینس** (ورود، پروفایل، `/shop`، `/game-offer`) | بازی ← بازینس | کلاینت شما، با تنظیماتی که از سرور می‌گیرد | [صفحه‌های بازینس](pages.md#parameters) |
| **لینک صفحه‌ی پرداخت** (`/buy`) | بازی ← پرداخت بازینس | **فقط سرور شما** | [پرداخت بازینس](pay-api.md#step-1-open-the-payment-page) |
| **لینک‌هایی که به بازی شما می‌آیند** (`?utm_…`، `?tag=`، `?linkedToken=`) | بیرون ← بازی | بازاریابی، تبلیغات، اپ بازینس | همین صفحه |

## لینک‌هایی که به بازی شما می‌آیند
هر لینکی که بازیکن به بازی شما می‌آورد باید بگوید **او از کجا آمده**:

```text
https://yourgame.example.com/?utm_source=baziness&utm_medium=inapp&utm_campaign=shahrivar_1405&utm_content=banner_home
https://yourgame.example.com/?tag=telegram
```

| پارامتر | معنی | مثال |
| --- | --- | --- |
| `utm_source` | چه کسی ترافیک را می‌فرستد | `baziness`، `telegram`، `instagram` |
| `utm_medium` | نوع کانال | `inapp`، `banner`، `cpc`، `social`، `push` |
| `utm_campaign` | نام کمپین | `shahrivar_1405`، `nowruz_1405` |
| `utm_content` | طرح یا جایگاه تبلیغ | `banner_home`، `story_2` |
| `tag` | برچسب کوتاه کانال (جایگزین ساده‌تر) | `telegram`، `google` |
| `linkedToken` | **اپ بازینس اضافه می‌کند** وقتی بازی شما را باز می‌کند | توکن کاربر بازیکن ([ورود](login.md#opening-from-the-baziness-app)) |

> [!IMPORTANT]
> مقدار UTM باید **ASCII ساده** باشد: حروف کوچک انگلیسی، رقم، `.`، `_`، `-` و حداکثر ۶۴ کاراکتر. نام فارسی کمپین گم می‌شود، پس بنویسید `shahrivar_1405`، نه `شهریور`.

## بازی چطور باید آن‌ها را بخواند
1. **پیش از هر چیز بخوانیدشان**، پیش از اینکه چیزی رندر شود. نام‌ها را بدون حساسیت به بزرگی و کوچکی حروف تطبیق دهید.
2. **از نوار آدرس پاکشان کنید.** بازیکن آن‌ها را نمی‌بیند و ویرایش نمی‌کند، و بازیکنی که آدرسش را با دوستانش به اشتراک می‌گذارد کمپین شما را به نام آن‌ها ثبت نمی‌کند.
3. **بار اول روی دستگاه ذخیره‌شان کنید** («اولین تماس»)، و فقط اگر هنوز چیزی ذخیره نشده. ورود بازینس یا جابه‌جایی حساب بازی را از اول اجرا می‌کند و بدون ذخیره‌ی محلی برچسب‌ها گم می‌شوند.
4. **با اولین درخواستی که بازیکن را می‌سازد بفرستیدشان**، هم ورود معمولی خودتان و هم `/api/platform/token`، هر کدام که زودتر اجرا شود.
5. **در سرور فقط هنگام ساخت بازیکن ذخیره‌شان کنید** و بعداً هرگز بازنویسی نکنید.
6. **چهار فیلد جدا نگه دارید** (`utm_source`، `utm_medium`، `utm_campaign`، `utm_content`)، نه یک رشته‌ی چسبیده. نام کمپین‌ها خودشان زیرخط دارند، پس مقدار چسبیده را نمی‌شود دوباره جدا کرد.
7. **به `linkedToken` دست نزنید.** برچسب کمپین نیست: منطق ورود از آن استفاده می‌کند و در اجرای بعدی پاکش می‌کند.

## ساختن لینک کمپین
به تیم بازاریابی یک دستور ثابت یا یک سازنده‌ی لینک کوچک بدهید تا هر لینک **هر چهار** پارامتر را با املای یکسان داشته باشد: آدرس بازی شما به‌علاوه‌ی `utm_source`، `utm_medium`، `utm_campaign` و (اختیاری) `utm_content`، همه با حروف کوچک ASCII.

## لینک‌هایتان را تست کنید
- یک لینک کمپین را در پنجره‌ی خصوصی باز کنید. نوار آدرس بعد از بارگذاری باید تمیز باشد.
- با بازینس وارد شوید یا یک جابه‌جایی حساب راه بیندازید. بازیکن جدید هم باید همان کمپین را داشته باشد.
- همان لینک را با یک بازیکن **موجود** باز کنید. کمپین ذخیره‌شده‌اش نباید عوض شود.

کد آماده: [خواندن و ذخیره‌ی برچسب‌ها](samples-server.md#first-touch-attribution)، [ساختن لینک‌ها](samples-server.md#building-links).
