Search code examples
sessionadobeanalyticsadobe-analytics

Adobe Analytics - Force a session/userID refresh


We have a website that can be viwed from a kiosk in a shop.

When the inactivity is above 2 minutes, the site returns to the home.

Anyone knows how to refresh the session when this appens? It could also serve make a refresh of the user id, but I don't know how it works.


Solution

  • I'm going to assume you are talking about Adobe Analytics javascript library and not the Android/iOS SDK, based on your tagging and lack of mention of it. If your kiosk is in fact using Android or iOS SDK, then please comment and I can update with instructions for that.

    Adobe Analytics javascript library does not currently offer a direct method to force refresh an Adobe Analytics session/userID. However, you can effectively do it by explicitly setting s.visitorID yourself, which will override the default generated by the library.

    So, when you want to start a new session, you can pop s.visitorID with for example the current timestamp:

    s.visitorID = (new Date()).getTime().toString();

    Or maybe you already have a "session" id you generate that you can use, instead.

    Note: with this method, you must set s.visitorID (with the same value) for every hit for the duration of your session. So in practice, you would really do something more along the lines of generate the new value at start of session, put the value in a cookie, and put s.visitorID in s_doPlugin but it reads the cookie value.

    Note: This will effectively make your visits and visitors metrics the same. Which is to be expected with a publicly shared device, but just mentioning it in case it comes up later.

    pseudocode:

    function startNewSession() {
    
      // use whatever cookie writing utility you have to 
      // set a cookie named visitorID set to the generated 
      // value. In practice, the expiration doesn't really 
      // matter as long as it's something longer than 
      // your average session. Just setting it to default 
      // session expiration should be okay
      var visitorID = (new Date()).getTime().toString();
      setCookie('visitorID',visitorID);
    
    }
    
    // in your existing logic that times out returning 
    // home after 2 minutes of inactivity, call the function
    // to generate a new id
    startNewSession(); 
    
    // this is AA's s_doPlugins callback function. This may look
    // slightly different, maybe defined as s_doPlugins and then assigned
    // to s.doPlugins, depending on what AA lib version you are using.
    // This is AA's callback function that gets called whenever 
    // an s.t or s.tl call is made
    s.usePlugins=true;
    s.doPlugins=function(s) {
    
      // make sure visitorID variable is addedto linkTrackVars
      // so it gets 'registered' for s.tl calls.
      s.linkTrackVars='visitorID';
    
      // explicitly set the visitorID with the cookie, using 
      // whatever cookie reading utility you have.
      s.visitorID=readCookie('visitorID');   
    
    }