React + Router + Диспетчер тегов Google

Я потратил немного времени на разработку MVP на сайте quickcypher.com. Я хотел начать использовать некоторые аналитики, и он отлично подойдет для отслеживания общих посещений, но все пошло на юг, когда я пытался отслеживать разные URL-адреса на моем сайте, использующем React Router.

Мой подход: это установить тег GA, который запускается на некоторых страницах, с помощью триггера для пользовательского события "Просмотр страницы". Когда что-то срабатывало, я бы, например, поставил полевую страницу на "/rap". Я запускаю событие в методе "componentDidMount" компонента верхнего уровня для каждого из моих просмотров. Используя отладчик, я видел событие, как ожидалось, но для жизни я не могу заставить GA признать это событие. GA работает так, как ожидалось, когда я упрощаю тег для запуска на "всех страницах", поэтому я предполагаю, что это имеет какое-то отношение к React.

Кто-нибудь успешно реализовал это или столкнулся с подобными проблемами? Не подходит ли мой подход? Надеюсь на какое-то руководство... ура!

Ответ 1

Немного поздно для вечеринки здесь, но для реагирования маршрутизатору не нужен специальный код для интеграции с GTM. Просто опустите GTM script на свою страницу (сразу после открытия тега <body>, как рекомендовано) и пусть ваше приложение работает как обычно.

В GTM создайте настраиваемый триггер для изменения истории.

Пример триггера GTM

Вы можете запустить его при всех изменениях истории.

все изменения истории

Или только на некоторых из них. Например, только на вашем рабочем имени хоста.

только для производства

Затем добавьте тег для своей аналитики google (или что-то еще) и настройте его для запуска события изменения истории, нажав "Дополнительно" в разделе "Пожар" и выбрав триггер, созданный выше.

Пример GA

Также важно изменить Дополнительные настройки нашего тега, чтобы запускать один раз за одно событие, а не один раз на страницу. Без этого тег будет запускаться только при загрузке начальной страницы.

один раз за событие

Ответ 2

Это может быть связано с неправильной настройкой вашей учетной записи Google Analytics, но при условии, что вы можете запустить исходное событие просмотра страницы в GA, вот рецепт, который вступает в реакцию-маршрутизатор willTransitionTo. Он также использует react-google-analytics. Сначала npm install react-google-analytics.

Затем настройте свое приложение так:

var React = require('react');
var Router = require('react-router');
var Route = Router.Route;
var DefaultRoute = Router.DefaultRoute;
var RouteHandler = Router.RouteHandler;
var ga = require('react-google-analytics');
var GAInitiailizer = ga.Initializer;

// some components mapped to routes
var Home = require('./Home');
var Cypher = require('./Cypher');

var App = React.createClass({
  mixins: [Router.State],
  statics: {
    willTransitionTo: function(transition, params, query, props) {
      // log the route transition to google analytics
      ga('send', 'pageview', {'page': transition.path});
    }
  },
  componentDidMount: function() {
    var GA_TRACKING_CODE = 'UA-xxxxx';
    ga('create', GA_TRACKING_CODE);
    ga('send', 'pageview');
  },
  render: function() {
    return (
      <div>
        <RouteHandler />
        <GAInitiailizer />
      </div>
    );
  }
});

var routes = (
  <Route path="/" handler={App} >
    <DefaultRoute handler={Home} />
    <Route name="cypher" path="/cypher" handler={Cypher} />
  </Route>
);

Router.run(routes, function (Handler) {
  React.render(<Handler />, document.body);
});

module.exports = App;

Ответ 3

В принятом ответе говорится, что мы должны удалить скрипт GTM после тега body. Но у GTM также есть скрипт, который нужно добавить в заголовок тега. Требуются ли оба для этого решения для работы?