Совместное использование идентификатора клиента Google Analytics между клиентом javascript и сервером java

Я использую Google Analytics для базовой аналитики своего веб-приложения — просто отслеживаю показы страниц с помощью таких вызовов javascript:

ga('create', 'UA-XXXXXXXXX-1', 'mydomain.com');ga('send', 'pageview')

Этот подход всегда расстраивал меня, потому что я не мог надежно зафиксировать некоторые события на стороне сервера. Я только что обнаружил, что могу использовать протокол измерений для записи событий на стороне сервера. Запись событий на моем сервере выглядит просто, за исключением параметра cid (clientid)...

Я понимаю, что в браузере с javascript, который у меня сейчас есть, cid создается случайным образом, а затем сохраняется в файле cookie _ga. Я также понимаю, что я должен разделить это значение clientid/cid между вызовами клиента («просмотр страницы») и сервера (другие события) для одного и того же клиента, чтобы они были связаны друг с другом.

Этот StackOverflow ссылка была для меня полезной ссылкой.

Вопрос: должен ли я

  1. Создайте clientid на сервере, а затем поделитесь им с клиентом; или
  2. Должен ли я позволить javascript на клиенте создать clientid, а затем попытаться поделиться им с моим сервером? (подозреваю, что это лучший ответ)

Для (1) я думал, что могу сделать следующее:

  • Сохраните UUID в сеансе на сервере (который является движком приложения Google)
  • Непосредственно используйте этот UUID, когда я использую протокол измерений для создания событий непосредственно на стороне сервера.
  • Используйте тот же UUID, когда я создаю объект ga на странице с помощью jsp:

    ga('create', 'UA-XXXXXXXXX-1', 'mydomain.com', 
    {'clientId': '<%=[value from the session]%>'});
    

Что меня беспокоит в этом подходе, так это то, что идентификатор будет сохраняться только во время сеанса на сервере. Я думаю, что цель clientId (cid) заключается в том, чтобы он сохранялся для клиента в течение длительного периода... Поэтому я думаю, что потеряю представление о том, кто является новым, а кто вернувшимся пользователем?

Для (2), честно говоря, я не знаю, как это сделать... Из приведенной выше ссылки StackOverflow я знаю, что могу получить cid из параметров clientId в объекте ga. Я не знаю, как я отправлю его обратно на свой сервер (вероятно, это простой вопрос javascript).

Определенно был бы признателен за совет о том, какой подход использовать .... спасибо!


person nickpharris    schedule 23.03.2015    source источник


Ответы (1)


Я бы также порекомендовал вам выбрать вариант 2: разрешить Google обрабатывать настройку параметра cid.

Поскольку параметр уже установлен в файле cookie _ga вашего домена, он передается на ваш сервер приложений с каждым HTTP-запросом.

Все, что вам нужно сделать, это на стороне сервера:

  1. Извлеките CID из файла cookie _ga
  2. Свяжите его с текущим пользователем (возможно, ваше приложение использует собственные файлы cookie сеанса для идентификации пользователя).

Например, этот ответ содержит код Rails:

def save_google_analytics_client_id
    if current_user && cookies["_ga"]
      client_id = cookies["_ga"].split(".").last(2).join(".")
      if current_user.google_analytics_client_id != client_id
        current_user.google_analytics_client_id = client_id
        current_user.save
      end
    end
  end
person Andy H.    schedule 05.11.2015