The combination of big data / analytics and all the nice things that we can do with it in our CMS systems has keeping me busy the last 2 years. The result is our own CMS independend bigdata platform where we can combine analytics, personalisation, testing and connecting other datasources like (CRM, ERP etc.) In this blog post I want you to give a little sneak peek of what we did.
Let start with some explanations of the techniques we use
Dimml the data sience language
Dimml is a declaritive machine language. That’s a mouth full of technical words. We call it our data washing machine. It collects all kind of data from different sources and does make an easy understandable data source from all of that. That "washed" data is used in our .net applications. It’s not only analytics data that matters, it’s about data which you can collect from other systems as well. Filter and combine it, and to make usefull information of it. The beauty of dimml is; it is realtime, you don’t have to wait a day or 2 before all data is processed and it can connect a lot of sources. An example; collect live visitor data of your website, connect it with data of your CRM, your email campaign or even the visitors who visted you "offline" store.
Einstakur (codename)
What?? Einstakur is that some weird iceland word!? Yes it is! It’s because we didn’t find a word to describe what we are working. Iceland is probably one of the smallest languages in the world, so not that much of native speakers can blame us for using the word the wrong way 😉 .. So what’s Einstakur in this case? It’s a code name for our .net library which we created on top of the mongo db. Einstakur is CMS / application independend and can be used in Umbraco, Episerver our even your (mobile) .net applications. You can not only use it for quering the visitor / analytics data, but also to push log entries or server performance statistics to dimml. Imagine what you can do when you connect those data pieces.
Some code examples
Below some code examples of the library. It’s a query chain where you can combine criteria to do nice things.
//statistics for a specific user
client.For<Statistic>().ForVisitor(visitorId).All())
//has the current visitor visted the application during the last month?
client.For<Visitor>().ForVisitor(visitorId).InRange(DateTime.Now.AddMonths(-1), DateTime.Now).Any()
//list of unique visitors during the last year
client.For<Visitor>().InRange(DateTime.Now.AddYears(-1), DateTime.Now).All()
Visitor groups and Pipeline
Episerver has already something inplace to personalize the experience of your site visitors. It’s called visitor groups. The standard available Visitor groups are most of the time session based. In another article we already talked about how to create cross session based criteria. Our new solution goes a step further but does use the same techniques in Episerver. The Episerver platform has some nice interfaces on top of which you can easily create your own visitor group criteria.
Umbraco on the other hand is the editors most friendly CMS system. It does focus on managing content (duh! it’s a content management system) and does a great job there. Umbraco in it’s core doesn’t have something like visitor groups but there are plenty of packages who do. One of them is called Pipeline, a mini CRM inside Umbraco. Pipeline is created by our friends from GrowCreate and we are closely working together with them to create a superduper of a personalisation experience for Umbraco as well. In pipeline the "groups" are called "segments".
Connecting the pieces
Imagine that you not only track visitor analytics data, but you can connect and combine other sources as well to know your customer even better. It can be scary and you have to think more than twice about privacy. Not only what is accepted by law, but also what do you think is acceptable (but lets keep that for another big blog post). In the image below you see that visitor tracking is just one of the data sources. Via Dimml we can collect all page visits and javascript events (mouseovers, clicks, scrolls etc) of a user and store them into one big mongo db. Einstakur on the other hand is our first step of an api to use the data. It’s a query api which you can use to create superduper nice visitor group criteria (Episerver) or segments (Pipeline). We also use it to have integrated analytics in the CMS. For example live analytics on page and or visitor level.
I want this!
Oh yeah, you like this? Nice! please contact us at: Marvelous.nl. We really like to work together and give you the oppertunity to play around with it.