As an Apple iPhone Developer I would like to know how my applications are selling around the world, where my users and customers are, where to put focus, and what localizations to work on next.

Fortunately for us iPhone Developers, Apple is giving us nice and clean daily, weekly, and monthly sales reports in CSV format. Unfortunately, we have to download these reports manually and somehow process them into a Microsoft Excel or Apple Numbers sheet to be able to create some nice reports out of them. This works pretty well (except for the fact that Apple Numbers can not directly import CSV file with semicolon used as a separator), however if you want to track sales weekly as I prefer to do, this solution does not scale at all and consumes a lot of time.
A very good friend of mine is working for a small startup called GoodData. These guys are (according to their webpage) focusing on creating Business Intelligence Software & Collaborative Analytics (whatever that means), but for me as an iPhone developer the important thing is that they are essentially enabling me to create beautiful charts out of my sales data with almost no effort while keeping everything in the cloud. GoodData makes a perfect match with the whole Apple AppStore ecosystem, let me show you how I’m using their product (free variant) to track sales of my iPhone Applications.
Getting started
I suggest you first spend some time wandering around the GoodData website learning how to use their product. There are excellent documentation resources and instructional videos. If you have some background in databases and SQL in particular you will feel almost like at home when using GoodData.
After you have successfully created your GoodData account upload your initial sales/trends report.
- Download the daily or weekly Sales/Trend report from iTunes Connect.
- Rename the downloaded report file from .txt to .csv so that GoodData can recognize it correctly.
- Upload the .csv file using Upload New DataSet and follow the wizard.
- Select End Date column from the Sales/Trend report as a date dimension.
By this time you should have a Sales/Trends Reports dataset configured with data from one day/week. The End Date column will be used when generating weekly/monthly based reports. Notice that columns were split into two groups:
- Simple Attributes are columns with free form text, of interest for us is for example Country Code.
- Simple Facts are columns that contain numerical data that can be counted (and later used in Metrics). For us the important one is for example Units.

Uploading Weekly/Daily Sales/Trends Reports
Now when you have the data model configured, the most interesting part of GoodData for me is how you fill it with fresh data. When you get a new daily/weekly report from Apple, you just upload it using Update Data to the existing dataset, and all data will be automatically merged together. And all your reports automatically update and repaint.

Your upload history is tracked within GoodData, although I’m not sure if you can remove uploaded data. Not that I have a good reason why to remove the data (apart from the fact that you may accidentally upload one .csv file multiple times).

From the upload history of my Sales/Trends Reports dataset you can see that I’m uploading new report every Monday after Apple releases their weekly reports.
Creating Reports
Creating reports in GoodData is one of the easiest tasks. When you have all your metrics properly configured (which might take some time and learning) you only select What to visualize and How to visualize it.
My weekly report visualizes SUM of Units (what) by Week (how). Downloads by country are visualized as SUM of Units (what) by Country Code (how). Downloads by territory are little bit more involved as they need filtered variables to define territories by their respective country codes, and then custom metric that selects Units downloaded within given territory (set of Country Codes).



Working with GoodData makes AppStore Sales/Trends Reports visualization very smooth and easy to maintain over time. The browser UI interface is rather heavy on JavaScript and Ajax and certain things (custom metrics editing) do not work properly in Safari right now but situation is improving every day as the product matures.