مستندات پوشفا
Pro

تست A/B نوتیفیکیشن

دو نسخه متفاوت از یک پوش نوتیفیکیشن را به زیرمجموعه‌هایی از مشترکین ارسال کنید، نتایج را مقایسه کنید و نسخه برنده را به بقیه مخاطبان بفرستید.

تست A/B چیست؟

تست A/B (Split Test) روشی است که در آن دو نسخه مختلف از یک نوتیفیکیشن — با عناوین، متن‌ها یا تصاویر متفاوت — به زیرمجموعه‌های جداگانه‌ای از مشترکین فرستاده می‌شود. پس از مدتی، عملکرد هر نسخه (نرخ کلیک یا نرخ تحویل) سنجیده می‌شود و نسخه برنده به بقیه مشترکین که در فاز تست شرکت نداشتند (گروه holdback) ارسال می‌گردد. این دقیقاً همان مدل A/B Testing در OneSignal است.

مفهوم درصد تقسیم و گروه holdback

هنگام ساخت تست، برای هر نسخه یک درصد مشخص می‌کنید:

مجموع درصد A و B نمی‌تواند از ۹۰٪ تجاوز کند — حداقل ۱۰٪ باید برای گروه 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 تغییر می‌کند.

تنها تست‌های در وضعیت draft قابل راه‌اندازی هستند. پس از راه‌اندازی، ویرایش تست امکان‌پذیر نیست.

مشاهده آمار و انتخاب برنده

در صفحه جزئیات تست، آمار هر نسخه را مشاهده کنید:

فیلد توضیح
total کل مشترکینی که نسخه برای آن‌ها ارسال شده
sent تعداد ارسال‌شده به FCM
delivered تعداد تحویل‌داده‌شده
clicked تعداد کلیک‌شده
delivery_rate درصد تحویل (delivered / sent × ۱۰۰)
click_rate درصد کلیک (clicked / delivered × ۱۰۰)

انتخاب دستی برنده

برای انتخاب دستی برنده در طول دوره تست، در صفحه جزئیات روی «انتخاب برنده» کلیک کنید و نسخه موردنظر را انتخاب کنید. پوشفا بلافاصله نسخه برنده را به گروه holdback ارسال می‌کند و وضعیت تست را به completed تغییر می‌دهد.

انتخاب خودکار برنده

اگر هنگام ساخت تست گزینه «انتخاب خودکار برنده» را فعال کرده باشید، یک job با تأخیر N ساعته (پیش‌فرض ۲۴ ساعت) در صف ارسال قرار می‌گیرد. این job آمار هر نسخه را بر اساس معیار انتخابی (click_rate یا delivery_rate) مقایسه می‌کند، نسخه برتر را به عنوان برنده ثبت می‌کند و آن را به گروه holdback می‌فرستد — بدون نیاز به دخالت دستی.

اگر قبل از پایان N ساعت برنده را به صورت دستی انتخاب کنید، job خودکار اجرا نخواهد شد زیرا وضعیت تست دیگر running نیست.

مشاهده همه تست‌ها از پنل ادمین

از منوی ادمین، بخش «تست‌های 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"
      }
    ]
  }'