Tuesday, January 29, 2013

“Dynamic” Goals in Sitecore CEP and Google Analytics

A quick aside as I continue to compare and contrast my experience setting up GA with my current understanding of Sitecore CEP….

I started thinking about Goals in a much more dynamic way.  While I appreciate the Engagement Value that Sitecore assigns to the Goals you can model directly in the system, I often get the feedback that goes something like, “yeah, but we might have one goal that would be worth very different things based on other factors, like where it’s accomplished, on which site, based on whether the visitor has accomplished something else”, etc., etc., etc.

As always, in ECommerce this is usually pretty straightforward.  Goal = Purchase, and Value = Invoice Total.  With most of our Goals, though, the Value can be much harder to agree on.  I like the example here of a site registration Goal.  Two different departments might have this same Goal, but they might weight it very differently in terms of Value.  One department has determined that registration leads to a particularly high ECommerce conversion rate, so they feel the act of registration itself should be high up the Engagement Value pyramid.  Another department, while still wanting to track the Registration goal occurrence, hasn’t seen the same focused correlation towards their interesting conversions.

While we can certainly consider setting up different Goals for the different purposes (and starting down the path of Department 1 Registration, Department 2 Registration), what I like about the opportunity of this use case is to detach the Engagement Value from the Goal itself.  The simplest code sample I could think of is below:

if (Sitecore.Analytics.Tracker.IsActive)
Tracker.CurrentVisit.Value += 1000;
 



where we arbitrarily add 1000 Engagement Value points to the current Visit.  While this is oversimplified, it highlights the main point here….let additional logic determine the actual Engagement Value based on additional criteria (in the Sitecore Context or otherwise),  and then promote the simple maintenance of that additional criteria.

Tying to a CRM for an attribute like this could be very interesting (salespeople determining the value of a demo request for their own region).  I also like the idea of modeling this as Sitecore content.  Maybe a Goal should look at where it is in Context to the content hierarchy (if the current item has a Value use it, if not look up the tree, etc.).  Probably better—model this in the Rules Editor (multiple clause condition like “if item is subitem of books section, and visit number is greater than 5”).

I started down this path as it’s taking me longer and longer to figure out how to model complex Goal achievement in Google Analytics.  Of course I’m quite biased towards Sitecore here, but thinking through the Sitecore API possibilities, coupled with allowing content authors easy maintenance has been quite a bit more exciting than considering all the landing pages I’d need so far in my Google Analytics Goal scenarios.  To be fair, I have to dig deeper into GA and see what I get from their API.

Friday, January 25, 2013

Launch Sitecore Goals Modeled in Google Analytics and Sitecore

 

The main purpose of this post is to simply understand how I can, in GA, model the “Download Launch Sitecore” goal that we currently have modeled in our Sitecore site.  Before that, a quick aside that has always confused me—visits, unique visitors and new visitors.  Good to remind ourselves of the simple--yet still sometimes confusing—stuff.

A visitor comes to our site.  The visit is counted as a visit.  Plus:

If this is the first visit from this visitor in this reporting period, the visitor is recorded as a unique visitor.

If this is the first visit from this visitor ever (at least by available information, cookie, etc), the visitor is also recorded as a new visitor.

OK, not the purpose of this post.  For this discussion, we want to end up with a simple goal modeled in both Sitecore Analytics (done), and GA.  We’ve already discussed a full explanation of the goal strategy for Launch Sitecore, so for today we just have to concern ourselves with trying to track how many of our visitors download the Launch Sitecore package from our site.

A quick review of how we accomplished this in Sitecore.  We had some choices here when we considered how to identify that our Download Launch Sitecore goal has been accomplished:

  1. Use the fact that our visitor made it to the page where the download is available
  2. Use the “onclick” event sparked from clicking the download link
  3. Identify the request to the actual Sitecore package (zip file stored in Sitecore’s Media Library) as the actual accomplishment of the goal
  4. Somehow figure out when our visitor ACTUALLY installed the Sitecore package

I put this list in order of effectiveness, in my opinion.  Using #1 would give me the least confidence in the validity of the goal accomplishment numbers….#4 the most confidence.  The nice thing with our decision in Sitecore—#3 is actually just as easy to model as #1.  The reason:  since the actual Media Library asset is referenced / stored in Sitecore (the zip file package), we can simply check off the Goal box for that Media Library item:

image

The same would hold true if we chose #1, since we could apply this goal to the visit of a page rather than a request of a Media Library item.  #2 would actually take a bit more work, most likely setting the PageEvent (Goal) via the API.  A couple lines of code, but more work than simply clicking a check box.

#4 is interesting, but balancing the work it would take with the additional benefits, it’s not yet done on Launch Sitecore (maybe a nice future feature).  We would have to do something within the package install to call in the goal accomplishment.

Off to Google.  To be fair, remember that this is my “out of the box” attempt at setting a Goal in my Google Analytics.  And for now, just trying to achieve parity with the Download Launch Sitecore goal we already have in our Sitecore solution.

Turns out, easy enough.  Since I can include the link to the actual Media Library asset:

http://www.launchsitecore.net/~/media/Files/Packages/LaunchSitecore6622.ashx

….this URL will now represent my Goal in GA.  Less flexible overall, since I will have to remember to change this URL when we change the package file (or always keep the file name the same).

image

 

For now, this will be good enough for us to start tracking the same goal in GA.  For consistency’s sake, we’ll also assign a Goal Value of 25 (same as the Engagement Value in Sitecore).  My Launch Sitecore boss is already telling me this is too arbitrary, so as we go we better do a better job rationalizing (potentially monetizing) this goal value.  I can see some CRM work in our future.

Off to model campaigns in GA (remember back to our Launch Sitecore exercise, where we have campaigns that represent Social Network Login visitors, visitors who click on an auto signature within a Sales Engineer’s email, and email (for future use).

Thursday, January 24, 2013

Launch Sitecore and Google Analytics: Overview Reports

In my investigation of Google Analytics (and I’m new to it), I wanted to understand what you get for table stakes reports.  Logging into to GA gives you a really nice overview:

image

Hard to see such a rich report in a blog article, but some of the things I’d expect from an analytics are there—visits, unique visitors, page/visit, etc.  In addition, a very intuitive interface let’s me see more specific table-based reports that filter my viewpoint by browser, visitor location, operating system, and more.

Sitecore’s Engagement Intelligence Analyzer (and the full business intelligence suite it enjoys) employs a robust interface strategy, where dozens of prebuilt dashboards are available, each additionally customizable with filter criteria.  The example report below allowed me to easily define date ranges and looks at visitor locale (by country), to see a nice bar/line graph plotting both average visit duration and pages per visit, see a quick list of referring sites comparing the last 30 days against the previous 30 days and more:

image

There are plenty of additional dashboards that reflect all of the data shown on GA’s opening dashboard (stats covering visit duration, bounce rate, operating systems, browsers, etc.).

In addition, each of the individual graphs above gives me the option to expand / contract levels, add additional criteria, toggle between a chart and the data table behind it and more.

Here’s the same dashboard with the table data toggle on the top right graph:

image

The available dashboards make readily available all the same information on the Google default dashboard.  Of course, with a full-featured BI environment, the possibilities for customization are much greater here.  The Operating System report, for instance, gives me “live” graphs showing visit, conversion, duration and page per visit information.  As I click on a particular operating system, those graphs are refreshed and updated with the relevant data to that operating system only.  A full “drillpad” gives me even more power to fine tune and specify my criteria:

image

OK, so that’s just the surface, but I’m now confident that Sitecore Analytics provide me easy access to all the “default” analytics data in Google.  Since I know a lot about Sitecore Analytics, now I’m off to learn about segmented targeting, goal and campaign identification in GA so that I can fully understand the level effort to model these (I already have these marketing assets modeled in Sitecore and our Launch Sitecore site).

Off to consider both systems as I try to leverage analytics to answer the important questions for our Launch Sitecore site—why does our site exist, what do we want our visitors to accomplish, how are they getting to the site and which full path leads to optimal results?

Next up, setting Goals in GA.

Launch Sitecore and Google Analytics

Yes, Google Analytics.  I decided it was time to step back and figure out how the leader of the pack does things so that I can truly understand Sitecore’s offering in this space.  As I’ve been diving more and more into the analytics discussion, my main focus has been on understanding Sitecore’s quickly growing and rich analytics offering and to describe the benefits to partners and prospects.  Invariably, though, the challenging discussion comes up:  “do I use this instead of Google Analytics?”, and: “I have this set of reports from GA….are you saying Sitecore’s reports are different, better?”.

So, now I’m setting off on a journey to understand this a lot better.  The good thing—we have a public Launch Sitecore site that has been up and running now for some time with both Google Analytics and Sitecore Analytics gathering some great data.  Not a huge site, but very effective in considering things like Goals/Conversions, Segmentation, Referral Sources / Campaigns, and more.

My goal with this exercise is to truly define the best of both worlds.  Google Analytics is huge, rich, entrenched, effective.  Sitecore Analytics is laser focused on the the best Customer Engagement Platform on the planet.  Let’s try to answer the questions….where do these tools differ, overlap, complement?  How are they used together and what does each uniquely bring to the table?

For this simple start, one question that often comes up:  how do I integrate Sitecore with Google Analytics.  While this discussion could take off on a few different directions, let’s keep this ridiculously simple for now and see where we need to expand the answer.  For now, because of the great Sitecore presentation strategy, it’s as easy as this:

  1. Sign up for a Google Analytics account if you don’t already have one
  2. Copy the javascript GA gives you to insert into your pages for tracking
  3. In Launch Sitecore, since we have one Layout that governs our entire browser-based design, all we have to do is insert that javascript right before </body>.  This will automatically track every Sitecore item / page that uses this layout (in the case of Launch Sitecore, this means all pages).
  4. Sit back and let Google start collecting
  5. (oh yeah), Sitecore DMS is already working its collection magic without the javascript.

Next we’ll start to drill into the data a bit and start to understand if our Launch Sitecore site is meeting up to our goals.