تست A/B نوتیفیکیشن
دو نسخه متفاوت از یک پوش نوتیفیکیشن را به زیرمجموعههایی از مشترکین ارسال کنید، نتایج را مقایسه کنید و نسخه برنده را به بقیه مخاطبان بفرستید.
تست A/B چیست؟
تست A/B (Split Test) روشی است که در آن دو نسخه مختلف از یک نوتیفیکیشن — با عناوین، متنها یا تصاویر متفاوت — به زیرمجموعههای جداگانهای از مشترکین فرستاده میشود. پس از مدتی، عملکرد هر نسخه (نرخ کلیک یا نرخ تحویل) سنجیده میشود و نسخه برنده به بقیه مشترکین که در فاز تست شرکت نداشتند (گروه holdback) ارسال میگردد. این دقیقاً همان مدل A/B Testing در OneSignal است.
مفهوم درصد تقسیم و گروه holdback
هنگام ساخت تست، برای هر نسخه یک درصد مشخص میکنید:
| گروه | درصد | توضیح |
|---|---|---|
| گروه A | send_split_percent_a (پیشفرض ۲۵٪) | نسخه A به این درصد از مشترکین ارسال میشود |
| گروه B | send_split_percent_b (پیشفرض ۲۵٪) | نسخه B به این درصد از مشترکین ارسال میشود |
| گروه holdback | ۱۰۰ - A٪ - B٪ (پیشفرض ۵۰٪) | این گروه منتظر میمانند تا نسخه برنده را دریافت کنند |
ساخت تست A/B از پنل
از منوی سرویس موردنظر وارد بخش «تست A/B» شوید و روی «+ تست جدید» کلیک کنید. مراحل:
| مرحله | فیلد | توضیح |
|---|---|---|
| ۱ | نام تست | یک عنوان توصیفی برای شناسایی آسان |
| ۲ | نسخه A | عنوان، متن، تصویر و لینک برای variant A |
| ۳ | نسخه B | عنوان، متن، تصویر و لینک برای variant B |
| ۴ | درصد تقسیم | چند درصد به A و چند درصد به B (مجموع ≤ ۹۰٪) |
| ۵ | معیار برنده | click_rate (نرخ کلیک) یا delivery_rate (نرخ تحویل) |
| ۶ | انتخاب خودکار برنده | اگر فعال باشد، بعد از N ساعت برنده بهطور خودکار انتخاب و به holdback ارسال میشود |
راهاندازی (Launch) تست
پس از ذخیره تست (وضعیت draft)، دکمه «راهاندازی» را بزنید. در این مرحله میتوانید گزارش تحویل، گزارش کلیک و TTL را تنظیم کنید. پس از تأیید، نسخه A به درصد موردنظر از مشترکین و نسخه B به درصد دیگری ارسال میشود. وضعیت تست به running تغییر میکند.
مشاهده آمار و انتخاب برنده
در صفحه جزئیات تست، آمار هر نسخه را مشاهده کنید:
| فیلد | توضیح |
|---|---|
| total | کل مشترکینی که نسخه برای آنها ارسال شده |
| sent | تعداد ارسالشده به FCM |
| delivered | تعداد تحویلدادهشده |
| clicked | تعداد کلیکشده |
| delivery_rate | درصد تحویل (delivered / sent × ۱۰۰) |
| click_rate | درصد کلیک (clicked / delivered × ۱۰۰) |
انتخاب دستی برنده
برای انتخاب دستی برنده در طول دوره تست، در صفحه جزئیات روی «انتخاب برنده» کلیک کنید و نسخه موردنظر را انتخاب کنید. پوشفا بلافاصله نسخه برنده را به گروه holdback ارسال میکند و وضعیت تست را به completed تغییر میدهد.
انتخاب خودکار برنده
اگر هنگام ساخت تست گزینه «انتخاب خودکار برنده» را فعال کرده باشید، یک job با تأخیر N ساعته (پیشفرض ۲۴ ساعت) در صف ارسال قرار میگیرد. این job آمار هر نسخه را بر اساس معیار انتخابی (click_rate یا delivery_rate) مقایسه میکند، نسخه برتر را به عنوان برنده ثبت میکند و آن را به گروه holdback میفرستد — بدون نیاز به دخالت دستی.
مشاهده همه تستها از پنل ادمین
از منوی ادمین، بخش «تستهای A/B» را باز کنید تا لیست تمام تستهای A/B همه سرویسها را با اطلاعات سرویس، کاربر، وضعیت و آمار کامل مشاهده کنید.
API — ساخت تست A/B
این endpoint برای ساخت تست از طریق API در دسترس است (نیاز به احراز هویت پنل دارد):
| فیلد | توضیح | اجباری |
|---|---|---|
| name | نام تست | بله |
| variants | آرایه دو عنصری از نسخهها (label A و B) | بله |
| variants.*.label | A یا B | بله |
| variants.*.title | عنوان نوتیفیکیشن — حداکثر ۳۵ کاراکتر | بله |
| variants.*.body | متن نوتیفیکیشن — حداکثر ۱۵۰ کاراکتر | بله |
| variants.*.image_url | آدرس تصویر ضمیمه | خیر |
| variants.*.link_url | لینک مقصد پس از کلیک | خیر |
| send_split_percent_a | درصد مشترکین دریافتکننده نسخه A (۵ تا ۴۵، پیشفرض ۲۵) | خیر |
| send_split_percent_b | درصد مشترکین دریافتکننده نسخه B (۵ تا ۴۵، پیشفرض ۲۵) | خیر |
| winner_criteria | معیار انتخاب برنده: click_rate یا delivery_rate (پیشفرض click_rate) | خیر |
| auto_pick_winner | انتخاب خودکار برنده پس از N ساعت (true/false، پیشفرض false) | خیر |
| pick_winner_after_hours | تعداد ساعت تا انتخاب خودکار برنده (۱ تا ۷۲۰، پیشفرض ۲۴) | خیر |
# POST /app-panel/api/services/{service-uuid}/ab-tests
curl -X POST https://pushfa.com/app-panel/api/services/SERVICE-UUID/ab-tests \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "تست عنوان پیام جدید",
"send_split_percent_a": 20,
"send_split_percent_b": 20,
"winner_criteria": "click_rate",
"auto_pick_winner": true,
"pick_winner_after_hours": 12,
"variants": [
{
"label": "A",
"title": "تخفیف ویژه منتظر شماست!",
"body": "همین الان خرید کنید و ۳۰٪ تخفیف بگیرید.",
"link_url": "https://example.com/sale"
},
{
"label": "B",
"title": "فرصت محدود!",
"body": "فقط امروز — ۳۰٪ تخفیف برای همه محصولات.",
"link_url": "https://example.com/sale"
}
]
}'