Is there a setting on Google Analytics to suppress use of cookies for users who have not yet given consent

后端 未结 13 1286
深忆病人
深忆病人 2020-12-02 03:33

According to EU Article 5(3) of the E-Privacy Directive (a.k.a \'The Cookie Laws\'), web sites that target EU users have to gain opt-in consent from users before they set a

相关标签:
13条回答
  • 2020-12-02 04:11

    I was facing the same problem.

    Eventually, I got a solution in the line of Elmer's reply but playing safe regarding IPs, that is without using localStorage

    // Create a fake ID instead of storing anything locally
    function guidGenerator() {
        var S4 = function() {
           return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
        };
        return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
    }
    
    ...
    ga('create', 'UA-XXXXXX-Y', {
            'storage': 'none',
            'clientId': guidGenerator()
    });
    

    (-) Every page visited will count as a new visitor in Google Analytics, so I am losing quite a lot of functionalities there.

    (+) But I can live with it and I believe I am safe regarding data privacy legislations.

    Any feedback or improvement suggestion is more than welcome.

    0 讨论(0)
  • 2020-12-02 04:12

    EDIT (2019): The below answer predates GDPR and likely requires revision.

    Google Analytics has a new set of APIs to assist with compliance with a cookie opt-out. Here's the documentation, and here's their help docs.

    There has been some ambiguity as to whether the EU Cookie Regulations (as implemented in member countries) require that passive web analytics tracking requires opt-in mechanisms for compliance. If you're concerned one way or another, consult an attorney. Google is empowering you to make the decision as to how you want to proceed.

    They'll leave implementation details to you, but, the idea is, once you've determined whether or not to track the user in Google Analytics, if the answer is to not track, you'd set the following property to true before Google Analytics runs:

    window['ga-disable-UA-XXXXXX-Y'] = true;
    

    Where UA-XXXXXX-Y is your account ID in Google Analytics

    As the other posters have noted, Google Analytics relies on cookies. So, you're not able to do any kind of tracking without cookies. If you've determined that someone is not to be cookied for tracking, you'll need to implement something like this:

    if(doNotCookie()){
       window['ga-disable-UA-XXXXXX-Y'] = true;
    }
    

    Opt In

    This does require a little bit of jujitsu for when you first load Google Analytics, since this property will need to be set before Google Analytics runs to prevent tracking from ever happening, which means, for an "opt in to tracking" approach, you'd probably need to implement a mechanism where, on first visit, Google Analytics is automatically disabled in the absence of an opt-in cookie (cookies that determine cookie preferences are explicitly allowed), and then, if an opt-in happens, re-runs Google Analytics. On subsequent pageviews, all would run smoothly.

    Could look something like (pseudo-code):

    if( hasOptedOut() || hasNotExpressedCookiePreferenceYet() ){ //functions you've defined elsewhere
         window['ga-disable-UA-XXXXXX-Y'] = true;
    }
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-XXXXXXX-Y']);
      _gaq.push(['_trackPageview']);
    
    
      function onOptIn(){ //have this run when/if they opt-in.
          window['ga-disable-UA-XXXXXX-Y'] = false;
          //...snip...
          //set a cookie to express that the user has opted-in to tracking, for future pageviews
          _gaq.push(['_trackPageview']); // now run the pageview that you 'missed'
       }
    

    Opt Out

    With this approach, you'd allow the user to opt-out of tracking, which would mean you'd use a cookie to set the ga-disable-UA-XXXXXX-Y' property and a cookie to manage it in the future:

    if( hasOptedOut() ){ // function you've defined elsewhere 
         window['ga-disable-UA-XXXXXX-Y'] = true;
    }
    
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-XXXXXX-Y']);
      _gaq.push(['_trackPageview']);
    
    0 讨论(0)
  • 2020-12-02 04:12

    You can disable google analytics cookies by adding this code at the top of google analytics code (before line: var _gaq = _gaq || [];):

    ga('create', 'UA-XXXXXX-XX', {'storage': 'none'});
    ga(function(tracker) {
      var clientId = tracker.get('clientId');
    });
    

    However some features of google analytics (for example real time stats) do not work properly after this modification. More about google analytics cookies: https://developers.google.com/analytics/devguides/collection/analyticsjs/domains?hl=en#disableCookies

    0 讨论(0)
  • 2020-12-02 04:12

    GA does not work without cookies, it needs it to 'identify s' the visitor if he/she visited your site before. So there is no setting in GA for this, GA just doesn't records the visitor if it cant create a cookie.

    If the user is from the EU and has not opt-in then you should exclude the google-analytics script I think.

    0 讨论(0)
  • 2020-12-02 04:13

    You can disable the use of cookies for Google Analytics by specifying the {'storage' : 'none'} option when creating the tracker instance.

    See Google's guide on the subject for more details.

    0 讨论(0)
  • As a quick note, the BBC (probably the most popular site in the UK) has taken an interesting approach to complying with cookies - they've displayed a banner to users telling them that cookies are set and provide a couple of links.

    This one explains what cookies are. This one lets them manage their cookies, but most interestingly of all they supply a link to Google Analytics to allow users to opt-out of GA in its entirety. So, in summary, the BBC have taken the view that they can tell the user what cookies are set and then provide a link to Google to allow the user to opt out of all GA cookies. For me, that's a lot less hassle than you telling GA to opt-out for an address through JS.

    0 讨论(0)
提交回复
热议问题