Journeys
ساخت مسیر کاربر از Pageviewهای خودکار و Milestoneهای ثبتشده با trackJourneyStep.
Journeys در آلفانا مسیر حرکت کاربر را از Pageviewهای ثبتشده میسازند و کمک میکنند ببینید کاربر برای رسیدن به یک نتیجه از چه مسیرهایی عبور کرده است.
بخش زیادی از Journey بهصورت خودکار از Navigation و Pageviewهای SDK شکل میگیرد. اما بعضی مرحلههای مهم محصول بدون تغییر URL اتفاق میافتند؛ مثل انتخاب پلن، تکمیل یک مرحله از فرم چندمرحلهای یا تأیید یک تنظیم.
برای این نوع Milestoneها میتوانید از trackJourneyStep() استفاده کنید.
ثبت Milestone#
اگر مرحلهای در Journey اهمیت دارد اما باعث تغییر Route نمیشود، آن را بهصورت صریح ثبت کنید:
tracker.trackJourneyStep({
key: "plan_selected",
label: "Plan selected",
metadata: {
plan: "pro",
},
});در این مثال، انتخاب Plan یک Milestone معنادار در مسیر کاربر است و بدون نیاز به تغییر URL در Journey ثبت میشود.
ساختار Journey#
یک Journey میتواند ترکیبی از Pageviewهای خودکار و Journey Stepهای صریح باشد.
برای مثال:
/pricing
↓
plan_selected
↓
/signup
↓
account_created
↓
/dashboardدر این مسیر، Pageviewها از Navigation ثبت میشوند و مرحلههایی مثل plan_selected یا account_created میتوانند با trackJourneyStep() به مسیر اضافه شوند.
این ترکیب کمک میکند Journey فقط به URLها محدود نباشد و رفتارهایی که واقعاً معنای محصولی دارند نیز داخل مسیر دیده شوند.
چه زمانی از trackJourneyStep() استفاده کنیم؟#
Journey Step برای رفتارهایی مناسب است که:
- یک مرحله مشخص در مسیر کاربر هستند
- بدون تغییر URL اتفاق میافتند
- میخواهید در تحلیل Journey بهصورت مستقل دیده شوند
- معنای ثابت و مشخصی در محصول دارند
برای مثال:
plan_selected
onboarding_step_completed
payment_method_selected
profile_completed
workspace_createdاگر رفتار فقط یک Interaction ساده و کماهمیت است، لازم نیست آن را به Journey Step تبدیل کنید. بهتر است Milestoneها را برای مرحلههایی نگه دارید که واقعاً به فهم مسیر کاربر کمک میکنند.
انتخاب key#
key شناسه اصلی Journey Step است و بهتر است ثابت، کوتاه و انگلیسی باشد.
برای مثال:
plan_selectedانتخاب بهتری از چیزی مثل:
pricing_blue_button_clickedاست؛ چون ظاهر یا محل Button ممکن است تغییر کند، اما معنای انتخاب Plan ثابت باقی میماند.
اگر یک Journey Step در Production استفاده شده است، Key آن را بدون دلیل جدی تغییر ندهید تا دادههای قبل و بعد از تغییر بهصورت یک مسیر پیوسته باقی بمانند.
label#
label نام خواناتر Milestone است و میتواند برای نمایش یا فهم بهتر Event استفاده شود.
برای مثال:
{
key: "plan_selected",
label: "Plan selected"
}در حالی که key بهتر است برای ثبات داده ثابت بماند، label میتواند خواناتر و مناسب نمایش باشد.
Metadata#
با metadata میتوانید context بیشتری درباره همان Journey Step ثبت کنید.
برای مثال:
tracker.trackJourneyStep({
key: "plan_selected",
label: "Plan selected",
metadata: {
plan: "pro",
},
});در این حالت، Milestone اصلی همان plan_selected است اما Metadata مشخص میکند کدام Plan انتخاب شده است.
این روش معمولاً بهتر از ساخت چند Key جداگانه مثل:
pro_plan_selected
free_plan_selected
enterprise_plan_selectedاست؛ مگر اینکه این رفتارها واقعاً در محصول معنای متفاوتی داشته باشند.
Pageviewهای خودکار#
آلفانا بخش اصلی Journey را از Pageviewها میسازد.
اگر Tracker Navigation را بهدرستی ثبت کند، مسیرهایی که کاربر بازدید کرده است به Journey اضافه میشوند.
برای مثال:
/landing
/pricing
/signup
/dashboardاین Pageviewها بدون نیاز به تعریف Journey Step جداگانه میتوانند مسیر پایه کاربر را شکل دهند.
Journey Step زمانی لازم میشود که یک اتفاق مهم بین این Pageviewها رخ دهد و URL تغییر نکند.
Journeys در SPA#
در Single Page Applicationها، تغییر Route معمولاً بدون reload کامل صفحه انجام میشود.
اگر فقط نخستین load ثبت شود و Navigationهای بعدی به SDK اعلام نشوند، Journey نیز فقط همان Pageview اولیه را خواهد داشت.
برای مثال، اگر کاربر این مسیر را طی کند:
/pricing
/signup
/dashboardاما SDK فقط /pricing را ثبت کرده باشد، Journey واقعی کاربر کامل دیده نمیشود.
به همین دلیل در SPAها باید مطمئن شوید تمام Navigationهای Client-side بهدرستی به Tracker میرسند.
React#
در React میتوانید مسیر فعلی Router را به usePageView() بدهید:
import { usePageView } from "alphana-sdk/react";
export function NavigationTracker({ path }: { path: string }) {
usePageView(path);
return null;
}هر بار که مقدار path تغییر کند، Pageview جدید ثبت میشود و میتواند وارد Journey کاربر شود.
Next.js App Router#
در Next.js App Router میتوانید از usePathname() همراه usePageView() استفاده کنید:
"use client";
import { usePathname } from "next/navigation";
import { usePageView } from "alphana-sdk/react";
export function NavigationTracker() {
const pathname = usePathname();
usePageView(pathname);
return null;
}NavigationTracker باید داخل UserTrackerProvider Render شود.
ثبت درست Navigation در Next.js برای Journey اهمیت زیادی دارد، چون Route Changeها معمولاً بدون Page Reload انجام میشوند.
برای جزئیات بیشتر، راهنمای Next.js App Router را ببینید.
ترکیب Pageview و Milestone#
فرض کنید جریان خرید شما به این شکل است:
- کاربر وارد
/pricingمیشود. - Plan Pro را انتخاب میکند.
- وارد
/checkoutمیشود. - روش پرداخت را انتخاب میکند.
- به
/checkout/successمیرسد.
Pageviewهای این Journey:
/pricing
/checkout
/checkout/successاما دو رفتار مهم بدون Route مستقل رخ میدهند:
plan_selected
payment_method_selectedبا ثبت این Milestoneها، Journey میتواند تصویر دقیقتری ایجاد کند:
/pricing
↓
plan_selected
↓
/checkout
↓
payment_method_selected
↓
/checkout/successاین مسیر نسبت به مجموعه ساده Pageviewها context بیشتری درباره تصمیمهای کاربر در اختیار شما قرار میدهد.
Journey و Goal#
Journey Step و Goal دو نقش متفاوت دارند.
Journey Step یک Milestone در مسیر است:
tracker.trackJourneyStep({
key: "plan_selected",
});Goal یک نتیجه مهم را ثبت میکند:
tracker.trackGoal({
key: "signup_completed",
});یک Journey ممکن است چند Milestone داشته باشد و در نهایت به یک Goal برسد.
برای مثال:
pricing_viewed
↓
plan_selected
↓
signup_started
↓
signup_completedدر این مثال plan_selected میتواند Journey Step باشد و signup_completed یک Goal نهایی.
Journey را بیش از حد شلوغ نکنید#
لازم نیست هر Click، Input یا Interaction کاربر را به Milestone تبدیل کنید.
اگر تعداد Journey Stepها بیش از حد زیاد باشد، مسیر اصلی رفتار سختتر دیده میشود و تفاوت بین Event عادی و مرحله مهم محصول از بین میرود.
Milestoneها را برای نقطههایی انتخاب کنید که پاسخ به یکی از این سؤالها کمک میکنند:
- کاربر وارد کدام مرحله شد؟
- کدام تصمیم مهم را گرفت؟
- کدام بخش از فرآیند را کامل کرد؟
- قبل از Goal نهایی از چه مرحلهای عبور کرد؟
تعریف کمتر اما دقیقتر Journey Step معمولاً تحلیل خواناتری ایجاد میکند.
مسیر داشبورد#
Journeyهای ثبتشده از مسیر فعلی زیر در داشبورد آلفانا در دسترس هستند:
/dashboard/journeysاز این بخش میتوانید مسیرهای ثبتشده کاربران را در کنار Pageviewها و Milestoneهای محصول بررسی کنید.