پارامترهای UTM توی Google Analytics 4 کار نمی‌کنن؟  راه‌حل‌ چیه؟

هیچ چیز اعصاب‌خردکن‌تر از این نیست که یه آموزش خاصی رو دنبال کنی، همه مراحل رو بری، و بعد ببینی ترکینگت اون طور که می‌خوای کار نمی‌کنه.
پارامترهای UTM برای ترکینگ کمپین‌های بازاریابی مهمن تا مطمئن شی زمان و پولت رو درست خرج می‌کنی، پس می‌خوای مطمئن شی درست کار می‌کنن.

اینجا با هم بررسی می‌کنیم که چرا پارامترهای UTMت درست کار نمی کنن و چطور این مشکلات رو برطرف کنی!
نکته: پارامترهای UTM باید فقط توی URL صفحه فرود (جایی که GA4 لود می‌شه) وجود داشته باشن. وقتی کاربر از اون صفحه رفت، ایرادی نداره که UTMها دیگه اونجا نباشن (در واقع، معمولاً همین مورد اتفاق میفته).
پس اگه دنبال این هستی که UTMها رو توی چندین صفحه لود شده در طول یه سشن حفظ کنی، باید بگم که این کار ضرورتی نداره. GA4 دیتای UTM پارامترها رو به‌صورت خودکار مدیریت می‌کنه البته به شرطی که URL صفحه اول شامل UTMها باشه.
 دلیل #۱: سرور ریدایرکت‌ها  
اگه بازدیدکننده وارد سایتت بشه و سایت به‌صورت خودکار کاربر رو به صفحه دیگه‌ای مثل صفحه لاگین ریدایرکت کنه، URL ممکنه تغییر کنه و پارامترهای UTM از دست برن. نتیجه‌ش اینه که وقتی تگ GA4 فایر می‌شه، نمی‌تونه پارامترهای UTM رو از لینک اصلی که کاربر روش کلیک کرده دریافت کنه.

کروم یه افزونه به اسم Redirect Path داره که هر ریدایرکتی که بعد از یه URL مشخص اتفاق می‌افته رو نشون می‌ده. اگه پارامترهای UTM خاصی رو توی دیتات مدام نمی‌بینی (و می‌دونی اون پارامترها ست شدن)، می‌تونی لینک‌هایی که این پارامترها رو دارن تست کنی تا مشخص بشه ریدایرکتی اتفاق می‌افته یا نه.

https://chromewebstore.google.com/detail/redirect-path/aomidfkchockcldhbkggjokdkkebmdll



سایتی که می‌خوای چک کنی رو وارد کن، صبر کن تا ریدایرکت بشه، و روی افزونه Redirect Path کلیک کن تا ببینی چی باعث ریدایرکت شده!
اینجا دو تا چیز می‌بینی: بخش بالایی افزونه لینک دارای UTMها رو نشون می‌ده، و بخش پایین نشون می‌ده کاربر نهایتاً به صفحه password/ ریدایرکت شده و UTMها غیبشون زده. این مشکل سازه چون GA4 روی صفحه دوم (صفحه بدون UTMها) لود شده.
تنها راه‌حل اینه که با دولوپرها همکاری کنی. مشکل رو براشون توضیح بده و ببین آیا می‌تونن تنظیمات رو در سطح سرور طوری تغییر بدن که ریدایرکت حذف بشه.

دلیل #۲: ریدایرکت‌های جاوااسکریپتی
مشابه مورد بالا، یه ریدایرکت که توسط کدهای JS سایتت درست شده هم می‌تونه پارامترهای UTM رو از URL حذف کنه. وقتی کاربر روی لینکی با پارامترهای UTM کلیک می‌کنه، ریدایرکت جاوااسکریپتی اونو به صفحه دیگه‌ای می‌فرسته و UTMها رو از URL پاک می‌کنه.
دوباره می‌تونی از افزونه Redirect Path استفاده کنی تا اینو تست کنی. سایتی که می‌خوای چک کنی رو وارد کن، صبر کن ریدایرکت بشه، و روی افزونه Redirect Path کلیک کن تا ببینی چی باعث ریدایرکت شده!
راه‌حل دوباره اینه که با ئولوپرهات تعامل کنی تا جاوااسکریپتی که این مشکل رو ایجاد کرده رو حذف کنن، یا حداقل کدی رو اضافه کنن که پارامترهای UTM توی URL باقی بمونن.
توی موارد نادری هم دیدم که اسکریپت ریدایرکت‌ جاوااسکریپتی خودش داخل GTM ست شده بود. پس اگه دولوپرها نمی‌دونن ریدایرکت از کجا میاد، شاید بد نباشه کانتینر Google Tag Managerت رو هم چک کنی.

 دلیل #۳: پارامتر UTM نادرست یا وجود خطای تایپی  
شاید این یه مورد بی اهمیت به نظر بیاد، ولی خطاهای ساده زمان ست کردن پارامترهای UTM شایع‌تر از چیزیه که فکر می‌کنی. اگه نیاز به یادآوری قواعد درست ست کردن UTM داری، راهنمای پارامترهای UTM توی GA4 رو مرور کن.
چند نکته ساده که باید یادت باشه:
- پارامترهای UTM باید بعد از "?" بیان و فقط یه "?" توی URL باشه!  

- هر UTM پارامتر باید با "&" از هم جدا بشه!  - مطمئن شو "utm_" جلوی هر پارامتر هست!  مثلا utm_campaign- مطمئن شو مقدار درست رو برای هر پارامتر استفاده کردی، مثلاً اگه email بعنوان ولیوی source میاد، احتمالاً پارامترت رو قاطی کردی!

دلیل #۴: UTMها در سطح تگ/کد ترکینگ حذف شدن  
همه‌مون این کار رو کردیم: داری چیزی رو توی کانتینر GTM تست می‌کنی، یادت می‌ره که اون چیز خاص رو حذف کنی، و دفعه بعد که کانتینرت رو آپدیت می‌کنی، اون مورد تستی هم پابلیش می‌شه.
ممکنه مدتی پیش ترکینگ خاصی رو انجام داده باشی یا بدون اینکه بخوای ترکینگت رو طوری تغییر دادی که پارامترهای UTM رو حذف کنه.
توی GTM برو به تگ کانفیگ GA4 و دوبار چک کن که page_location رو طوری تغییر نداده باشی که با حالت عادی فرق داشته باشه.

مثلاً ممکنه یه وریبل(variable) جدید ساخته باشی که page_location پیش‌فرض رو اصلاح کنه تا PII احتمالی (مثلا آدرس جیمیل کاربر) رو از URL حذف کنه و (تصادفاً) پارامترهای UTM رو به‌عنوان کلیدهای کوئری اضافه کرده باشی.


خوشبختانه این یه اصلاح ساده‌ست؛ باید utm پارامترها رو از این وریبل خاص حذف کنی و کانتینرت رو پابلیش کنی (مطمئن شو جای دیگه ای توی کانتینرت مشکل عجیبی پیش نیاد). متأسفانه دیتای قبلیت برنمی‌گرده، ولی حالا تضمین میکنی از این به بعد پارامترهای UTM به GA4 فرستاده بشن.
دلیل #۵: وسط سشن روی لینک دیگه ای با پارامترهای UTM کلیک شده  
گوگل روی سورس ترافیک در شروع سشن تمرکز داره، پس اگه کاربر وسط سشن روی لینک دیگه ای که UTM پارامتر داره کلیک کنه، اون سشن فقط به سورس، مدیوم و کمپین ابتدای سشن نسبت داده می‌شه. ولی به خاطر نحوه کار GA4، اگه کاربر فردا مستقیم آدرس سایت رو وارد کنه و اینتر رو بزنه، اون سشن ممکنه به کلیک لینکی نسبت داده بشه که وسط سشن قبلی رخ داده بود.



این مشکل ممکنه موقع تست لینک‌های کمپین بازاریابیتون پیش بیاد اگه سشن باز داشته باشی.
ولی نگران نباش. یه راه‌حل وجود داره که حتی اگه کاربرا وسط سشن روی لینک دارای پارامترهای UTM کلیک کرده باشن، دیتای UTM رو ببینی.
برو به رابط GA4 > Explore و یه گزارش جدید بساز.

page_location رو به‌عنوان دایمنشن و هر متریکی (مثلtotsl users یا views) رو اضافه کن. دوبار روی اون دایمنشن ها و متریک ها کلیک کن تا به گزارش اضافه بشن.

page_location رو از بخش  filters اضافه کن, شرط فیلترینگ روی "contains" باشه و توی فیلد زیرش عبارت "utm_" رو تایپ کن.

چون GA4 با هر بار لودشدن هر پیج یه ایونت page_view جمع‌آوری می‌کنه (مطمئن شو ترکینگ رو انجام دادی اگه اپلیکیشن تک‌صفحه‌ای SPA داری)، اگه کاربری روی لینک دارای پارامترهای URL کلیک کنه، URL در کتار  ایونت page_view ضبط می‌شه. می‌تونیم از این استفاده کنیم تا دیتای UTM رو ببینیم.

می‌تونی این دیتا رو توی Google Sheets اکسپورت کنی تا بهتر تمیزش کنی. توی همون گزارش اکسپلور روی این آیکون بزن:



دلیل #۶: کد ترکینگ توی لندینگ پیج نیست/لود نشده
این مورد ممکنه یه کم احمقانه به نظر بیاد، ولی هنوز ارزش چک کردن داره چون ممکنه صفحه‌ای که کاربر توش فرود میاد کد ترکینگ نداشته باشه. فرض کن کاربری با استفاده از یه لینک UTM ای وارد سایتت بشه، ولی اون پیج کد ترکینگ نداشته باشه، و بعد به صفحه دیگه‌ای بره که ترکینگ داره. در نتیجه اون UTMها ضبط نمی‌شن.

هرچند جزئیات اینکه چرا این اتفاق می‌افته و راه‌حل‌هاش رو نمیگم، بعنوان یه توضیح اجمالی ممکنه این اتفاق افتاده باشه: مشکلات فنی پیش اومده مثلا اینکه دولوپر کد ترکینگ رو به لندینگ اضافه نکرده یا مشکل تریگر توی GTM داریم.

 دلیل #۷: مشکلات مرتبط با کانسنت  
فرض کن کاربری از یه لینک UTM دار وارد سایتت می‌شه و یه پاپ‌آپ ظاهر می‌شه که کاربر باید شرایط استفاده از سایت رو قبول کنه تا ادامه بده. کاربر پاپ‌آپ رو نادیده می‌گیره، به صفحه بعدی می‌ره و بعد اونجا شرایط کاربری رو قبول می‌کنه. توی این حالت UTMها از دست میرن.

وقتی می‌خوای از این موقعیت‌ها جلوگیری کنی، حواست باشه که چون با مسائل قانونی سروکار داری، ممکنه راه حل یکم پیچیده بشه. من کارشناس حقوقی نیستم، پس پیشنهاد می‌کنم با تیم حقوقیت مشورت کنی قبل از هر اقدامی.
این موارد رو میتونی با اون تیم بررسی کنی:
- پارامترهای UTM رو وقتی کاربر به صفحه دیگه می‌ره حفظ کنیم، تا وقتی شرایط استفاده از سایت رو قبول کرد، دیتای UTM رو جمع‌آوری کنیم.  
- راه‌های نادیده گرفتن پاپ‌آپ رضایت رو کم کن. مثلاً پاپ‌آپ کوکی رو بزرگ‌تر کن تا کاربرا بیشتر ترغیب بشن روش کلیک کنن تا اینکه نادیده بگیرنش. اگه کاربر قبول کنه، احتمالاً UTMها هنوز توی URL هستن و GA4 می‌تونه اونا رو جمع‌آوری کنه.  
- می‌تونی از Advanced Consent mode استفاده کنی تا جمع‌آوری دیتای سایتت رو اصلاح کنه. مثلاً اگه کاربر رضایت به وجود کوکی‌های آنالیتیکس نده، Consent mode هنوز به سایتت اجازه بده که پینگ‌های بدون کوکی جمع‌آوری کنه. اگه رضایت کلی داده بشه، کوکی‌ها تنظیم می‌شن و دیتا مثل روال معمول فرستاده می‌شه. ولی توجه کن که Advanced Consent mode وقتی بهتر  عمل می‌کنه که رضایت کاربر توی صفحه فرود (نه صفحه دوم یا سوم) داده بشه.

دلیل #۸: Google Analytics 4 داخل آیفریم هست  
احتمال داره یه آیفریم توی صفحه پیاده‌سازی کرده باشی و Google Analytics 4 هم داخلش باشه. این زمانی رایجه که از ابزارهای شخص ثالث (مثل فرم رزرو) استفاده کنی که خود اون فرم یا ابزار افزونه ی GA4 داخلی داره.
وقتی GA4 توی آیفریم لود می‌شه (و اون آیفریم از دامنه شخص ثالث لود بشه)، اون GA4 نمی‌تونه به اتفاقات توی صفحه والد دسترسی پیدا کنه. نمی‌تونه کلاینت آیدی صفحه والد رو ببینه و به پارامترهای UTM صفحه والد هم دسترسی نداره.
بنابراین، ایونت‌هایی که از آیفریم میاد، دیتای سورس ترافیک رو درست نمی‌گیرن. راه‌حل چیه؟ اگه ممکنه، ترکینگ رو از آیفریم به صفحه والد منتقل کن. یه فرم رزرو رایج تو این زمینه Calendly هست.
دلیل #۹: تأخیر در پردازش دیتا  
وقتی می‌خوای چک کنی پارامترهای UTMت کار می‌کنن یا ترکینگ ایونت درست پیاده‌سازی شده، ممکنه اغوا بشی که فوراً به گزارش‌های GA4 نگاه کنی. ولی یه دلیل رایج برای ندیدن داده ها وجود تأخیر در پردازشه.
گوگل آنالیتیکس ۴ به زمان نیاز داره تا دیتای ورودی رو کامل پردازش و اتریبیوت کنه. معمولاً باید   ۲۴ تا ۴۸ ساعت صبر کنی تا دیتا توی گزارش‌های استاندارد و اکسپلوریشن‌ها نمایش داده بشه.
اگه زودتر نگاه کنی، احتمالاً بیشتر ترافیک Unassigned رو می‌بینی.
 دلیل #۱۰: پارامترهای UTM پشتیبانی‌نشده  
این یکی از نقاط پر ابهام ولی رایجه، مخصوصاً برای تیم‌هایی که از ابزارهای آنالیتیکس دیگه یا پارامترهای ترکینگ سفارشی خودشون استفاده کردن. شما ممکنه از پارامترهایی که شبیه UTM هستن استفاده کنی، ولی گوگل آنالیتیکس ۴ اونا رو نمی‌شناسه.
GA لیست ثابتی از پارامترهای UTM رو پشتیبانی می‌کنه (شاید توی آینده این لیست بزرگتر بشه):
- utm_source  
- utm_medium  
- utm_campaign  
- utm_term  
- utm_content  
- utm_source_platform  
- utm_creative_format  
- utm_marketing_tactic  
 لیست به‌روز این پارامترها رو اینجا ببین:
اگه از پارامترهای دیگه (حتی اگه با utm_ شروع بشن) استفاده کنی، کار نمی‌کنن. مثلاً utm_agroup و utm_ad_placement کار نمی‌کنن.

دلیل #۱۱: سایتت پارامترهای UTM رو از URL حذف می‌کنه  
این سناریو تا حدی به دلایل #۱ و #۲ این مقاله ربط داره. ولی خواستم تأکید کنم که کاملاً محتمله.
سناریو اینه: کاربری روی لینک کمپینت (که همه پارامترهای UTM درست رو داره) کلیک می‌کنه، ولی وقتی صفحه لود می‌شه، پارامترها از نوار آدرس مرورگر غیبشون زده.
وقتی تگ Google Analytics 4 فایر می‌شه، یه URL "تمیز" و بدون UTM پارامتر رو می‌خونه. نتیجه‌ش اینه که GA4 اطلاعات کمپین رو نداره و بازدید رو به سورس ترافیک "مستقیم" نسبت می‌ده، این سناریو توی گزارش‌هات یه گپ ایجاد می‌کنه.
این معمولاً به چند دلیل رایج اتفاق می‌افته:
- ریدایرکت‌های  سرور ساید (این موضوع رو با server-side tagging اشتباه نگیر): سایتت ممکنه ریدایرکت‌هایی داشته باشه (مثل ریدایرکت از http به https یا از non-www به www). اگه این ریدایرکت‌ها طوری تنظیم نشن که پارامترهای کوئری URL اصلی رو منتقل کنن، موقع ریدایرکت گم می‌شن.  
- فریم‌ورک‌های جاوااسکریپت: سایت‌های مدرن، مخصوصاً اپلیکیشن‌های SPA که با فریم‌ورک‌هایی مثل React یا Vue ساخته شدن، اغلب URL روتینگ رو با جاوااسکریپت مدیریت می‌کنن. این روتینگ سمت کلاینت گاهی URL رو "تمیز" می‌کنه و پارامترهای UTM رو بعد از لود صفحه به‌صورت تصادفی حذف می‌کنه.  
- سایت‌های قدیمی با قابلیت های محدود: من خیلی سایت‌ قدیمی (که انعطاف‌پذیری کمی دارن) رو دیدم که اگه URL کمپین شما پارامترهای پشتیبانی‌نشده داشته باشه، خطای 404 (صفحه پیدا نشد) می‌ده. تنها راه‌حلی که جواب میده همکاری با دولوپرها و درخواست "وایت‌لیست" کردن پارامترهای UTM توی پیکربندی/کدهای سایت بود.

حرف آخر:  
هیچ چیز اعصاب‌خردکن‌تر از این نیست که کلی وقت بذاری برای برنامه‌ریزی کمپین‌های بازاریابی جدید، حسابی هیجان‌زده باشی که دیتا رو توی GA4 ببینی، و بعد همه‌چیز خراب بشه چون پارامترهای UTM کار نمی‌کنن.
هرچند هیچ راه‌حلی همه مشکلاتت رو حل نمی‌کنه، توی این مقاله سناریو و راه‌حل های مختلفی رو به اشتراک گذاشتم، پس امیدوارم یکی از اینا مشکلت رو برطرف کنه.
اگه دلیل دیگه‌ای وجود داره که به نظرت پارامترهای UTM رو از کار میندازن، توی کامنت‌ها بگو و بهمون بگو چیکار کردی که مشکل رو حل کردی!