We recently made Breadcrumb available for private beta over at freshcode. I’ve since put it into NetworkLocation so that we can use it, and see how it works in the real world. When we designed Breadcrumb, we wanted it to work with any store so we tried to make it as generic as possible and not require any server software.
NetworkLocation is sold via a slightly customized PotionStore install over at https://secure.centrix.ca. Anyone who knows me knows how much I hate Ruby on Rails, and so I did zero modifications to PotionStore to support Breadcrumb. Someone with less hatred for RoR could likely add the Breadcrumb data to the model in no time, but for my needs, it wasn’t necessary.
Upon first launch of NetworkLocation 3.1.4 and higher, Breadcrumb runs and tries its best to determine where the user got NL, and stores that info in NSUserDefaults. When a user clicks “Buy Now” in NetworkLocation, the app requests that info from Breadcrumb, and I attach it to the URL that’s sent to the browser. So what used to be “https://secure.centrix.ca/?product=nl3” is now “https://secure.centrix.ca/?product=nl3&source=Bodega” where “Bodega” is where Breadcrumb has determined NetworkLocation was downloaded from.
I used the advanced charting functionality to have it draw me a pie chart of how users are getting to my store. I used this query:
source=”/home/centrix/access-logs/secure.centrix.ca-ssl_log” AND (“GET / ” OR “GET /?” OR “product=nl3&source”)| replace “__utma*” with “From NetworkLocationApp.com” in uri_query | chart count by uri_query
Basically it looks for the different ways a user could be getting to our store. In the case of when a user goes to our store from the main product page, Google Analytics goes and makes the query string nasty with “__utma….” so when it sees that it just replaces that with a prettier string. Then it does a summation grouped by uri_query, and makes a chart.
So a quarter of people who go to our store get there from our product page. About 8% or so got there with just “product=nl3”, so no real useful information attached. 24% came in with source=(null) which means that Breadcrumb wasn’t able to find any download information. Notice that this is different than source=Unknown. In the case of source=Unknown, Breadcrumb found a matching download, but it wasn’t from a source it could recognize. Maybe they got it from an email from a friend or something like that. Bodega only recently started writing the necessary information for Breadcrumb to be able to track its downloads, so it’s quite possible, if not likely, that a good number of those source=(null) people got it from Bodega.
I added two additional sources to Breadcrumb ontop of the ones it supports natively: NetworkLocationApp, and Centrix. NetworkLocationApp is the source when a user has downloaded NL from http://NetworkLocationApp.com, and Centrix is the source when a user downloads it from http://centrix.ca/networklocation/. Considering we’ve stopped linking to centrix.ca/networklocation many years ago, I find it very surprising to see how many downloads are still coming out of it.
Another interesting point here is that MacUpdate didn’t make an appearance. Version 3.1.4 got 153 downloads, but not a single one of those downloads generated a hit on the store. 153 isn’t a large number, so I won’t make any wild assumptions based on it, but it’s still interesting.
That’s how you see how users got to the store which is interesting. But what’s more interesting is… who’s making me money? I’ve got a query for that too:
file !=”*printer.png*” AND (uri_query = “*product=*” OR “/store/order/thankyou”) | transaction clientip, useragent maxspan=1h | where eventcount > 1 AND like(_raw, “%product=%thankyou%”) | chart count by uri_query
I won’t be posting a graphic of that result cause that’s a little personal. Some interesting information that comes out of it though: source=Bodega made up a very small slice of hits to the store, it made up a larger slice of final sales. So even though my sales reports in Bodega make it look rather grim, it’s apparent that being on there and having a promo spot is generating me money.
Doing this without Splunk
Splunk’s my tool of choice, but not everyone can go ahead and install something like that on their server and feed it their access logs.
You could probably get the same information out of Google Analytics if you knew how to use it properly. I’m not saying it’d be easy to get, but somehow, probably possible.
Some stores already have support for tagging. FastSpring is a good example. Create your tags, then just send up &source=Tag with the url. They’ll store that information for you and it should be available in reports.
As I said earlier, modifying PotionStore to support this natively likely wouldn’t take much work if you’re a RoR programmer.
I’m a stats fiend. Any time I can get more data to let me make objective decisions to help me run my business better, I jump on it. Considering how ridiculously easy it was to add Breadcrumb support to NetworkLocation, I’ll definitely be adding it to all of my future apps.