سفرهای موازی جرنی با کانتکست رویداد: یک کاربر، چند نمونه محصول

سفر موازی جرنی با کانتکست رویداد: تعریف، جدول، مثال دو سبد ایران، کلید product_id، FAQ و Leadara.

رضا احمدی

بهینه‌سازی سایت و محتوا برای گوگل؛ افزایش ترافیک ارگانیک و دیده‌شدن برند در نتایج جستجو.

۱ مهر ۱۴۰۵ · 5 دقیقه مطالعه

اشتراک‌گذاری:

نسخه دیگر English

سفرهای موازی جرنی با کانتکست رویداد: یک کاربر، چند نمونه محصول

سفر موازی جرنی با کانتکست رویداد چیست؟

ثبت‌نام سطح کاربر معمولاً یک trip فعال از هر جرنی برای هر نفر اجازه می‌دهد. ثبت‌نام با کلید کانتکست (مثل product_id، شناسه وام، شماره بیمه‌نامه) اجازه می‌دهد همان کاربر چند trip موازی از همان جرنی داشته باشد؛ هر کدام به ویژگی ایونت خودش تا wait و خروج وصل است.

یک‌خطی: یک نفر ≠ یک سبد. اگر چهار SKU باز دارد، چهار یادآوری نباید همدیگر را لغو کنند.

در فروشگاه‌های ایرانی شبیه دیجی‌کالا، کاربر صبح موبایل و عصر هدفون به سبد می‌زند. اگر enrollment فقط روی user_id باشد، trip دوم trip اول را می‌کشد یا هرگز ساخته نمی‌شود. نتیجه: یکی از سبدها یادآوری نمی‌گیرد.

این قاب روی مدل ایونت سوار است: اتومیشن event-centric در برابر contact-centric.

هر کدام چطور کار می‌کند؟

Trip سطح کاربر

ورود با نفر. تا وقتی آن trip زنده است، همان جرنی دوباره برای همان نفر باز نمی‌شود (یا re-entry قواعد جدا دارد). Wait و goal روی پروفایل شخص‌اند نه روی نمونه محصول.

Trip با کانتکست رویداد

کلید enrollment = نفر + ویژگی ایونت (مثلاً product_id). سبد SKU-A یک trip می‌سازد؛ سبد SKU-B trip دوم موازی. Wait تا خرید باید به همان product_id مقید باشد؛ خرید هدفون نباید یادآوری موبایل را ببندد.

بعدسطح کاربرکلید کانتکست
کلیدuser_iduser_id + context
Trip موازیمعمولاً خیربله
خروجهر خرید شخصخرید همان context
ریسکلغو متقابل سبدهاانفجار trip اگر کلید بد
جای درستآنبوردینگ، وین‌بک کلیسبد چند SKU، وام، بیمه

مثال ایران: دو سبد باز

کاربر ساعت ۱۱ cart_updated برای گوشی می‌فرستد؛ ساعت ۱۵ برای هندزفری. جرنی سبد wait ۲ ساعت + ایمیل + پیامک دارد ولی enrollment فقط user-level است. Trip گوشی ساخته می‌شود؛ trip هندزفری رد می‌شود. ساعت ۱۳ ایمیل گوشی می‌رود؛ هندزفری هیچ لمسی نمی‌گیرد. تیم می‌گوید «اتومیشن برای دسته لوازم جانبی کار نمی‌کند» — در واقع کلید کانتکست ندارد.

تشخیص

مشکلاثر
Enrollment فقط userسبد دوم گم
Goal خرید بدون فیلتر product_idخرید A مسیر B را می‌بندد
کلید خیلی درشت (فقط دسته)تداخل هنوز هست
کلید خیلی ریز (هر pageview)هزار trip زامبی

اصلاح عملی

  1. ایونت cart_updated را با product_id (و در صورت نیاز sku) غنی کن.
  2. جرنی سبد را با کلید user_id + product_id باز کن.
  3. Wait-until / goal خرید را با همان product_id فیلتر کن.
  4. سقف: حداکثر ۳ trip موازی سبد برای هر نفر؛ قدیمی‌تر از ۷ روز را expire کن.
  5. آنبوردینگ را user-level نگه دار — آنجا کانتکست محصول معنا ندارد.

مکمل realtime: جرنی در برابر کمپین realtime رویداد. قاب کلی مسیر: جرنی مارکتینگ در برابر کمپین.

چه وقت کانتکست، چه وقت سطح کاربر؟

  1. یک مسیر زندگی برای نفر (خوش‌آمد، سکوت کلی)؟ → user-level.
  2. چند نمونه مستقل (SKU، وام، تیکت)؟ → context key.
  3. آیا خروج باید فقط همان نمونه را ببندد؟ اگر بله، حتماً فیلتر context روی goal.
  4. آیا کاتالوگ ایونت ویژگی پایدار دارد؟ بدون product_id ثابت trip موازی دروغین می‌شود.

اتصال به Leadara

  1. ایونت‌ها با propertyهای پایدار: product_id، category_id، cart_id.
  2. جرنی سبد با enrollment کانتکست‌دار و goal مقید.
  3. جرنی خوش‌آمد user-level جدا.
  4. سگمنت برای سقف tripهای موازی / suppress بلست.
  5. ایمیل/پیامک با توکن همان محصول از context trip — نه «سبد عمومی».

اشتباهات رایج

  • فرض یک سبد برای هر کاربر همیشه
  • goal خرید سراسری روی trip محصولی
  • کلید کردن روی نام محصول متنی ناپایدار
  • باز گذاشتن trip بدون TTL
  • کپی متن سبد بدون نام/لینک همان SKU

زبان تیم برنامه‌نویس

مفهوممعنی
Tripنمونه در حال اجرای جرنی
Context keyکلید موازی‌سازی
Profile attributeفیلد شخص
Event propertyفیلد همان ایونت

مثل instance در کد: یک class (جرنی)، چند instance (trip) با state جدا.

چک‌لیست go-live

  1. product_id در ایونت سبد و خرید یکسان است؟
  2. Goal خرید فیلتر context دارد؟
  3. TTL و سقف trip موازی؟
  4. آنبوردینگ هنوز user-level است؟
  5. قالب پیام فیلد محصول از context می‌خواند؟
  6. گزارش per-product abandonment جدا از per-user؟
  7. holdout روی درصد user نه فقط trip؟

سوالات پرتکرار

آیا یک کاربر می‌تواند چند نمونه از یک جرنی را هم‌زمان داشته باشد؟

بله اگر enrollment با کلید کانتکست باشد؛ در مدل فقط-کاربر معمولاً خیر.

خرید یک SKU آیا باید همهٔ سبدها را ببندد؟

خیر؛ فقط trip همان product_id مگر سیاست «سبد واحد» صریح داشته باشی.

چه کلیدی انتخاب کنیم؟

پایدار و در خرید تکرارشونده: product_id یا cart_line_id — نه عنوان فارسی محصول.

خطر انفجار trip چیست؟

کلید کردن روی هر pageview یا session بی‌ثبات؛ TTL و سقف بگذار.

آیا Leadara فیچر جدا «contextual journey» دارد؟

با ایونت‌های غنی، enrollment و goal مقید به property همان منطق را می‌سازی.

متریک درست؟

نرخ بازیابی per-product و RPR همان trip — نه فقط «کاربر پیام گرفت».

وین‌بک کلی هم کانتکست می‌خواهد؟

معمولاً نه؛ وین‌بک سطح رابطه است مگر per-subscription.

جمع‌بندی و قدم بعدی

یک کاربر می‌تواند چند trip موازی داشته باشد اگر کلید کانتکست درست باشد. این هفته جرنی سبد را از user-only به user_id + product_id ببر، goal را فیلتر کن، و TTL بگذار.

الگوی ۱۴ روزه

روز ۱–۲: ایونت سبد/خرید را با product_id یکسان کن.
روز ۳–۵: جرنی کانتکست‌دار با سقف ۳ trip بساز.
روز ۶–۱۰: ۱۰٪ holdout نگه دار.
روز ۱۱–۱۴: بازیابی per-SKU را با نسخهٔ قبلی مقایسه کن.

مدلکلیدمثال
User-leveluserخوش‌آمد
Contextuser+productسبد چند SKU

antimatter: چه چیز را کانتکست نکن

مسیرهای رابطه‌ای را با product_id تکه‌تکه نکن: خوش‌آمد، ترجیح کانال، sunset، وین‌بک کلی. کانتکست برای نمونهٔ تکرارشونده است نه برای کل رابطه.

قرارداد داده با بک‌اند

  1. همان شناسه در cart_updated و order_completed.
  2. شناسه بعد از merge کاتالوگ عوض نشود.
  3. حذف محصول: trip را expire کن نه این‌که تا ابد timeout بماند.
  4. در پیام، نام و لینک همان شناسه را از context بخوان — fallback عمومی ممنوع در تست پذیرش.

مطالب مرتبط

ادامه مطالعه