Google Analytics missing __utmz cookie

2019-02-10 01:22发布

问题:

I have universal analytics installed on my website, and want to parse the __utmz cookie to get referral info. However, I never see this cookie set.

Has something changed? Any reason this isn't set?

I do see the _ga cookie when I browse my site, and I see the __utmz cookie in my browser cache if I go to other sites.

I checked out the docs, and don't see any reference to this changing recently, so a bit stumped.

回答1:

Universal Analytics doesn't create any __utm* cookies.

However, you can use Universal Analytics code (analytics.js) AND the traditional code (ga.js) simultaneously on your site. This will allow you to populate your UA profile and scrape the values from __utmz.



回答2:

It seems like with Universal Analytics, this cookie has disappeared, and you only get a single _ga cookie.

Source: https://developers.google.com/analytics/devguides/collection/analyticsjs/cookie-usage

Also mentioned here: How to get the referrer, paid/natural and keywords for the current visitor in PHP with new Google Analytics?

Also given that analytics is primarily a tool to collect aggregated information, I couldn't find (and I doubt) that there is any way to query GA to get this info back, given the _ga cookie.



回答3:

You can create your own cookie and store the query string parameters that google analytics use (utm_campaign and etc). See this project as example: https://github.com/dm-guy/utm-alternative



回答4:

Use below code to get utmz cookie along with your universal analytics js code

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    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);
  })();

</script>