Introduction to Parameterized Session Events

One of the most commonly requested features for MarkedUp has been the ability to support parameterized session events, and as of the release of MarkedUp Analytics SDK for .NET 1.0 this feature is now publicly available to our customers.

Parameterized session events help you group and categorize related user events that occur inside your applications; this gives you the ability to maintain a high-level view of how people are using your application while also allowing you to expose more details if needed.

For example: I have a Hacker News Windows Store application that I’ve been working on in my spare time and I want to be able to track how many articles people actually view when they use it.

So, I embedded a standard MK.SessionEvent call inside my WinJS application to track how many people viewed an article:

And this allows me to see the total number of times someone has viewed an article using my app:

Hacker News application with a simple, unparameterized event

But what if I want more information – what if I want to know which articles users are viewing? Parameterized session events can help us with that.

I’m going to modify the call to MK.SessionEvent and include a new parameter: “ArticleUrl.”

“ArticleUrl” is the name of my parameter, and the value of this is the URL of whatever article a user is viewing. In C# / XAML you can just pass in an IDictionary<string, string> object for all of your parameters and values, but in WinJS you need to use a Windows.Foundation.Collections.PropertySet collection.

Once I’ve run the app with this custom parameter included, I can drill down into the ViewArticle event and see a new parameter:

Hacker News app with an ArticleUrl parameter for the ViewArticle session event

And if I click on the “ArticleUrl” parameter, guess what we see next? A list of all of the URLs for each event!


With that simple change, our ViewArticle event becomes much more informative and valuable – we can even use the date picker to see which articles were most popular amongst our userbase during each month or week!

Advanced Example: Distinct Session Event Parameters

Let’s take our usage of parameterized session events a step further. One of the features of my Hacker News application is the ability for it cache articles to the local filesystem in order to conserve bandwidth. I’m considering extending this capability to enable the app to run entirely offline – so my question is: how often do people really look at cached articles?

Parameterized session events can help us answer this question.

I’m going to move my MK.SessionEvent call from viewItem.js and into my caching layer – that way I can tell if the article I am serving is cached or not. Here’s my code looks like for that:

I have to different methods that are called by my app when we need to view an article – one that checks if the content is cached and serves it if it is, and another that downloads the content from the Internet.

Whenever we serve the content from cache, I pass in a ps[“Cached”] = true parameter and a ps[“NotCached”] = true whenever we don’t.

So after running the app a few times, it looks like most users don’t view cached articles very often:

Hacker News WinJS app - cached vs. uncached articles

I’m doing it this way so I can see directly at the ViewArticle view how many articles are served from cache versus those who aren’t without having to drill down any further.

But the choice is yours – parameterized session events are designed to be flexible and allow you to use them however you wish.

Make sure you check out our tutorial on using parameterized events with MarkedUp Analytics, and please let us know if you have feedback!

How-to: Tracking Page Navigation in Your WinRT or WinJS Applications

Today MarkedUp released a new report type which shows how often users view all of the distinct pages inside your Windows Store applications on Windows 8; so how do you how to actually capture all of this page navigation information in your app using MarkedUp?

Easy! You can use a single method to automatically track all of the page navigation information inside of your C# / C++ / HTML5 Windows Store apps: RegisterNavigationFrame.

The RegisterNavigationFrame method allows MarkedUp to automatically detect how users navigate between pages inside your application and eliminates the need for developers to have to write their own handler code and call the PageEnter event manually.

Calling RegisterNavigationFrame in C# / XAML

If you’re using C# and XAML to develop your Windows Store applications, you’ll want to call MarkedUp.AnalyticClient.RegisterNavigationFrame inside the Application.OnLaunched method, as shown below:

Calling registerNavigationFrame in HTML5 / JavaScript

If you’re using HTML5 and JavaScript to develop your Windows Store applications, you’ll want to call MK.registerNavigationFrame inside the WinJS app.onactivated method, as shown below:

Pretty simple! If you add this single line of code to your Windows Store applications you’ll see data light up on your application page views report and on others that we’re actively developing right now!

Let us know in the comments if you have any questions.

New Feature: Viewing Application Page Views in MarkedUp

Since MarkedUp opened up its public beta in late September, our number one most requested feature has been to enable developers to view all of the page navigation data we capture in the RegisterNavigationFrame method. We’ve captured this data all along, but haven’t had a report for viewing it!

Specifically, this method captures all page navigation events that occur inside an application – whenever a user transitions from one page to another, we automatically capture a PageEnter event and push the results back to MarkedUp.

Now you can see the results using our “application page views” report under the engagement tab on MarkedUp!

Application Page Views report, under the engagement tab in MarkedUp After you drill into the report, you’ll see a breakdown of your monthly traffic to each of the different pages in your app.

Here’s what the chart looks like for a standard WinRT app built using C# and XAML:

Application Page Views for WinRT application using MarkedUp And here’s the same chart for WinJS:

Application Page Views for WinJS application using MarkedUp If you click on any of the page names, you’ll have a chance to see a breakout chart with daily total page views and average views per-session:

Application Page views drill down We listened to your feedback and prioritized this report ahead of the others that we’re always working on. If you have any other product suggestions for MarkedUp, submit them here!

Updates to MarkedUp Conversion and Purchase Tracking for Windows 8 Apps

Today we released a new version of the MarkedUp Analytics SDK and some sample Windows 8 applications with MarkedUp installed (WinRT only for now; WinJS should be available soon.)

The big change? Significant improvements to our Commerce Events API.

Although the overwhelmingly majority of apps in the Windows Store are currently free MarkedUp wants to do a first-rate job supporting premium apps and apps that leverage in-app purchases and make it trivial for developers to measure important commercial metrics like average purchase size, total daily revenue per source, and so forth.

So here are the changes we made to MarkedUp’s Commerce API over the weekend:

Automatically detect and report trial conversions

MarkedUp Analytics now supports the ability to automatically detect paid conversions from trial licenses to fully purchased apps, without the developer having write any code whatsoever. We accurately capture both the price and currency directly from the marketplace too!

If a user starts the app in a trial mode and then resumes the app with a full license, we automatically convert that to a trial if we didn’t already detect the user’s change in license status via a developer’s explicit TrialConversionCompleted call (more on that in a moment.)

Automatic detection of currency and price for in-app purchases and trials

The original signature for TrialConversionCompleted and InAppPurchaseCompleted required the developer to specify a price, currency, and all sorts of other data that we would use in our currency charts. Let me show you what the new method signatures look like:

TrialConversionCompleted (C#/XAML)

InAppPurchaseCompleted (C#/XAML)

A lot simpler, as you can see. MarkedUp now automatically downloads all license information from the Windows Store and determines local price / currency for you.

For in app purchases, all you have to do is provide the MarkedUp Analytics SDK with the in-app purchase product ID from the Windows Store and we can automatically look up its price in the user’s locale.

Further questions?

Do you have anything else you’d like to know about our MarkedUp’s commerce event API? Go ahead and ask us here or contact MarkedUp support at

New MarkedUp Feature: Track Custom Events for Your Windows 8 Applications

Today we’re excited to announce a major new feature for MarkedUp Analytics: the ability to track custom session events for your application.

A “session event,” as defined by us, is simply something that happens in the course of a user running your application.

MarkedUp has a number of built-in session events like navigation events, life cycle events, and so forth. However, custom session events are defined by you, the developer.

How to Use Custom Session Events

To create a custom session event, you just need to install MarkedUp into your Windows 8 application and call the following method anywhere in your code where something you want to track occurs:

MarkedUp.AnalyticClient.SessionEvent(“{Name of Your Custom Event}”);

MK.sessionEvent(“{Name of Your Custom Event}”);

Once you’ve added that code into your application, you’ll start seeing these session events show up on your dashboard once you or any other user runs your app and triggers the custom event.

You can see the custom events by going to Engagement –> Custom Events on your app’s MarkedUp dashboard:

custom events nav

Once there, you’ll see a list of all of your app’s custom events along with some high-level data about how they’ve trended over time.

custom events view

You can change the date range and see how all of your custom events trended over any period of time.

If you want to view a higher-resolution chart of a particular event, just click the event’s name and you’ll be able to view the absolute number of event occurrences and the the per-session average over time.

custom events drilldown

That’s it! Rinse and repeat for every event you want to track!

If you want more details, take a look at our MarkedUp SDK reference documentation for custom session events.

Note to Existing MarkedUp Users: to take advantage of custom session events, you will need to upgrade your MarkedUp installation to the latest version.

Run the following command in the NuGet Package Manager Console and your installation will be upgraded automatically:

PM> Update-Package MarkedUp

Use Cases for Custom Events

So when would you need to use custom events?

The best way to think about analytics is in terms of questions and answers.

How would you get the data to answer the following questions?

  • How many games or levels do my users complete each time they start my game?
  • How many articles do users read each time they use my RSS reader?
  • How many of my users successfully recommend the app to a friend using our built-in “recommend this app” dialog? To how many friends?
  • Etc..

Any time you need to measure something specific to what your app does, use a custom event. If you have any other questions about use cases for custom events, feel free to ask us in the comments below or at