پریویو مود GTM کار نمیکنه؟ این کارا رو انجام بده!

پریویو مود"Preview Mode" گوگل تگ منیجر (GTM) کار نمی‌کنه؟ فکر کنم همه‌مون حداقل یه بار تو این موقعیت بوده‌ایم! اگه درست یادم باشه، وقتی تازه شروع به کار کردن با GTM کردم، این مشکل حسابی اعصابمو خورد کرد. این موقعیت برات آشناست؟ عصبانی نشو و ولش نکن! بذار این چند تا ترفند رو بخون که مشکل رو حل کنی. مطمئنم حداقل یکیش به کارت می‌خوره!


#۱. اسکریپت (Snippet) GTM به سایت اضافه نشده  
مثلاً فرض کن از یه دولوپر خواستی طبق خواسته خودت اسکریپت کانتینر GTM رو به سایت اضافه کنه. بعد از یه مدت کارشو تموم می‌کنه، ولی یه چیزی اینجا درست نیس - کنسول "Preview and Debug" هنوز بعد از فعال کردنش ظاهر نمی‌شه. معلوم می‌شه اسکریپت روی نسخه لایو سایت پابلیش نشده - توسعه‌دهنده یه اشتباه لوس کرده !

چند راه برای چک کردن پیاده‌سازی تکه‌کد GTM هست:  
- از افزونه Tag Assistant کروم استفاده کن که  وجود محصولات گوگل (مثل Google Analytics، Google Ads، Google Tag Manager) رو چک می‌کنه و بازخورد لحظه‌ای می‌ده.  
- سورس کد سایت رو چک کن. توی مرورگرت Ctrl + U رو بزن (فکر کنم برا مک CMD + Option + U باشه؟) و دنبال اسکریپت کانتینر GTM بگرد.

#۲. اسکریپت اشتباه یا ناقص به سایت اضافه شده  
این ترفند شاید مسخره به نظر بیاد، ولی نادیدش نگیر. برای چک کردن این مورد، اکانت GTM مدنظرت رو باز کن و گوشه بالا سمت راست رو نگاه کن - ببین "GTM container ID" چیه.  

با اون چیزی که توی سورس کد سایتت اضافه شده مقایسه‌ش کن. Tag Assistant بهت کمک می‌کنه این کارو بکنی.
یادتو باشه که تو یا دولوپرها نباید تغییری توی اسکریپت کانتینر GTM بدین. باید دقیقاً همون‌طور که از محیط GTM کپی کردی، به سایت اضافه بشه.

#۳. "Preview Mode" رو توی کانتینر اشتباه فعال کردی  
هر چی تعداد اکانت ها و کانتینرهای GTM بیشتر باشه، احتمال بروز این اشتباه هم بیشتر می‌شه. من خودم چند بار تو این دام افتادم و هر بار عصبانیم بیشتر شده! پس یادت باشه دوبار چک کن کانتینر درسته یا نه. می‌تونی روشی که توی ترفند #۲ گفتم رو دنبال کنی.

#۴. باید از یه مرورگر خاص استفاده کنی  
وقتی "Preview Mode" رو فعال می‌کنی، یه تب/پنجره جدید برای لود کردن سایتی که می‌خوای دیباگش کنی باز می‌شه. اگه بعدش بری سراغ حالت  (incognito) کروم یا حالت خصوصی مرورگر دیگه، پریویو مود کار نمی‌کنه.

#۵. کش (cache) و کوکی‌های مرورگرتو پاک کن  
می‌تونی کش و کوکی‌های مرورگرتو پاک کنی و دوباره دیباگ رو تست کنی. روش پاک کردن کش و کوکی توی هر مرورگر فرق داره؛ پس باید خودت سرچ کنی. مثلاً سرچ کن "چطور کش و کوکی مرورگر [اسم مرورگرت] رو پاک کنم".

#۶. پارامتر کوئری مربوط به "Preview Mode" رو غیرفعال کن  
وقتی می‌خوای "Preview Mode" رو فعال کنی، یه پارامتر به اسم "gtm_debug=x" به URL اضافه می‌شه. این حالت پیش‌فرضه. ولی بعضی سایت‌ها از پارامترهای کاستوم URL پشتیبانی نمی‌کنن و ممکنه کار نکنن (یا خطاهایی مثل "404 Page Not Found" بدن).
اگه این حالت پیش اومده، این چک‌باکس رو غیرفعال کن (عکس زیر رو ببین):

---

#۷. Cloudflare داره حالت لود شدن "gtm.js" رو تغییر می‌ده  
یه شبکه تحویل محتوا (CDN) مثل کلاودفلیر جوری طراحی شده که محتوای استاتیک سایت رو از طریق یه شبکه جغرافیایی بزرگ کش (cache) کنه. نتیجه اینه که محتوای استاتیک سریع‌تر به بازدیدکننده‌ها از نزدیک‌ترین نود شبکه می‌رسه و زمان لود صفحه برا بازدیدکننده‌ها کم می‌شه.


CDN روی نحوه لود شدن جاوااسکریپت هم تأثیر می‌ذاره و "gtm.js" (کتابخونه جاوااسکریپت Google Tag Manager) هم از این قاعده مستثنا نیست. اگه از کلاودفلیر استفاده می‌کنی، مطمئن شو یه فیچری به اسم Rocket Loader رو غیرفعال کردی. پیشنهاد می‌کنم با دولوپر درباره این موضوع حرف بزنی.

#۸. اسکریپت GTM موقع کپی/پیست تصادفاً تغییر داده شده  
این موقعیت وقتی پیش میاد که می‌خوای اسکریپت کانتینر GTM رو واسه دولوپر بفرستی، شما از رابط Tag Manager اسکریپت رو کپی می‌کنی و توی یه فایل ورد (مثل Google Docs یا ابزار ویرایش متن دیگه) میریزیش و بعد به دولوپر میدیش.
نمی‌دونستی که ابزار ویرایش متن کد کانتینر رو طبق بعضی قواعد گرامری "اصلاح" کرده، شاید فاصله‌ها رو کم یا زیاد کرده، علامت نقل‌قول‌ها رو عوض کرده و...
هرچند اسکریپت به نظر همون میاد (توی نگاه اول)، ولی کار نمی‌کنه.
مثال: توی یه سایت، توسعه‌دهنده اسکریپت کانتینر GTM رو اضافه کرده. ولی اگه به علامت نقل‌قول‌ها (توی عکس زیر) دقت کنی، می‌بینی اشتباهن.
توی جاوااسکریپت، نقل‌قول‌ها باید ' ' باشن، ولی توی عکس زیر ' ' هستن. شبیهن، ولی فرق دارن!

راه‌حل چیه؟ اسکریپت کانتینر GTM رو کپی کن و مستقیم توی یه فایل .txt (مثل Notepad) پیست کن، ذخیره‌ش کن و برای دولوپر بفرست. راه دیگه اینه که اسکریپت رو کپی کنی و توی pastebin.com قرارش بدی. حالا اون رو ذخیره کن و لینک رو به دولوپر بده. وقتی لینکو باز کنه، کد خام/تغییرنکرده رو می‌بینه.

#۹. ببین مرورگرت پاپ‌آپ و ریدایرکت رو بلاک نکرده باشه  
وقتی دکمه پریویو رو توی رابط GTM می‌زنی، یه تب یا پنجره جدید که متعلق به tagassistant.google.com هست باز می‌شه. گاهی مرورگر اینو نمی‌پسنده و بلاکش می‌کنه.
اگه از کروم استفاده می‌کنی، ممکنه توی رابط GTM اینو ببینی:

برای من این مشکل گهگاه پیش میاد. گاهی کروم ویندوی جدید رو بلاک می‌کنه و گاهی نه.
خلاصه، اگه دیدی مرورگر تب/پنجره tagassistant.google.com رو بلاک کرده، روی اون آیکون کلیک کن و "Always allow popups and redirects…" رو انتخاب کن و Done رو بزن.

این ستاپ فقط برای Google Tag Manager اعمال می‌شه، پس نگران حالت های غیرمنتظره نباش!
اگه از مرورگر دیگه‌ای استفاده می‌کنی، هشدار "blocked" ممکنه فرق داشته باشه. باید خودت یه کم بیشتر تحقیق کنی و رفعش کنی.

#۱۰. کانتینر رو پابلیش کن (حتی اگه جدید نباشه)  
بعضی‌ها گفتن که قبل از فعال کردن حالت پریویو, کانتینر رو پابلیش کردن و این بهشون کمک کرده مشکل رو حل کنن. از اون موقع، تجربه دیباگشون هم روانتر شده. ابن رو خودم نتونستم  بررسی کنم، ولی امتحانش ضرر نداره.

#۱۱. از حالت پریویو خارج شو و دوباره فعالش کن  
توی مرورگر کروم تب حالت پریویو و تب سایتو ببند. بعد دوباره توی رابط GTM دکمه Preview رو بزن و همه مراحل رو برای فعال کردنش تکرار کن. این چند بار برام جواب داده.

#۱۲. AdBlocker، Ghostery یا افزونه‌های مشابه کروم تونستن GTM رو بلاک کنن  
بلاکرهای تبلیغات و محتوا زندگی تحلیل‌گرهای داده رو سخت کردن.
افزونه‌های معروف مرورگرها مثل Ghostery، AdGuard AdBlocker و AdBlock Plus می‌تونن Google Tag Manager رو هم بلاک کنن. پس اگه از یکی از این بلاکرها استفاده می‌کنی،  غیرفعالشون کن و ببین کمکی کرد یا نه. اگه می‌خوای "پریویو مود" درست کار کنه، باید افزونه رو خاموش کنی.

افزونه‌های دیگه (که توی حالت پریویوی GTM اختلال ایجاد می‌کنن) ایناس:
- Avira Save Shopping  
- DuckDuckGo privacy  
- Windscribe VPN  
- uBlock Origin  

#۱۳. سایتت از یه سولوشن خودکار بلاک کردن کوکی‌ها استفاده می‌کنه  
با ظهور GDPR و قوانین حریم خصوصی دیگه، بعضی صاحبان سایت تصمیم گرفتن از راه‌حل‌های خودکار بلاک کردن کوکی متصل به پاپ‌آپ‌های cookie consent استفاده کنن. چند مثال:
- OneTrust Cookie Auto-blocking  
- Automatic Cookie Blocking in CookieBot  
متأسفانه راه‌حل مشخص برای این موضوع ندارم ولی به‌طور کلی، باید مطمئن شی کوکی به اسم "_TAG_ASSISTANT" (همه حروف بزرگ) اجازه تنظیم شدن داشته باشه.
حالت پریویو باید کار کنه. اگه مطمئن نیستی سایتت از بلاک خودکار استفاده می‌کنه یا نه، با کسی که بیشتر با ابزار مدیریت cookie consent و سایتی که روش کار می‌کنی آشنا باشه مشورت کن.
این نیاز به یه کم تحقیق بیشتر از طرف خودت داره.

#۱۴. مطمئن شو کانتینر GTM درست رو از گوشه بالا سمت چپ انتخاب کردی  
اگه چند تا کانتینر توی سایتت داشته باشه (ولی حالت پریویو رو توی یکی از اونا فعال کرده باشی)، ممکنه الان کانتینر اشتباه رو پریویو گرفته باشی.
از تب افقی پیج Preview تو میتونی "container ID"ها رو مشخصا ببینی.

#۱۵. ممکنه داری یه "workspace" خاص رو پریویو میگیری، نه "environment"  
فرض کن این موقعیت پیش اومده: حالت پریویو رو فعال می‌کنی و پیغام "No tags were evaluated in this container" رو می‌بینی. هیچ ایونتی (مثل Container Loaded) رو توی سمت چپ تب پریویو نمی‌بینی (فقط عنوان صفحه رو می‌بینی).

علاوه بر این، شما تب آیدی های GA4 و GTM رو توی پیج پریویو نمیتونی ببینی. توی این حالت، احتمالاً داری یه "workspace" رو پریویو میگیری نه "environment". یه کم گیج‌کننده‌ست، ولی بذار توضیح بدم. توضیحش وقت می‌بره، ولی مهمه. وگرنه ممکنه بیشتر گیج شی.
وقتی GTM نصب می‌شه، ئولوپر معمولاً اسکریپت کانتینر GTM رو اضافه میکنه و شما با کلیک روی "container ID" توی رابط GTM میتونین اون رو ببینین.


این یه اسکریپت کانتینر عادی GTM هست (بدون پارامترهای مربوط به Environment). وقتی حالت پریویو رو با زدن دکمه PREVIEW از گوشه بالا سمت راست رابط GTM فعال می‌کنی، حالت پریویو برای همون اسکریپت خاص فعال می‌شه.
ولی GTM قابلیت استفاده از محیط‌ها (environments) رو هم داره. می‌تونی محیط‌های مختلف مثل development، staging یا چیز دیگه بسازی. برای ستاپش هم، دولوپر باید اسکریپت های مختص هر محیط رو بگیره و توی نسخه‌های مربوطه سایتت قرار بده. مثلاً اسکریپت کانتینر staging رو توی staging.yourwebsite.com بذاره.
برای دسترسی به اسکریپت محیط‌ها، برو به Admin > Environments  روی گزینه Actions کنار یه محیط کلیک کن و Get snippet رو انتخاب کن. بعد دولوپر باید اونو توی سایت بذاره. به‌طور پیش‌فرض دو تا محیط هست، ولی اگه نیاز داشته باشی می‌تونی محیط های بیشتری بسازی.

اینجا یه نکته مهم هست: اگه بخوای محیط کاستومی مثل development یا staging بسازی، یه محیط جدید بساز و اسکریپت مربوط بهش رو برای اون ورژن مربوط به سایتت اضافه کن. ولی برای ورژن لایو سایت، نباید از اسکریپت محیط LIVE استفاده کنی. به‌جای اون، روی ID رابط GTM کلیک کن و از دولوپر بخواه همونو نصب کنه.

خب، مشکل کجاس؟
گاهی دولوپرها اسکریپت محیط Live رو به سایت زنده اضافه می‌کنن. اون اسکریپت هم یه کم با تکه‌کد عادی GTM فرق داره.

اگه اسکریپت محیط (با پارامترهای اضافیش) توی نسخه لایو سایت پیاده‌سازی شده باشه و تو سعی کنی با زدن دکمه PREVIEW حالت پریو رو فعال کنی، کار نمی‌کنه. و پیغام "No tags were evaluated in this container" رو می‌گیری. این اتفاق می‌افته چون دکمه پریویو رو برای "workspace" فعلیت فعال کردی (نه یه محیط خاص).
اگه بخوای حالت پریویو رو توی اسکریپت محیط مدنظرت فعال کنی، باید بری به Admin > Environments  محیطی که می‌خوای پریویو بگیری رو انتخاب کن (مثلاً محیط Live سایت زنده‌ت) روی share link بزن و از اون برای دسترسی به محیط مدنظرت باید استفاده کنی.

**مهم:** کانتینرت باید حداقل یه ورژن پابلیش شده داشته باشه تا گزینه Share Link رو ببینی.

و برای نسخه لایو سایتت  از دولوپر بخواه اسکریپت محیط Live رو با اسکریپت عادی کانتینر GTM جایگزین کنی که با کلیک روی "container ID" توی رابط پیدا می‌شه.


چطور باید بفهمی کانتینرت (که روی ورژن لایو سایت نصب شده) از اسکریپت محیط استفاده نمی‌کنه؟ باید سورس کد سایت رو چک کنی (با استفاده از راست کلیک و انتخاب View page source از توی مرورگر) و اونو با اسکریپت عادی GTM مقایسه کنی.

#۱۶. از مرورگر Brave موقع کار با GTM استفاده نکن  
مرورگر Brave به خاطر بلاک کردن endpointهای مرتبط با گوگل معروفه. این شامل Google Analytics، Google Ads و حتی Google Tag Manager می‌شه. اگه Brave مرورگر اصلیته، موقع کار با GTM دو تا گزینه داری:
- از یه مرورگر دیگه فقط برای کار با GTM استفاده کن (مثل کروم یا Edge که افزونه‌های مفیدی برای GTM دارن)  
- یا ویژگی امنیتی اصلی Brave به اسم Shields رو غیرفعال کن  
من  ترجیح می‌دم از مرورگر دیگه ای استفاده کنم، چون Brave با Shields خاموش عملاً بی‌فایده می‌شه.

#۱۷. دامنه سایتت روی "http" هست (نه "https")  
هنوز نمی‌دونم اگه راه‌حل دیگه‌ای هست یا نه، ولی به نظر می‌رسه حالت پریویوی GTM اگه سایتت SSL certificate نداشته باشه کار نمی‌کنه. به عبارت دیگه، URL باید "https" داشته باشه، نه "http".
اگه سایت شما این ویژگی رو نداره، وقتشه سایتتو به‌روز کنی و امن‌ترش کنی. با دولوپر/وب‌مسترت تماس بگیر و ازش بخواه SSL certificate اضافه کنه و مطمئن شه سایت از "https" لود می‌شه.

#۱۸. CSP مانع لود شدن GTM شده  
اگه سایتی که روش کار می‌کنی CSP داشته باشه، ممکنه حالت پریویوی GTM رو بلاک کنه. می‌تونی اینو با رفتن به Developer Console مرورگرت بررسی کنی (توی ویندوز و کروم، برو به منوی مرورگر More Tools > Developer Tools > Console).
بعد صفحه رو رفرش کن. اگه خطایی مثل این (یا چیزی شبیهش) پیدا کردی، یعنی با CSP سروکار داری.


برای رفع این مشکل دولوپرها باید CSP سایت رو به‌روز کنن. راه دور زدن نداره، اینجا نمی‌تونی از دست دولوپرها فرار کنی.

#۱۹. افزونه GA Debugger روی دیباگ GA4 در حالت پریویو تأثیر داره  
احتمالاً متوجه شدی که اگه GA4 توی سایت لود شده باشه، ID‌ش رو توی بالای حالت پریویو می‌بینی. اگه روش کلیک کنی، همه درخواست‌هایی که از سایتت به Google Analytics 4  فرستاده شده (صفحه به صفحه) رو می‌بینی. این چیز باحالیه.

ولی گاهی ممکنه لیستی مثل این ببینی (بدون هرنوع اطلاعات دقیقی). اگه این اتفاق افتاده، به این دلیله که افزونه کروم به اسم GA Debugger فعاله. اگه این افزونه روشن باشه، حالت پریویوی GTM گزارش کردن دیباگ GA4 رو متوقف می‌کنه. ولی روی دیباگ عادی GTM تأثیری نداره و تگ‌هات همچنان درست فایر می‌شن. تنها چیزی که تحت تأثیر قرار می‌گیره، دیباگ اختصاصی GA4 هست.

هیت‌هات (hits) هنوز به GA4 فرستاده می‌شن. و صرفا توی حالت پریویو نمایش داده نمی‌شن. برای رفع این، باید افزونه GA Debugger رو غیرفعال کنی.

#۲۰. مرورگرتو ببند و دوباره باز کن  
این یعنی باید مرورگرت رو کامل ببندی و مطمئن شی پروسه های مربوط به مرورگرت توی پس‌زمینه اجرا نمی‌شه. مثلاً توی کروم، روی سه نقطه گوشه بالا سمت راست کلیک کن و Exit رو بزن. صرف زدن آیکون X برای بستن پنجره های کروم کمک نمی‌کنه.

بعد مرورگر رو دوباره باز کن و ببین مشکل حل شده یا نه.

#۲۱. سولوشن cookie consent باعث بلاک شدن GTM شده  
بعضی سایت‌ها سولوشن های cookie consent خاصی (مثل OneTrust) رو پیاده می‌کنن و تنظیماتشون رو طوری انجام میدن که GTM رو کامل بلاک کنه تا موقتی که بازدیدکننده رضایت به ترکینگ بده. توی این موقعیت، حالت پریویو فقط بعد از کلیک روی "I agree" (یا هر چیزی شبیه به اون) کار می‌کنه.
پس وقتی می‌خوای حالت پریویو رو فعال کنی، به سایتت ریدایرکت می‌شی. روی "Agree" توی پاپ آپ کلیک کن و ببین مشکل حل میشه یا نه.

#۲۲. یه array که به دیتالیر پوش شده کار رو خرابش کرده  
بعضی وقتا یه تیکه کوچیک اسکریپت توی سایتت می‌تونه دیتالیر (Data Layer) رو خراب کنه.  اگه چیزی مثل این توی کد باشه:

...دیتالیر رو می‌شکنه و توی حالت پریویو چیز مفیدی نمی‌بینی. راه‌حل چیه؟ با دولوپرها همکاری کن و ازشون بخواه اون تیکه از اسکریپت رو حذف کنن. یا پلاگینی که این کد رو اضافه می‌کنه غیرفعال کن.
کدوم پلاگین این مشکلو درست می‌کنه؟ سخت می‌شه گفت (چون سایت‌های مختلف ممکنه پلاگین‌های متفاوتی داشته باشن). باید با دولوپرهات این مورد رو بررسی  کنی.

#۲۳. VPN ممکنه Google Tag Manager رو بلاک کرده باشه  
بعضی ارائه‌دهنده‌های VPN یه لایه حفاظت اضافی دارن که می‌تونن Google Tag Manager رو بلاک کنن. پس اگه الان از VPN استفاده می‌کنی، امتحان کن غیرفعالش کنی و ببین کمکی کرد یا نه.

#۲۴. TikTok Pixel Helper  
 الان به نظر می‌رسه TikTok Pixel Helper مانع کار درست حالت پریویوی GTM شده. اون افزونه رو غیرفعال کن و ببین مشکل حل شده یا نه.

#۲۵. افزونه "Tag Assistant" رو از کروم حذف کن  
هرچند افزونه Tag Assistant کروم برای بهتر کردن حالت پریویوی GTM طراحی شده، بعضی کاربرا موقع فعال بودنش با مشکل روبه‌رو شدن. مثلاً گزارش دادن که حالت پریویوی GTM فقط توی اولین بازدید صفحه کار می‌کنه. اگه به صفحه بعدی بری، حالت پریویو قطع می‌شه.
اگه این موقعیت برات پیش اومده، امتحان کن افزونه Tag Assistant رو حذف کنی و ببین کمکی کرد یا نه.

#۲۶. از وردپرس استفاده می‌کنی و توی پنل ادمین لاگین کردی؟  
بعضیا گزارش دادن که حالت پریویوی GTM وقتی توی پنل ادمین وردپرس لاگین باشن کار نمی‌کنه. بعد از لاگ‌اوت، همه‌چیز به حالت عادی برمی‌گرده.

هیچ‌کدوم از ترفندها جواب نداد؟  
اول کامنت‌های زیر این پست رو بخون. آدما ترفندهای مفیدی به اشتراک گذاشتن که شاید به کارت بخوره.

اگه هیچ‌کدوم از این راه‌حل‌ها بهت کمک نکرد، لطفاً یه کامنت با این اطلاعات بذار:

- توضیح کامل که چی کار نمی‌کنه. بعضی‌ها می‌گن تایم‌اوت می‌گیرن، بعضی‌ها می‌گن بعضی ایونت‌ها توی حالت Pریویو نمی‌بینن و... باید موقعیتتو با جزئیات برام بگی  
- لینکی به سایتی که این مشکل توی اون پیش اومده  
- لینک حالت Pریویو. بعد از روشن کردن حالت Pریویو، به tagassistant.google.com ریدایرکت می‌شی. وقتی URL سایتت رو وارد می‌کنی و Pریویو رو شروع می‌کنی، URL اون حالت Pریویو رو کپی کن و توی کامنت‌ها بذار. نگران نباش، اگه بعداً کانتینرو منتشر کنی، اون لینک Pریویو دیگه کار نمی‌کنه.