مسیر عمل با اولین مچ در برابر پنجره رتبهبندی: جلو رفتن فوری یا صبر تا انتخاب بهترین مسیر
فرق اولینمچ و پنجره رتبهبندی در جرنی: کی جلو میروی، کدام مسیر برنده میشود، با جدول و FAQ.

سارا مرادی
طراحی سفر مشتری و کمپینهای مارکتینگ اتومیشن برای نگهداشت کاربر و کاهش ریزش.
۲ مهر ۱۴۰۵ · 8 دقیقه مطالعه
نسخه دیگر English

اولینمچ کاربر را با اولین رویداد واجد شرایط داخل پنجره ارزیابی جلو میبرد؛ حالت رتبهبندی همه را تا پایان پنجره نگه میدارد و بعد بالاترین مسیر اولویتدارِ همپوشان را انتخاب میکند.
مسیر عمل با اولین مچ و پنجره رتبهبندی دقیقاً چه فرقی دارند؟
وقتی در جرنی میخواهی چند سیگنال را همزمان ببینی—مثلاً «خرید کرد» یا «جلسه را تمام کرد» یا «کمک خواست»—معمولاً یک بلوک صبر/اسپلیت میسازی. سؤال اینجاست: بهمحض اینکه یکی از اینها رخ داد جلو برویم، یا تا آخر پنجره صبر کنیم و ببینیم کدام مسیر ارزش بیشتری دارد؟
این همان تفاوت اولینمچ (first-match) و پنجره رتبهبندی (ranked window) است. هر دو روی رویدادها کار میکنند؛ تفاوت در زمان تصمیم و معیار برندهشدن است.
هر کدام چطور کار میکند؟
اولینمچ
کاربر وارد پنجره ارزیابی میشود. بهمحض اینکه اولین رویداد با یکی از مسیرها مچ شود، همان مسیر را میگیرد و از پنجره خارج میشود. اگر دو رویداد تقریباً همزمان بیایند، معمولاً همان که اول پردازش شده برنده است—نه لزوماً «مهمترین» آنها.
پنجره رتبهبندی
کاربر تا پایان پنجره در حالت انتظار میماند—حتی اگر خیلی زود یک رویداد بیاید. در انتهای پنجره، سیستم همه مسیرهایی را که هنوز واجد شرایط است بررسی میکند و طبق اولویت ثابتشده (رتبه ۱، ۲، ۳…) بالاترین مسیر را انتخاب میکند. اگر هیچ مسیری مچ نشود، مسیر «سایر / everyone else» میرود.
| بُعد | اولینمچ | پنجره رتبهبندی |
|---|---|---|
| زمان جلو رفتن | اولین رویداد واجد شرایط | پایان پنجره |
| اگر چند مسیر مچ شود | معمولاً اولین پردازششده | بالاترین اولویت تعریفشده |
| مناسب برای | واکنش سریع (خرید فوری، لغو) | انتخاب بهترین شاخه بعد از جمعآوری سیگنال |
| ریسک | مسیر کمارزش زودتر بیاید و مسیر بهتر را بسوزاند | تأخیر عمدی؛ حس «کند بودن» اگر پنجره بلند باشد |
| Everyone else | کسانی که هیچ رویدادی نزدند | کسانی که تا پایان هیچ مسیر اولویتدار نگرفتند |
این جدول را کنار اسپلیت تریگر در برابر اسپلیت شرطی بگذار: آنجا سؤال «داده همین ایونت یا تاریخچه پروفایل» است؛ اینجا سؤال «کی تصمیم بگیریم و کدام مسیر برنده شود» است.
مثال واقعی از فروشگاه و SaaS ایرانی
فروشگاه پوشاک—پنجره ۲۴ ساعته بعد از افزودن به سبد
کاربر cart_updated دارد. مسیرها:
- اولویت ۱:
order_completed→ پیامک تشکر + ایمیل رسید (نباید یادآوری سبد بگیرد) - اولویت ۲:
checkout_startedبدون خرید → ایمیل کمک پرداخت - اولویت ۳:
product_viewedدوباره روی همان SKU → ایمیل «هنوز موجود است» - Everyone else → پیامک یادآوری سبد کلاسیک
اگر اولینمچ باشد و کاربر اول دوباره محصول را ببیند، مسیر ۳ را میگیرد—حتی اگر دو ساعت بعد بخرد و باید مسیر ۱ میرفت. اگر رتبهبندی ۲۴ ساعته باشد، تا پایان پنجره صبر میکنی؛ خرید روز بعد مسیر ۱ را میبرد و یادآوری بیهوده ارسال نمیشود.
SaaS آموزشی—آنبوردینگ ۷ روزه
مسیرها: تکمیل پروفایل، اولین درس، درخواست دمو فروش. در آنبوردینگ معمولاً رتبهبندی کوتاه (۱۲–۴۸ ساعت) منطقیتر است تا «بهترین سیگنال پیشرفت» مشخص شود؛ برای لغو اشتراک یا chargeback، اولینمچ امنتر است چون باید فوری مسیر nurture را قطع کنی.
کی اولینمچ و کی رتبهبندی؟
- اگر دیر رسیدن پیام خطرناک است (امنیت، پرداخت ناموفق، لغو)—اولینمچ.
- اگر چند سیگنال همخانواده داری و یکی «باارزشتر» است—رتبهبندی با اولویت صریح.
- اگر پنجره از ۳–۷ روز بلندتر میشود، اول مطمئن شو تیم پشتیبانی و محصول میدانند کاربر «در انتظار» دیده میشود ولی پیام نگرفته.
- رتبه مسیرها را بعد از go-live بیدلیل عوض نکن؛ گزارشهای مسیر را خراب میکند.
- Everyone else را خالی نگذار: همیشه یک مسیر پیشفرض و امن داشته باش.
نگاشت به Leadara (events، segments، journeys، email/SMS)
در Leadara این الگو را با بلوکهای موجود میسازی—بدون اختراع فیچر جدید:
- Events: هر مسیر را به یک (یا چند) ایونت واقعی وصل کن؛ نامگذاری پایدار (
order_completedنه گاهیpurchase). - Journeys: یک قدم wait/branch با چند خروجی؛ یا صبر تا اولین ایونت، یا صبر تا پایان پنجره و بعد ارزیابی شرط.
- Segments: برای Everyone else یا فیلترهای کمکی (مثلاً فقط خریداران قبلی) از سگمنت استفاده کن، نه برای خودِ منطق رتبه.
- Email / SMS: محتوای هر شاخه را جدا نگه دار؛ پیامک برای مسیر فوری (لغو/خرید)، ایمیل برای مسیرهای توضیحی.
اگر هنوز بین «صبر برای سیگنال» و «تأخیر ساعتی» مرددی، اول صبر تا رویداد در برابر تأخیر ثابت را بخوان؛ آن مقاله لایه زیر این تصمیم است.
اشتباههای رایج
- گذاشتن خرید و browse در یک سطح اولویت و انتظار معجزه از اولینمچ.
- پنجره ۳۱ روزه برای سبد رهاشده؛ کاربر تا یک ماه «در جرنی» میماند و گزارش را گج میکند.
- تغییر رتبه مسیرها وسط کمپین بدون نسخه و changelog.
- فراموش کردن مسیر Everyone else → کاربران بیسیگنال هیچ پیامی نمیگیرند یا بدتر، در حلقه گیر میکنند.
- فرض اینکه «تقریباً همزمان» همیشه عادلانه حل میشود؛ در استریم واقعی ترتیب پردازش مهم است.
جمعبندی یکخطی برای تیم
اولینمچ = interrupt روی اولین ایونت مچشده؛ رتبهبندی = barrier تا پایان پنجره، بعد max(priority ∩ matched).
گام بعدی چیست؟
یک جرنی واقعیات را باز کن که امروز «چند ایونت یا» دارد. روی کاغذ بنویس: اگر سیگنال کمارزش زودتر بیاید چه میشود؟ اگر جوابت «بد میشود» است، به رتبهبندی با اولویت صریح سوییچ کن و پنجره را کوتاه نگه دار.
سؤالات پرتکرار
اگر در رتبهبندی وسط پنجره خرید کند، کی پیام خرید میگیرد؟
معمولاً تا پایان پنجره صبر میکند، بعد مسیر خرید را میگیرد—مگر جداگانه exit روی تبدیل گذاشته باشی.
میشود رتبه را بعد از انتشار عوض کرد؟
از نظر فنی اغلب بله؛ از نظر تحلیلی خطرناک است. نسخه جدید بساز یا حداقل تاریخ تغییر را ثبت کن.
Everyone else همان «بدون رویداد» است؟
تقریباً: کسانی که تا تصمیم هیچ مسیر اولویتداری نگرفتهاند. ممکن است رویدادهای خارج از لیست مسیرها را هم زده باشند.
برای پیامک OTP یا تراکنشی کدام بهتر است؟
اصلاً این بلوک را برای تراکنش حساس پیچیده نکن. OTP باید مسیر مستقیم و فوری باشد، نه رقابت رتبه با nurture.
تفاوت این موضوع با اسپلیت چندشاخه چیست؟
اسپلیت چندشاخه درباره شکل گراف است؛ اینجا درباره سیاست زمانی ارزیابی است. جزئیات شکل را در مطلب اسپلیت چندشاخه ببین.
پنجره خیلی کوتاه (مثلاً ۵ دقیقه) چه میشود؟
به اولینمچ نزدیک میشود، با هزینه کمی تأخیر. گاهی برای جلوگیری از race بین دو ایونت همزمان مفید است.
در گزارش مسیر، کاربران رتبهبندی کجا دیده میشوند؟
تا پایان پنجره معمولاً در حالت wait/pending میمانند؛ بعد از تصمیم وارد شاخه میشوند. با تیم داده روی تعریف «entered path» هماهنگ کن.
سناریوی قدمبهقدم برای تیم رشد
- سه ایونت کاندید را بنویس و به فارسی توضیح بده چه ارزشی دارند.
- اولویت ۱ تا ۳ را قفل کن؛ Everyone else را تعریف کن.
- پنجره را با محصول هماهنگ کن (۲۴ ساعت سبد، ۱۲ ساعت آنبوردینگ…).
- در Leadara جرنی را با wait + شاخههای ایونت بساز؛ ایمیل/پیامک هر شاخه را جدا کن.
- با ۱۰ پروفایل تست، ترتیب ایونتهای عجیب را شبیهسازی کن.
- بعد از go-live فقط نرخ خروج هر شاخه و نرخ تبدیل را برای دو هفته قفل نگه دار.
تفاوت با اسپلیت شرطی ساده
اسپلیت شرطی روی پروفایل «الان» تصمیم میگیرد. مسیر عمل با پنجره، روی استریم آینده ایونتها تصمیم میگیرد. قاطی کردنشان باعث میشود فکر کنی سگمنت کار نمیکند، در حالی که سیاست زمانی غلط بوده.
متریکهایی که باید ببینی
- سهم مسیر اولویت ۱ در برابر Everyone else
- میانگین زمان تا تصمیم (برای رتبهبندی باید نزدیک طول پنجره باشد)
- نرخ پیام بیهوده بعد از خرید (باید نزدیک صفر باشد اگر اولویت خرید درست است)
- شکایت پشتیبانی از «پیام بیموقع»
گفتوگوی محصول و داده
در تیکت بنویس: «سیاست = ranked، پنجره = ۲۴h، اولویت = order > checkout > browse، کانال = SMS برای ۱ و ایمیل برای ۲ و ۳». این یک خط از ده صفحه بحث بینتیجه بهتر است.
طراحی اولویت مسیر مثل کد
برای تیم برنامهنویس اینطور بنویس:
on event in window:
if mode == first_match:
advance(first_matching_path(event)); close_window()
else: # ranked
matched.add(paths_for(event))
on window_end (ranked only):
advance(max_priority(matched) or everyone_else)
گاردها: رتبه را بعد از go-live بدون نسخه عوض نکن؛ سقف عملی پنجره را با محصول توافق کن؛ Everyone else همیشه یک پیام امن داشته باشد.
تست پذیرش قبل از انتشار
- پروفایل A فقط browse بزند → مسیر ۳ یا Everyone else طبق طراحی.
- پروفایل B اول browse بعد خرید داخل پنجره → در حالت رتبه باید خرید برنده شود.
- پروفایل C هیچ ایونتی نزند → Everyone else.
- پروفایل D دو ایونت تقریباً همزمان → در اولینمچ ترتیب پردازش را لاگ کن.
- پیامک/ایمیل هر شاخه را از نظر لحن بعد از خرید بازبینی کن.
ارتباط با اسپلیت چندشاخه
اگر بیش از سه مسیر داری و داری اسپلیت دودویی را زنجیره میکنی، اول شکل گراف را ساده کن. سیاست زمانی (اولینمچ/رتبه) را روی یک اسپلیت تمیز سوار کن، نه روی جنگل if/else. جزئیات شکل را در مطلب اسپلیت چندشاخه میتوانی عمیقتر ببینی.
زبان گزارش برای مدیر محصول
بهجای «سیستم کند است» بگو: «پنجره رتبه ۲۴ ساعته است؛ تا پایان پنجره عمداً پیام نمیدهیم تا خرید بر browse اولویت بگیرد.» این یک جمله جلوی ده تیکت بیهوده را میگیرد.
چکلیست کانال
- مسیر اولویت ۱: آیا پیامک لازم است یا ایمیل کافی است؟
- مسیرهای ۲ و ۳: آیا متن بعد از خرید مضحک میشود؟ اگر بله، exit تبدیل جدا بگذار.
- Everyone else: آیا ارزش ارسال دارد یا بهتر است خاموش بماند؟
## مطالب مرتبط
- اسپلیت تریگر در برابر اسپلیت شرطی: دادهٔ همین ایونت در برابر تاریخچهٔ پروفایل
- صبر تا رویداد در برابر تأخیر ثابت: توقف برای سیگنال در برابر توقف برای ساعت
- پرش به هدف در برابر شاخه شرطی: رد کردن بقیه مسیر در برابر دوراهی




