Hide

Ecommerce Tracking - iOS SDK

This document provides an overview of how to measure in-app payments and revenue using the Google Analytics SDK for iOS v3.

  1. Overview
  2. Implementation
    1. Specifying Currency
  • Related Documents

  • Platform

  • Reference: Ecommerce Learn about the ecommerce data model, measurement, and reporting options.
  • Collection

  • Web Tracking: analytics.js Using custom dimensions and metrics on the web with the analytics.js library.
  • Android SDK Measuring in-app payments and ecommerce in native Android apps with the Google Analytics SDK for Android.
  • iOS SDK Measuring in-app payments and ecommerce in native Android apps with the Google Analytics SDK for iOS.
  • Measurement Protocol Measuring ecommerce activity in almost any environment using the measurement protocol.
  • Configuration

  • Setting Global Currency (Help Center) Learn how to set the global currency of a view (profile).
  • Related Topics

  • Supported Currency Codes Learn which currency codes are supported for measuring local currencies."
More

Overview

Ecommerce measurement allows you to send in-app purchases and sales to Google Analytics. Ecommerce data in Google Analytics is comprised of transaction and item hits, related by a shared transacation ID.

Transactions have the following fields:

Field Name Tracker Field Type Required Description
Transaction ID kGAITransactionId NSString Yes A unique ID representing the transaction. This ID should not collide with other transaction IDs.
Affiliation kGAITransactionAffiliation NSString Yes An entity with which the transaction should be affiliated (e.g. a particular store)
Revenue kGAITransactionRevenue NSNumber Yes The total revenue of a transaction, including tax and shipping
Tax kGAITransactionTax NSNumber Yes The total tax for a transaction
Shipping kGAITransactionShipping NSNumber Yes The total cost of shipping for a transaction
Currency code kGAICurrencyCode NSString No The local currency of a transaction. Defaults to the currency of the view (profile) in which the transactions are being viewed.

Items have the following fields:

Field Name Tracker Field Type Required Description
Transaction ID kGAITransactionId NSString Yes The transaction ID with which the item should be associated
Name kGAIItemName NSString Yes The name of the product
SKU kGAIItemSku NSString Yes The SKU of a product
Category kGAIItemCategory NSString No A category to which the product belongs
Price kGAIItemPrice NSNumber Yes The price of a product
Quantity kGAIItemQuantity NSNumber Yes The quantity of a product
Currency code kGAICurrencyCode NSString No The local currency of a transaction. Defaults to the currency of the view (profile) in which the transactions are reported

Ecommerce data is used primary in the following standard reports:

  • Ecommerce Overview
  • Product Performance
  • Sales Performance
  • Transactions
  • Time to Purchase

Implementation

Sending transaction and item data to Google Analytics requires setting the transaction and item field values on the tracker and sending them, one at a time. For example:

/*
 * Called when a purchase is processed and verified.
 */
- (void)onPurchaseCompleted {

  // Assumes a tracker has already been initialized with a property ID, otherwise
  // this call returns null.
  id tracker = [[GAI sharedInstance] defaultTracker];



  [tracker send:[[GAIDictionaryBuilder createTransactionWithId:@"0_123456"             // (NSString) Transaction ID
                                                   affiliation:@"In-app Store"         // (NSString) Affiliation
                                                       revenue:@2.16F                  // (NSNumber) Order revenue (including tax and shipping)
                                                           tax:@0.17F                  // (NSNumber) Tax
                                                      shipping:@0                      // (NSNumber) Shipping
                                                  currencyCode:@"USD"] build]];        // (NSString) Currency code


  [tracker send:[[GAIDictionaryBuilder createItemWithTransactionId:@"0_123456"         // (NSString) Transaction ID
                                                              name:@"Space Expansion"  // (NSString) Product Name
                                                               sku:@"L_789"            // (NSString) Product SKU
                                                          category:@"Game expansions"  // (NSString) Product category
                                                             price:@1.9F               // (NSNumber)  Product price
                                                          quantity:@1                  // (NSInteger)  Product quantity
                                                      currencyCode:@"USD"] build]];    // (NSString) Currency code

}

Ecommerce currency fields support negative currency values, as may be necessary in the case of refunds or returns.

Specifying Currencies

By default, transaction values are assumed to be in the currency of the view (profile) in which they are reported.

To override the local currency of a transaction and any associated products, set the currency code field of the transaction and item hits with the new currency code. For the complete list of supported currencies and currency codes, see the Supported Currencies Reference.

/*
 In this example, the currency of the transaction is set to Euros. The
 currency values will appear in reports using the global currency
 type of the view (profile).
 */
- (void)onPurchaseCompleted {

  // Assumes a tracker has already been initialized with a property ID, otherwise
  // this call returns null.
  id tracker = [[GAI sharedInstance] defaultTracker];

  [tracker send:[GAIDictionaryBuilder createTransactionWithId:@"0_123456",             // (NSString) Transaction ID, should be unique among transactions.
                                                  affiliation:@"In-app Store",         // (NSString) Affiliation
                                                      revenue:(int64_t) 2.16,          // (int64_t) Order revenue (including tax and shipping)
                                                          tax:(int64_t) 0.17,          // (int64_t) Tax
                                                     shipping:(int64_t) 0,             // (int64_t) Shipping
                                                 currencyCode:@"EUR"] build];          // (NSString) Currency code
}