[This post is by Jim Cotugno and Nick Mihailovski, engineers who work on Google Analytics — Tim Bray]
Today we released a new version of the Google Analytics Android SDK which includes support for tracking e-commerce transactions. This post walks you through setting it up in your mobile application.
Why Itís Important

If you allow users to purchase goods in your application, youíll want to understand how much revenue your application generates as well as which products are most popular.
With the new e-commerce tracking functionality in the Google Analytics Android SDK, this is easy.
Before You Begin

In this post, we assume youíve already configured the Google Analytics Android SDK to work in your application. Check out our SDK docs if you havenít already.
We also assume you have a Google Analytics tracking object instance declared in your code:

GoogleAnalyticsTracker tracker;Then in the activityís onCreate method, you have initialized the tracker member variable and called start:

tracker = GoogleAnalyticsTracker.getInstance();tracker.start ("UA-YOUR-ACCOUNT-HERE", 30, this);Setting Up The Code

The best way to track a transaction is when youíve received confirmation for a purchase. For example, if you have a callback method that is called when a purchase is confirmed, you would call the tracking code there.

public void onPurchaseConfirmed(List
purchases) { // Use Google Analytics to record the purchase information here...}Tracking The Transaction

The Google Analytics Android SDK provides its own Transaction object to store values Google Analytics collects. The next step is to copy the values from the list of PurchaseObjects into a Transaction object.
The SDKís Transaction object uses the builder pattern, where the constructor takes the required arguments and the optional arguments are set using setters:

Transaction.Builder builder = new Transaction.Builder( purchase.getOrderId(), purchase.getTotal()) .setTotalTax(purchase.getTotalTax()) .setShippingCost(purchase.getShippingCost() .setStoreName(purchase.getStoreName());You then add the transaction by building it and passing it to a Google Analytics tracking Object:

tracker.addTransaction(builder.build());Tracking Each Item

The next step is to track each item within the transaction. This is similar to tracking transactions, using the Item class provided by the Google Analytics SDK for Android. Google Analytics uses the OrderID as a common ID to associate a set of items to itís parent transaction.
Letís say the PurchaseObject above has a list of one or more LineItem objects. You can then iterate through each LineItem and create and add the item to the tracker.

for (ListItem listItem : purchase.getListItems()) { Item.Builder itemBuilder = new Item.Builder( purchase.getOrderId(), listItem.getItemSKU(), listItem.getPrice(), listItem.getCount()) .setItemCategory(listItem.getItemCategory()) .setItemName(listItem.getItemName()); // Now add the item to the tracker. The order ID is the key // Google Analytics uses to associate this item to the transaction. tracker.addItem(itemBuilder.build());}Sending the Data to Google Analytics

Finally once all the transactions and items have been added to the tracker, you call:

tracker.trackTransactions();This sends the transactions to the dispatcher, which will transmit the data to Google Analytics.
Viewing The Reports

Once data has been collected, you can then log into the Google Analytics Web Interface and go to the Conversions > Ecommerce > Product Performance report to see how much revenue each product generated.
Here we see that many people bought potions, which generated the most revenue for our application. Also, more people bought the blue sword than the red sword, which could mean we need to stock more blue items in our application. Awesome!
Learning More

You can learn more about the new e-commerce tracking feature in the Google Analytics SDK for Android developer documentation.
Whatís even better is that weíll be demoing all this new functionality this year at Google IO, in the Optimizing Android Apps With Google Analytics session.