Segments و Cohorts
دادههای موردنیاز برای ساخت Segmentهای پویا و Cohortهای زمانی بر اساس رفتار و ویژگیهای کاربران.
Segmentها و Cohortها کمک میکنند بهجای نگاه کردن به همه کاربران بهعنوان یک گروه واحد، رفتار بخشهای مشخصتری از Audience را جداگانه بررسی کنید.
Segmentها میتوانند بر اساس شرطهای رفتاری، Campaign، Location، Device، Revenue و ویژگیهایی که برای Visitor شناسایی شدهاند ساخته شوند. به این شکل میتوانید گروههایی از کاربران با context مشترک تعریف کنید و ببینید هر گروه چه الگوی رفتاری متفاوتی دارد.
Cohortها بیشتر روی زمان یا یک رخداد مبنا تمرکز دارند. کاربران حول یک نقطه شروع مشترک گروهبندی میشوند تا بتوانید رفتار آنها را در دورههای بعد با یکدیگر مقایسه کنید.
برای اینکه این تحلیلها context بیشتری داشته باشند، میتوانید بعد از مشخص شدن هویت کاربر ویژگیهای موردنیاز را با identify() به Tracker اضافه کنید.
شناسایی Visitor#
identify() برای اضافه کردن ویژگیهای شناختهشده کاربر به Session و context تحلیلی او استفاده میشود.
برای مثال:
tracker.identify({
id: user.id,
email: user.email,
plan: user.plan,
role: user.role,
country: user.country,
});این اطلاعات میتوانند بعداً برای ساخت Segmentهای دقیقتر استفاده شوند.
برای مثال میتوانید کاربران را بر اساس مواردی مثل این گروهبندی کنید:
- Plan فعلی
- Role کاربر
- Country
- Campaign ورودی
- Device
- رفتارهای مشخص داخل محصول
- Goalهای انجامشده
- Revenue ثبتشده
- سایر ویژگیهایی که از طریق
identify()ارسال شدهاند
در نتیجه، بهجای اینکه فقط بپرسید «کاربران چه رفتاری دارند؟»، میتوانید سؤال دقیقتری مثل «کاربران Plan Pro بعد از ثبتنام چه رفتاری دارند؟» یا «کاربرانی که از این Campaign وارد شدهاند در ادامه Journey چه تفاوتی با بقیه دارند؟» بررسی کنید.
قرارداد identify()#
متد identify() در نسخه فعلی فقط مقدارهایی با ساختار زیر میپذیرد:
Record<string, string>;یعنی هم key و هم value باید بهصورت string ارسال شوند.
اگر مقدار موردنظر شما عددی یا boolean است، پیش از ارسال آن را به string تبدیل کنید.
برای مثال:
tracker.identify({
age: String(user.age),
isTrial: String(user.isTrial),
plan: user.plan,
});ارسال نوع داده سازگار کمک میکند ویژگیهای Visitor در pipeline و ارزیابیهای بعدی رفتار قابلپیشبینی داشته باشند.
همین ویژگیهای شناساییشده میتوانند در ارزیابی و هدفگیری Feature Flagها نیز استفاده شوند. بنابراین Naming و مقداردهی این propertyها بهتر است در کل محصول ثابت و قابلپیشبینی باشد.
Segmentها چگونه ساخته میشوند؟#
Segment یک Audience پویاست که membership آن بر اساس مجموعهای از شرطها تعیین میشود.
این شرطها میتوانند از چند نوع داده مختلف استفاده کنند؛ برای مثال:
- رفتار کاربر داخل محصول
- Pageview یا مسیرهای بازدیدشده
- Campaign و UTM
- Location
- Device
- Revenue
- Goalها
- ویژگیهای ثبتشده با
identify()
برای مثال میتوانید Segmentی برای کاربران Plan Pro تعریف کنید یا گروهی از کاربران را جدا کنید که از یک Campaign مشخص وارد شده و بعد Goal خاصی را انجام دادهاند.
با تغییر رفتار یا ویژگیهای کاربر، membership او نیز میتواند بر اساس تعریف Segment تغییر کند. به همین دلیل Segmentها برای بررسی Audienceهای پویا مناسباند.
Cohortها چه تفاوتی دارند؟#
Cohort برای گروهبندی کاربران حول یک زمان یا رخداد مبنا استفاده میشود.
برای مثال، میتوانید کاربرانی را که در یک هفته مشخص ثبتنام کردهاند در یک Cohort قرار دهید و رفتار آنها را در هفتههای بعد بررسی کنید.
یا میتوانید گروهی از کاربران را بر اساس یک Event مشترک مثل اولین Purchase یا فعالسازی یک قابلیت کنار هم قرار دهید و ببینید رفتار آنها بعد از آن نقطه چگونه تغییر میکند.
Cohortها برای سؤالهایی مناسباند که زمان در آنها نقش مهمی دارد؛ مثل:
- کاربران جذبشده در این ماه در هفتههای بعد چقدر فعال ماندهاند؟
- کاربران یک Campaign مشخص بعد از چند هفته چه رفتاری دارند؟
- کسانی که یک Feature را برای اولین بار استفاده کردهاند بعداً بیشتر برمیگردند یا نه؟
- رفتار کاربران ثبتنامشده در دو بازه زمانی چه تفاوتی دارد؟
در اینجا هدف فقط گروهبندی کاربران نیست؛ بلکه دیدن تغییر رفتار آنها در ادامه زمان است.
دادههای لازم برای Audienceهای دقیقتر#
SDK بخشی از context موردنیاز را بهصورت خودکار ثبت میکند، اما کیفیت Segmentها و Cohortها به دادهای بستگی دارد که در اختیار سیستم قرار میگیرد.
برای Audienceهای دقیقتر:
- بعد از Login یا زمانی که اطلاعات کاربر مشخص میشود، ویژگیهای لازم را با
identify()ثبت کنید. - propertyهایی را ارسال کنید که واقعاً در تحلیل یا هدفگیری استفاده میشوند.
- نام propertyها را در طول زمان ثابت نگه دارید.
- مقدارهای عددی و boolean را پیش از ارسال به string تبدیل کنید.
- Campaignها و UTMها را با Naming Convention ثابت ثبت کنید.
- Goalها و Revenue Eventها را با نامها و ساختارهای قابلپیشبینی ارسال کنید.
هرچه داده ورودی منظمتر باشد، تعریف Audience نیز سادهتر و نتیجه تحلیل قابلتفسیرتر خواهد بود.
Segment و Feature Flag#
ویژگیهایی که با identify() ثبت میشوند فقط برای گزارشهای Audience نیستند.
این propertyها میتوانند در context ارزیابی Feature Flagها نیز استفاده شوند. برای مثال، اگر Flag بر اساس Plan یا Role هدفگیری شده باشد، مقدارهای ثبتشده برای Visitor میتوانند روی نتیجه ارزیابی آن اثر بگذارند.
به همین دلیل بهتر است propertyهایی مثل plan، role یا country ساختار ثابتی داشته باشند و بین بخشهای مختلف محصول با مقدارهای متفاوت یا نامهای چندگانه ارسال نشوند.
برای مثال، اگر مقدار Plan در یک بخش pro و در بخش دیگری Pro Plan ثبت شود، ممکن است در تحلیل یا Targeting بهعنوان دو مقدار متفاوت دیده شوند.
نقش SDK و Dashboard#
SDK داده ورودی موردنیاز برای Audience Analysis را فراهم میکند، اما تعریف دقیق Segment و Cohort در خود SDK انجام نمیشود.
تعریف شرطهای membership، منطق Audience و Metricهای مربوط به Cohort در Dashboard و Backend آلفانا مدیریت میشوند.
SDK وظیفه دارد رفتارها و ویژگیهای لازم را با ساختار درست ثبت کند تا این اطلاعات بعداً در تحلیل Audience قابل استفاده باشند.
به همین دلیل، تغییر منطق یک Segment یا Cohort معمولاً نیازی به تغییر کد SDK ندارد؛ تا زمانی که دادههای موردنیاز از قبل collect شده باشند.
حریم خصوصی Audienceها#
Segmentها، Cohortها و Visitorهای واقعی بخشی از دادههای خصوصی حساب شما هستند.
این دادهها فقط از مسیرهای مجاز Dashboard و Backend در دسترس قرار میگیرند و جزئی از مستندات عمومی آلفانا نیستند.
MCP مستندات نیز فقط به corpus عمومی Docs دسترسی دارد و هیچ Audience، Segment membership، Cohort، Visitor یا داده واقعی کاربران حساب شما را برنمیگرداند.