GA - gtag& dataLayer - dataLayer中的数据不会发送到GA

时间:2018-03-27 13:25:19

标签: google-analytics google-datalayer gtag.js

我正在使用gtag.js脚本,而我正在使用SPA,所以我在路线更改时手动发送浏览量。

我的问题是初始网页浏览有效,但后续网页浏览没有。我可以在window.dataLayer中看到正确的数据,但由于某些原因,它们不会发送给GA。

我不明白如何将dataLayer中注入的数据发送到GA,它们只是存储在一个数组中,gtag.js中是否有某种监听器监视window.dataLayer?似乎不太可能。 (如果是这样,如何显示此日志?)

这是实施(反应)

layout.js

<script
  async
  src={`https://www.googletagmanager.com/gtag/js?id=${GA_TRACKING_ID}`}
/>
<script
  dangerouslySetInnerHTML={{
    __html: initializeAsHTML()
  }}
/>

utils的/ gtag.js

// https://developers.google.com/analytics/devguides/collection/gtagjs/pages
export const pageview = ({ url = window.location.href, path = window.location.pathname, title = window.document.title }) => {
  console.log('GA - pageview', url, path, title);
  window.gtag('config', `${GA_TRACKING_ID}`, {
    page_location: url,
    page_path: path,
    page_title: title,
  });
};

// https://developers.google.com/analytics/devguides/collection/gtagjs/events
export const event = ({ action, category, label, value }) => {
  console.log('GA - event', action, category, label, value);
  window.gtag('event', action, {
    event_category: category,
    event_label: label,
    value: value,
  });
};

export const initializeAsHTML = () => {
  return `
    window.dataLayer = window.dataLayer || [];

    function gtag() {
      dataLayer.push(arguments);
    }

    gtag('js', new Date());
    gtag('config', '${GA_TRACKING_ID}', {
      page_location: window.location.href,
      page_path: window.location.pathname,
      page_title: window.document.title
    });
  `;
};

路由器

Router.onRouteChangeComplete = () => {
  if (isBrowser() && typeof window.gtag !== undefined) {
    pageview({});
  }
};

当我手动调用gtag时,我也无法在GA实时概述中显示任何内容。

gtag('config', 'UA-xxx, {
  page_location: 'http://xxx',
  page_path: '/fake',
  page_title: 'FAKE'
});

很难弄清楚出了什么问题。我自己的日志告诉我,我正在调用window.gtag函数(并且dataLayer正确填充),但我不知道之后会发生什么。

在Google Analytics实时概述页面上,我只在重新加载页面时看到pageview事件,但在浏览我的应用时却看不到。

我安装了Chrome插件Google Events,但也没有显示任何内容。

我也禁用了我的广告拦截器。

0 个答案:

没有答案