Google Analytics: отслеживание ссылок с электронной почты на внешнюю страницу - PullRequest
1 голос
/ 02 сентября 2011

Google Analytics сводит меня с ума.

У меня есть приложение в магазине приложений.Я хотел бы отправить электронное письмо со ссылкой прямо на страницу моего приложения в магазине приложений, НО я хотел бы отслеживать клики.

Пока у меня есть ссылка типа

www.mypage.com/promoletter/

В этом местоположении содержится файл index.php, который выполняет перенаправление 302 на мой собственный сайт следующим образом:

header("Location: http://www.mypage.com/index.php?page=App_Store
&utm_source=promoletter&utm_medium=email&utm_campaign=v1-promoletter");

Я делаю это таким образом с перенаправлением 2, потому что

  1. URL выглядит лучше, и
  2. Я все еще могу редактировать переменные utm после отправки информационного бюллетеня

Теперь, через мою страницу index.php, создается HTML-страница, которая выполняет другую302 перенаправьте на

http://itunes.apple.com/ie/app/MY-APP/id-SO-AND-SO?ls=1&mt=8

, также используя функцию заголовка php, как указано выше.

Теперь все отлично работает, но, конечно, это не записывается в Analytics (отсюда и вопрос :)).При написании этого я понимаю, что это потому, что файл ga.js никогда не загружается, потому что у вас не может быть никакого вывода до функции заголовка php.

Как решить?

Ответы [ 3 ]

2 голосов
/ 21 июня 2012

Простой код без тайм-аута:

<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = false;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

  _gaq.push(function(){
    window.location.replace("http://itunes.apple.com/ie/app/MY-APP/id-SO-AND-SO?ls=1&mt=8");
  });
</script>

Нет необходимости ждать, просто установите ga.async = false; и перенаправьте работу быстрее, с небольшой задержкой.

1 голос
/ 08 сентября 2011

Спасибо, Рагнар,

Вы указали мне правильное направление, и я многому научился с момента размещения моего вопроса. Может быть, кто-то еще заинтересован в моем настоящем решении, или у кого-то есть лучший способ.

Я решил свою проблему, используя 3 перенаправления (к сожалению, я не вижу другого пути). Во-первых, у меня есть ссылка как:

www.mypage.com/promoletter/

Это перенаправляет на (функция заголовка php):

header("Location:
http://www.mypage.com/index.php?page=processGAVars&nextPage=App_Store
&utm_source=promoletter&utm_medium=email&utm_campaign=v1-promoletter");

Созданная страница обрабатывает переменные Google Analytics и снова перенаправляет на другую страницу (nextPage = App_Store) на этот раз, используя javascript или мета-обновление, когда javascript отключен. Вы можете перенаправить прямо в App Store, но затем в адресной строке пользователя останется URL-адрес, содержащий ваши переменные GA (очевидно, только на iPhone / iPad, см. Ниже).

Перед перенаправлением существует небольшая задержка, поэтому GA получает возможность выполнить свою работу (состояние гонки).

$url = "http://www.mypage.com/index.php?page=".$_GET['nextPage'];

<noscript>
    <meta http-equiv="refresh" content="1; url=<?php echo $url;?>" />
</noscript>

<script type="text/javascript">
  function redirect() {
    window.location.replace("<?php echo $url;?>");
  }
</script>

<body onload="setTimeout('redirect()', 500)">

Последняя страница снова выполняет фактическое перенаправление в App Store, используя javascript или мета-обновление, как и выше, только на этот раз без каких-либо задержек.

Пока что в протестированных мною браузерах (firefox с javascript и без него, chrome, safari и на iPhone / iPad safari и terra) существует небольшая задержка, и пользователь может видеть перенаправление. Тем не менее, эти перенаправления не отображаются в истории пользователей, и после нажатия кнопки «Назад» открывается предыдущая страница.

На компьютере пользователь получает страницу itunes.apple.com. На устройстве IOS запускается приложение App Store, и браузер отображает страницу, оставленную пользователем.

Я обнаружил, что на iDevice, включая JavaScript-код GA на странице, которая выполняет фактическое перенаправление на страницу iTunes, блокируется процесс возврата на исходную страницу (например, stackoverflow.com). Затем пользователю предоставляется (пустая) страница перенаправления.

Видите это в действии? http://hd -apps.com / ссылки / StackOverflow /

1 голос
/ 02 сентября 2011

Лучший способ решить эту проблему - использовать редирект javascript. Отправьте html-страницу с ga.js и тегом script:

...
<script type="text/javascript" src="ga.js"></script>
<script type="text/javascript">
  window.location.href = "http://itunes.apple.com/ie/app/MY-APP/id-SO-AND-SO?ls=1&mt=8http://itunes.apple.com/ie/app/MY-APP/id-SO-AND-SO?ls=1&mt=8"
</script>
...

Или чтобы убедиться, что ga.js загружен:

...
<script type="text/javascript" src="ga.js"></script>
<script type="text/javascript">
  setTimeout('window.location.href = "http://itunes.apple.com/ie/app/MY-APP/id-SO-AND-SO?ls=1&mt=8http://itunes.apple.com/ie/app/MY-APP/id-SO-AND-SO?ls=1&mt=8"',500)
</script>
...

Я не уверен, возможно ли "подделать" запрос пикселя ga. Вам также могут понадобиться файлы cookie, которые вам недоступны. Но в противном случае вы могли бы подделать пиксель ga со своего бэкэнда, чтобы отслеживать правильные значения.

Перенаправление javascript может быть немного более простым:)

...