«Unassigned» توی Google Analytics 4 (و چجوری درستش کنیم)

وقتی توی Google Analytics 4 گزارش‌های Traffic Acquisition  رو باز می‌کنی، یه چیزی مرموز به اسم «Unassigned» می‌بینی. خب این چیه و چطوری می‌شه حذفش کرد؟ دلایل زیادی ممکنه داشته باشه. بعضیاش رو می‌شه درست کرد و بعضیاش رو باید همین‌جوری قبول کنی (مگه اینکه گوگل خودش مشکلات زیرساختی رو درست کنه).

اول از همه لازمه یه نگاه کوتاه بندازیم به Default Channel Group.
Google Analytics 4 می‌تونه انواع سورس‌های ترافیک رو دسته‌بندی کنه و اونها رو توی چند تا «دسته» بزرگ‌تر قرار بده. این بهت یه دید کلی می‌ده از این که کدوم کانال‌ها برای بیزنس شما بهتر جواب می‌دن.

مثلاً ممکنه ترافیکت از Bing Organic Search و Google Organic Search بیاد.هر دو این سورس‌ها می‌رن توی گروه پیش‌فرض Organic Search.

الان ۱۸ تا گروه پیش‌فرض داریم:

  • Affiliates
  • Audio
  • Cross-network
  • Direct
  • Display
  • Email
  • Mobile Push Notifications
  • Organic Search
  • Organic Shopping
  • Organic Social
  • Organic Video
  • Paid Other
  • Paid Search
  • Paid Shopping
  • Paid Social
  • Paid Video
  • Referral
  • SMS

یه سری قوانین مشخص وجود داره که براساس اونها Google یه سورس ترافیک خاص رو توی یکی از این گروه‌ها قرار میده.
مثلاً اگه یه بازدیدکننده از یه شبکه‌ اجتماعی معروف بیاد و utm_medium ش شامل «cpc» باشه، اون ترافیک می‌ره توی Paid Social.

می‌تونی لیست همه قوانین رو اینجا ببینی. روی این لینک کلیک کن و اسکرول کن تا برسی به بخش «Channels for manual traffic».

ولی اگه ولیوی یه سورس ترافیک (یا مدیوم، سورس یا هر دایمنشن دیگه‌ش) توی اون قوانین پوشش داده نشده باشه، Default Channel Group مربوط به اون سورس می‌شه Unassigned.چون GA4 نمی‌دونه اون ترافیک رو باید توی کدوم گروه بذاره.

الان که یه کم با مفهوم Default Channel Group آشنا شدیم، بریم ببینیم چه موقع‌هایی ممکنه توی GA4 با «Unassigned» روبرو بشی و چه راه‌حل‌هایی ممکنه داشته باشه. یه نکته رو تأکید کنم: همه موقعیت‌ها الان راه‌حل مشخص ندارن (حداقل فعلاً).

چطوری بفهمیم چه جور ترافیکی به عنوان Unassigned نشون داده می‌شه؟

توی Google Analytics 4 برو به:
Reports > Acquisition > Traffic Acquisition.

چون توی GA4 می‌تونی گزارش‌های استاندارد رو سفارشی‌سازی کنی، ممکنه سایدبار سمت چپت یه کم فرق داشته باشه. 

unassigned default channel group in google analytics 4

پس اگه توی سایدبارت Acquisition رو ندیدی، هی کلیک کن و بگرد دنبال گزارشی که مربوط به Traffic Acquisition باشه.

توی اون گزارش، دایمنشن (dimension) پیش‌فرض، همون Default Channel Group هست.

unassigned default channel group in google analytics 4

اگه اونجا «Unassigned» رو دیدی، ادامه این مقاله رو بخون.
اولین قدم اینه که بفهمی چه نوع ترافیکی به عنوان Unassigned در نظر گرفته شده. روی آیکون Plus بالای جدول کلیک کن و بُعد Session Source/Medium رو اضافه کن.


بعد توی کادر سرچ بالای جدول، بنویس Unassigned و دکمه Enter رو بزن. این کار بهت همه‌ی Source/Mediumهایی که Unassigned موندن رو نشون می‌ده.

unassigned in google analytics 4

خب، حالا بریم ببینیم دلایل (و راه‌حل‌های احتمالی) مربوط به ترافیک Unassigned چیا هستن.

#1. پارامترهای UTM شما مطابق با قوانین گوگل ست نشدن

 اگه  کلی کتاب الکترونیک رایگان تو سایتت داری، ممکنه بخوای ببینی چند نفر روی لینک‌های دانلود کتابات کلیک می‌کنن.
برای این کار یکی ممکنه از utm_medium=pdf استفاده کنه. ولی خب، GA4 نمی‌دونه این رو باید توی کدوم channel group بذاره. واسه همین همچین ترافیکی رو به صورت Unassigned نشون می‌ده.

ga4 unassigned


 گاهی شرکت‌هایی رو می‌بینم که کمپین‌های بازاریابیشون رو با UTMهایی تگ می‌کنن که کلاً غلطه. مثلاً به جای اینکه از utm_medium=email استفاده کنن، از utm_medium=em یا utm_medium=mail استفاده می‌کنن.
نه “em” و نه “mail” توسط GA4 شناسایی نمی‌شن؛ واسه همین شما Unassigned می‌گیری.

مقدارهای درست برای utm_medium توی کمپین‌های ایمیلی ایناست:
✅ “email”
✅ “e-mail”
✅ “e_mail”
✅ “e mail”

اگه یکی از اینا رو بذاری، ترافیک کمپین ایمیلیت به گروه پیش‌فرض Email اختصاص داده می‌شه.

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

البته یه راه دیگه هم هست: می‌تونی توی GA4 یه custom channel group درست کنی که بتونه UTMهای کاستوم تو رو بشناسه.
ولی یادت باشه که اگه پارامتر اول ریپورت traffic acquisition رو روی default channel group بزاری ترافیک Unassigned همچنان باقی می‌مونه.

unassigned default channel group in google analytics 4

 ولی اگه بیشتر ترافیک Unassignedت (not set) یا (دیتا در دسترس نیست) باشه چطور؟
این بخش یه کم دردناک و آزاردهنده‌ست. بعضی چیزها قابل تعمیرن، و بعضی‌ موارد هم بدون دلیل مشخصی اتفاق می‌افته.توی بلاگ پست های دیگه در مورد رفع این مشکل کامل توضیح دادم.

not set - google analytics 4 unassigned

 #2. استفاده نادرست از مژرمنت پروتکل 
مژرمنت پروتکل (MP) یکی از روش‌هایی هست که می‌تونی دیتا رو به GA4 بفرستی. این روش برای ارسال دیتا از سرورت (مثلاً CRM) به گوگل آنالیتیکس ۴ طراحی شده. ولی توجه داشته باش که MP به غنی‌سازی دیتایی که توی وب‌سایتت جمع‌آوری کردی کمک میکنه، نه ایجاد سشن‌های جدید یا ایجاد کاربرها/بازدیدکننده‌های جدید.

اگه بازدیدکننده‌ای توی سایتت باشه و سشن رو شروع کنه، می‌تونی ایونت‌های اضافی رو از سرور بفرستی و به اون سشن اضافه ش کنی. این کار رو می‌تونی تا ۷۲ ساعت قبل انجام بدی. در یوتیوب درباره کار با MP آموزش های جذابی هست.
اگه دولوپرها دیتا رو از طریق MP به سشن فعال فعلی سایتت بفرستن، هر ایونت باید پارامترهای کلاینت_آیدی و سشن_آیدی رو داشته باشه. اگه سشن_آیدی ارسال نشده باشه (یا سشن_آیدی با آیدی سشن فعال فعلی مطابقت نداشته باشه)، سورس ترافیک اون سشن (not set) می‌شه.
اگه دولوپر دیتا رو از طریق MP به سشن‌ خاصی که تایم‌اوت شده (ولی بیشتر از ۷۲ ساعت ازش نگذشته) بفرسته، باید پارامتر timestamp_micros رو هم بفرسته. اگه این کار انجام نشه، باز هم سورس/مدیوم (not set) می‌شه.

#3. مطمئن شو تگ کانفیگ گوگل اول فایر بشه 
به نظر میاد اگه تگ ایونت GA4 قبل از تگ گوگل فایر بشه، ممکنه تعداد سورس/مدیوم‌های "not set" زیاد میشه. پس می‌تونی تگ کانفیگ گوگل رو طوری تنظیم کنی که روی تریگر Initialization – All pages فایر بشه. بعد (اگه تگ‌های ایونت داری که روی تریگرهای "Pageview" فایر بشن)، سعی کن اونا رو به تعویق بندازی، مثلاً با تنظیمشون روی تریگرهای DOM ready یا Window Loaded.

این برای تنظیمات GTM سرور ساید خیلی مهمه. توی تگ کانفیگ گوگل، باید URL endpoint سمت سرورت رو تنظیم کنی. اگه تگ ایونت قبل از تگ گوگل فایر بشه، URL سرورت رو نمی‌دونه و اتفاقات عجیبی می‌افته. یکی از عواقب این کار (not set) شدنه.

 #4. استریم ایونت‌ها از پلتفرم‌های دیگه به GA4  
بعضی ابزارها/پلتفرم‌ها قابلیت استریم ایونت‌ها به GA4 رو دارن، مثل Amplitude یا Segment. مستقیم با این ابزارها کار نکردم (تا درباره جزئیات فنی نظر بدم)، ولی پروژه‌هایی دیدم که ازشون استفاده کردن و حدس می‌زنم (احتمالاً) از پروتکل اندازه‌گیری GA4 هم استفاده می‌کنن.
چون (احتمالاً) سشن_آیدی رو نمی‌فرستن، همه این ایونت‌ها به سورس/مدیوم (not set) نسبت داده می‌شن. نتیجه‌ش اینه که توی Unassignedها میرن.
چیکار کنیم؟ من متخصص این پلتفرم ها نیستم، پس نمی‌تونم نظر بدم. شاید باید نصب مستقیم/استاندارد GA4 (از طریق GTAG یا GTM) رو بررسی کنی.
در مورد پلتفرم Amplitude باید توصیه کنم که: استریم نکن. از Amplitude برای نیازهات استفاده کن، ولی وقتی بحث GA4 می‌شه، ترکینگ ایونت‌هاش رو طبق توصیه گوگل (از طریق GTAG یا GTM) پیاده‌سازی کن.


 #5. Audience تریگرها  
وقتی گوگل آنالیتیکس ۴  قابلیت ساختن audience رو راه‌اندازی کرد، هیجان‌زده شدم. این قابلیت بهمون اجازه می‌داد مخاطب‌های پیچیده‌تری بسازیم و وقتی بازدیدکننده وارد یه دسته مخاطب می‌شه، GA4 به‌صورت خودکار ایونتی رو ارسال می‌کنه.
بعدتر متوجه شدم تریگرهای audience باعث زیادشدن تعداد سورس ترافیک (not set) شدن. این همیشه اتفاق نمی‌افته، پس نتایج/میزان بروز این مشکل توی پراپرتی‌های مختلف فرق داره.
گاهی اگه تریگر مخاطبت از جنس مخاطب پیش‌بین (predictive) باشه، احتمالاً ایونتش به سشن موجود اضافه نمی‌شه. پس سورس/مدیوم (not set) / (not set) می‌شه، که به ترافیک Unassigned توی گوگل آنالیتیکس ۴ منجر می‌شه.
بعضی وقت‌ها حتی تریگرهای معمولی مخاطب (غیرپیشبینی گر non-predictive) هم این مشکل رو ایجاد می‌کنن.
متأسفانه راه‌حلی برای این نیست. تریگرهای مخاطب توی بک‌اند گوگل آنالیتیکس ۴ مدیریت می‌شن. پس اگه از تریگرهای GA4 استفاده می‌کنی (اینو با تریگرهای Google Tag Manager اشتباه نگیر)، قبول کن که سورس ترافیک های (not set) بیشتر از معمول میشن.

#6. مشکلات مرتبط با گوگل ادز  
اگه از گوگل ادز استفاده می‌کنی، این چیزها رو چک کن:
- ببین گوگل ادز رو به گوگل آنالیتیکس ۴ وصل کردی یا نه. اگه نه، درستش کن.  
- چک کن ببین auto-tagging فعاله یا نه. اگه نه، شدیداً توصیه می‌شه فعالش کنی.  

#7. پارامترهای UTM ناقص/نادرستن  
اگه از پارامترهای UTM استفاده می‌کنی، همیشه حداقل از utm_source، utm_medium و utm_campaign استفاده کن.
بیشتر قواعد توی مستندات GA4 به utm_source و utm_medium میپردازن. بعضی‌هاشون هم به utm_campaign هم توجه می‌کنن.
اگه لینک‌های کمپین‌های بازاریابی‌ت مثلاً فقط utm_campaign داشته باشن (example.com/?utm_campaign=upsell)، utm_medium و utm_source به صورت (not set) می‌شن. نتیجه‌ش اینه که این کمپین توی گوگل آنالیتیکس ۴ جزو ترافیک Unassigned میاد.
پس توصیه من این هست که همیشه حداقل ۳ پارامتر UTM استفاده کن: utm_medium، utm_source، utm_campaign.
#8. دیتا هنوز کامل توسط GA4 پردازش نشده  
گوگل آنالیتیکس زمان می‌بره تا دیتا رو پردازش کنه (بین ۲۴ تا ۴۸ ساعت). پس اگه به گزارش‌هات نگاه کنی و دیتای دیروز یا (احتمالاً) امروز رو چک کنی، ممکنه ببینی ترافیک Unassigned یهو زیاد شده. این به خاطر اینه که دیتای منبع ترافیک پردازش‌نشده می‌تونه به‌عنوان  (data not available) نمایش داده بشه.


این توی GA4 نرماله و باید صبور باشی. همون بازه زمانی رو فردا چک کن، و ترافیک Unassigned توی گوگل آنالیتیکس ۴ باید سشن‌های کمتری داشته باشه.

 #9. ایونت session_start ثبت نشده  
این یکی یه معما‌ست. وقتی سشن‌هایی رو پیدا می‌کنم که سورس ترافیک (not set) دارن، اغلب این سشن ها ایونت session_start رو ندارن (که GA4 به‌صورت خودکار ارسال می‌کنه).
missing session_start in google analytics 4
اولین دلیلی که به ذهنم می‌رسه سرورساید تگینگ هست. ممکنه ستاپی داشته باشی که این ایونت رو حذف کنه و از سرور تگینگ به GA4 ارسال نشه. یا شاید تگ‌های ایونت GA4ت گاهی قبل از تگ کانفیگ گوگل فایر بشن.
متأسفانه دلیل دقیقی برای این اتفاق پیدا نکردم و  اینکه چطور ازش جلوگیری کنم. و هرچه بیشتر تحقیق می‌کنم، بیشتر به نظر میاد یه باگ GA باشه.

#10. این حالت به Reporting Identity ربط داره 
گوگل آنالیتیکس ۴ از روش‌های مختلفی برای شناسایی بازدیدکننده‌ها (آیدی کاربر، کوکی‌ها، گوگل سیگنال و غیره) استفاده می‌کنه. یه بار پروژه‌ای داشتم که با تعداد زیاد Unassigned روبه‌رو بود. بعد از چک کردن همه راه‌حل‌های شناخته‌شده، هنوز دلیلش رو پیدا نکردم. پس شروع کردم تنظیمات مختلف رو تغییر بدم تا ببینم چی کمک می‌کنه.
ظاهراً تغییر Reporting Identity به Device-based (که اینجا توضیح دادم) کمک کرد و تعداد سشن‌های Unassigned به‌طور قابل‌توجهی کم شد. هنوز دلیل دقیقش رو نمی‌دونم، ولی خواستم بگم این مورد هم ممکنه گزینه‌ قابل اتکایی باشه.

 #11. تغییر دستی سشن_آیدی و از کار انداختنش  
این بیشتر یه حالت خاصه، ولی شاید برای بعضیا مفید باشه. یه مورد بود که دیدم توی تگ کانفیگ GA4 (به اصطلاح تگ گوگل) پارامتر سشن_آیدی رو به‌صورت دستی تغییر داده بودن (بدون هر نوع دلیل قابل اعتنایی). چیزی مثل این:

بدتر اینکه متغیری که توی این ستاپ استفاده شده بود هر بار که تگ گوگل فعال می‌شد (توی هر لود صفحه) یه عدد تصادفی رو بعنوان ولیوی پارام session_id ایجاد می‌کرد. این باعث ایجاد مشکل بزرگ (not set) برای دایمنشن های سورس ترافیکی می شد، در نتیجه کل ترافیک توی "Unassigned" قرار میگرفت.

#12. پرداخت‌های تکراری
از نظر تکنیکال، این مشکل مستقیماً بخاطر مژرمنت پروتکل ایجاد میشه، ولی چون بعضی خواننده‌ها فقط تیترها رو میخونن می‌کنن، خواستم جداگونه بهش بپردازم.
اگه یه محصول اشتراکی می‌فروشی و می‌خوای همه خریدهای تکرارشونده رو با گوگل آنالیتیکس ۴ ترکینگ کنی، بیشترشون Unassigned می‌شن. یادت میاد چی درباره MP گفتم؟ باید ایونت خرید رو به سشنی که توی ۷۲ ساعت گذشته اتفاق افتاده وصل کنی.
اگه کاربر به مدت طولانیتری لاگین نکرده (یا سیستم بک‌اندت آیدی جدیدترین سشن کاربر رو نمی‌دونه)، اون ایونت خرید دیتای سورس ترافیک رو نخواهد داشت. این یعنی (not set) توی گروه کانال Unassigned گنجونده می‌شه.

#13. ترافیک ربات 
اگه یهو می‌بینی ترافیک زیادی داری و بیشتر اون ترافیک به‌عنوان Unassigned نمایش داده می‌شه (سورس/مدیوم (not set) هست)، ممکنه ترافیک ربات زیادی دریافت کنی.
هرچند (در بیشتر موقعیت‌ها) ترافیک ربات به‌عنوان ترافیک مستقیم نمایش داده می‌شه، ممکنه توی موارد خاصی (not set) باشه. گوگل آنالیتیکس ۴ گزینه فیلتر پیشرفته‌ای برای حذف این ترافیک از گزارش‌ها ارائه نمی‌ده؛ پس ممکنه نیاز باشه جای دیگه دنبال راه‌حل بگردی، مثلاً:
- اگه سایتت از Cloudflare به‌عنوان CDN استفاده می‌کنه، می‌تونی تنظیمات سطح امنیتی رو چک کنی. می‌تونی اونا رو سخت‌گیرانه‌تر کنی که شانس بلاک کردن ربات‌های ناخواسته بیشتر بشه.  
- می‌تونی با دولوپرهای سایتت حرف بزنی و ازشون بخوای آدرس IPهای اون اسپایک‌ها رو چک کنن. شاید فقط چند IP هست که همیشه استفاده می‌شن. اگه آره، می‌تونی از دولوپر بخوای اون IPها رو بلاک کنه یا توی گوگل آنالیتیکس ۴ (با استفاده از فیلترهای ترافیک داخلی) بلاکشون کنی. اگه از سرور ساید تگینگ استفاده می‌کنی، می‌تونی یه تریگر بلاکینگ به همه تگ‌های SGTM اضافه کنی و جلوی فایر شدن اونا رو بگیری اگه آدرس IP عامل یکی از اون اسپایک‌ها باشه.

#14. همه تگ‌ها توی SGTM پارامترserver_container_url رو ندارن 
اگه گوگل آنالیتیکست از طریق GTM سرورساید نصب شده، مطمئن شو همه گوگل تگ‌ها دیتا رو به URL کانتینر سرورت می‌فرستن.
هرچند توی بیشتر موارد کافیه فقط server_container_url رو توی تگ گوگل بذاری، شدیداً توصیه می‌کنم همین کار رو برای همه تگ‌های ایونت GA4 هم انجام بدی.


می‌تونی این فرآیند رو با اضافه کردن اون پارامتر توی event parameter variable ساده کنی.
چرا این مهمه؟ اگه بعضی تگ‌ها دیتا رو به endpoint SGTMت بفرستن و بقیه شون مستقیم به گوگل آنالیتیکس بفرستن، این می‌تونه اتریبیوشن رو به‌هم بزنه.

#15. کوکی‌ها و تشخیص کلاینت (SGTM)  
مشکل ذکرشده قبلاً (درباره server_container_url) وقتی شایع‌تر می‌شه که کلاینت GA4ت (توی کانتینر سرورساید) از گزینه “Cookies and Client Identification” استفاده کنه که توسط سرور مدیریت میشه.

و به‌طور کلی، وقتی از گزینه دوم یعنی JavaScript Managed identification استفاده می‌کنی، مشکل Unassigned توی GA4 کمتر به نظر میاد (به همین دلیل معمولاً از این گزینه استفاده می‌کنم).

به خاطر داشته باش که گزینه  Server Managed به‌صورت پیش‌فرض وقتی کلاینت گوگل آنالیتیکس ۴ رو می‌سازی فعاله، پس اگه می‌خوای از گزینه جاوااسکریپت استفاده کنی، باید توی هر کلاینت GA4 جدیدی که می‌سازی تغییرش بدی.

#16. SGTM + تگ گوگل هاردکد شده
اینجا یه سناریو رو میخوام فرش بگیری: گوگل آنالیتیکس رو از طریق GTM نصب کردی و دیتا رو به GTM سرورساید می‌فرستی. ولی ممکنه تگ گوگل  (GTAG) رو هم به صورت هاردکد شده جایی توی سورس کد سایتت داشته باشی. شاید دولوپر gtag.js رو مستقیم به سورس کد سایت اضافه کرده باشه. و شاید هم یه پلاگین گوگل آنالیتیکس توی سایت نصب شده باشه.
این باعث مشکل توی ترکینگ و اتریبیوشن می‌شه.
چطور می‌تونی بفهمی مشکل همینه؟ تب Network مرورگرت رو چک کن. اگه بعضی درخواست‌ها به google-analytics.com (یا دامنه گوگل دیگه) می‌رن و بقیه به endpoint کاستوم خودت (کانتینر SGTM) می‌رن، این باعث ترافیک Unassigned می‌شه.
ایده‌آل اینه که اگه از Google Tag Manager برای نصب GA4 استفاده می‌کنی، همه ایونت‌ها (با حذف gtag هاردکدشده)  به GTM منتقل بشن. مثلاً اگه gtag ایونت generate_lead رو ترکینگ می‌کنه، باید توی کانتینر Google Tag Manager تگ و تریگری برای این ایونت بسازی.
هیچ راه راحتی برای "انتقال" ترکینگ از اسنیپت‌های هاردکد به Google Tag Manager وجود نداره. باید همه ایونت‌هایی که با gtag ترکینگ می‌شن رو بررسی کنی، تصمیم بگیری کدوم مهمن، و بعد توی GTM اونها رو ست کنی. بعد از اینکه این کار انجام شد، اسکریپت هاردکد شده GA4 (یا پلاگین) باید از سایت حذف بشن.
حرف آخر  
می‌دونم این موضوع دردناکه. خیلی از کاربران GA4 با این روبه‌رو هستن، کاش همه موقعیت‌های توصیف شده توی این مقاله راه‌حل داشت، ولی واقعیت این نیس.