Adobe Measurement Deployment Guide Mobile Apps
1 Business Requirements By following the instructions in this guide when deploying analytics on mobile apps, the business will be able to meet Adobe's best practice recommendations for analytics & optimization of mobile apps. To integrate industry specific recommendations with mobile best practices, the business may wish to consider engaging with Adobe Consulting Services. Also, the business may wish to add other business-specific requirements in Section 5. 2
2 Setup Before initiating analytics code rollout, several steps must be completed to create an optimal data collection and reporting environment. Task Action Instructions Business Impact Owner Complete 2.1 Set Up CNAMEs Step 1: Confirm appropriate data center value with Adobe contact value will be either 112 OR 122. Step 2: Setup CNAME to be used in analytics request from non-secure pages mm.domain.com CNAME domain.112.2o7.net OR mm.domain.com CNAME domain.122.2o7.net Step 3: [Optional] Set up CNAME to be used in analytics request from secure pages smm.domain.com CNAME domain.102.112.2o7.net OR smm.domain.com CNAME domain.102.122.2o7.net Step 4: [Optional] Coordinate purchase and upload of secure certificate to reside on Adobe's servers for secure CNAME with Adobe contact. Note: subdomain and domain values should be changed to match desired values for site; and primary domain of CNAME should match primary domain of measured site for optimal visit and visitor accuracy. CNAMEs have only nominal value for Mobile Apps as visitor identification does not leverage cookies 2.2 Create Report Suites Create separate report suites (data buckets) for each site to be deployed. If report suites have already been created, confirm ids to be used. Report suites may be created in the SiteCatalyst Administration Console, or by an Adobe representative. Note: Adobe recommends segmenting traffic from mobile apps into a separate report suite than is used for the mobile web. Typically, each app will have two report suites one for production traffic and one for development/testing. App-based report suite structure provides optimal reporting at the level the business can perform optimizations Incorrect values for report suite id will result in lost data. 3
2.3 Generate Collection Code Generate collection code using the SiteCatalyst Administration Console. To generate app code, go to SiteCatalyst > Admin Console > Code Manager. Select "App Measurement for iphone/android/blackberry'" as the code type and the report suite which corresponds with the site which will be measured. 2.4 Review Documentation App Measurement Implementation Manuals (SiteCatalyst > Help > Knowledge Base > Supporting Docs > Manuals > App Measurement for iphone/adroid/blackberry) 2.5 Configure Report Suites Coordinate report suite configuration with Adobe contact. Launching without correct configuration may limit data availability and reporting 2.6 Settings The following settings should be configured on the report suite: Add the Correct Configurations 2.7 Customize Menu Assign friendly names to custom variables: SiteCatalyst > Admin > Report Suites > [select report suite] > Edit Settings > Traffic > Traffic Variables > Conversion > Conversion Variables > Conversion > Success Events Hide Unused & Empty Reports: SiteCatalyst > Admin > Report Suites > [select report suite] > Edit Settings > General > Customize Menus 4
2.8 Set Up VISTA Rules Reference Customization (Section 4) for any required VISTA rules. If cost is associated with rules, ensure necessary paperwork has been completed. 5
3 Code Deployment Once the appropriate steps have been taken to set up the reporting environment, the next step is to rollout the basic mobile measurement code. The code in this example is for rollout of the iphone App Measurement libraries, but steps are very similar for Android and Blackberry platforms. Task Action Instructions Business Impact Owner Complete 3.1 Install Measurement Libraries 3.2 Instantiate Instance & Configure Install proper app measurement libraries for platform. OMAppMeasurement.h (Objective-C header file) libomnitureappmeasurement-iphonesimulator.a (Simulator Library) libomnitureappmeasurement-iphonedevice.a (Production Library) 1. Instantiate Instance: reference whitepaper and iphone_config.h file for examples 2. Configure Global Variables: the following variables should be set in the configuration section of the code: Variables with Constant Values s.account = @"rsid"; s.trackingserver = @"mm.domain.com" s.trackingserversecure = @"smm.domain.com" 3.3 Send Analytics Call s track on each page/screen view to sent analytics. (void)screenload { s.pagename = @"page"; [s track]; } 6
4 Best Practice Customization Deploy the following variables to meet Adobe's best practices for measuring mobile applications. Task Action Instructions Business Impact Owner Complete 4.1 Customize Configuration Configure Global Variables: the following variables should be set in the configuration section of the code: Variables with Constant Values s.prop10 = @"iphone" //app platform s.prop11 = @"stockpicker" //app name s.prop12 = @"handango" //app distribution channel s.evar13 = @"4/20/2009" //app install date Variables Which Don't Need Configuration s.prop3 = @"D=User-Agent" s.prop6 = @"D=c10%2b%22:%22%2bc11%2b%22:%22%2bgn" s.hier1 = @"D=c6" s.evar1 = @"D=c1" s.evar4 = @"D=c4" s.evar5 = @"D=c5" s.evar6 = @"D=c6" s.evar12 = @"D=c12" 4.2 Content Naming Standards 1. Page: set page name (gn) to the content categories and sub categories plus name of page. s.pagename = @"level1:level2:pagename" 2. Site Sections: set site section level 1 (ch) and site section level 2 (c8) to the correct respective parts of the content hierarchy. s.channel = @"level1" s.prop8 = @"level2" 3. Content Type: set content type (c9) to the type of content consumed (e.g. story, content, video, download, audio, gallery, etc.) s.prop9 = @"story" 4. Custom Page View Event: set a custom page view event (event1) on every 7
page. s.events = @"event1" 5. Timeparting: Ask Adobe representative to set up Timeparting VISTA rule on timeparting variables (c7 & v7) Note 1: There may be a cost associated with VISTA setup. If desired, timeparting variables can be set using server-side code in place of VISTA. Note 2: There may be an additional cost associated with setting a custom page view event on every page. 4.3 Send Analytics 1. First App Launch: (void)appfirstlaunch { s.pagename = @"home:appfirstlaunch"; s.channel = @"home"; s.prop4 = @"vz"; //carrier s.prop5 = @"84660"; //location s.prop9 = @"content"; s.events = @"event1,event4"; s.evar11 = @"stockpicker 1.1" [s track]; } 2. Subsequent App Launches: (void)applaunch { s.pagename = @"home:applaunch"; s.channel = @"home"; s.prop4 = @"vz"; //carrier s.prop5 = @"84660"; //location s.prop9 = @"content"; s.events = @"event1,event3"; [s track]; } 3. App Update: (void)appupdated { s.pagename = @"home:appupdated"; s.channel = @"home"; s.prop9 = @"content"; 8
s.events = @"event1,event5"; s.evar11 = @"stockpicker 1.2" //app version [s track]; } 4. Normal Page/Screen Views: (void)appview { s.pagename = @"home:news:story1"; s.channel = @"home"; s.prop8 = @"news"; s.prop9 = @"story"; s.events = @"event1"; [s track]; } 5. Search Results: (void)applaunch { s.pagename = @"search:searchresults"; s.channel = @"search"; s.prop9 = @"search"; s.prop1 = @"dividend rules"; s.prop2 = @"50"; s.events = @"event1,event2"; [s track]; } 9
5 Business-Specific Requirements Deploy the following additional variables to meet optimization objectives of the business. Task Action Instructions Business Impact Owner Complete Sample Code: 10
6 Validation Ensure code has been deployed properly and reports meet business objectives prior to rollout to production. Task Action Instructions Business Impact Owner Complete 6.1 Validate Hits are Sent Leverage the debugging console that comes pre-packaged with the app development software tools used to create the application. Alternately, a packet sniffer installed on the network may also be used for debugging. Note: Adobe recommends deploying collection code to a dev or QA environment using a 'dev' report suite to verify code is set up correctly prior to pushing to production environment. Validate code has been correctly deployed 6.2 Validate Adobe Reports Log in to Adobe SiteCatalyst account and validate reports are populated correctly. Validate reports are populated correctly and reporting will meet required objectives 6.3 Production Push Once validation of hits and reports has occurred, push collection code to production environment. 11
7 Appendices 7.1 Variable Key The following table provides a lookup key between query string parameters, JavaScript, and XML Tags. Query String JavaScript/ActionSource/Application SDK Variable XML Tag gn s.pagename pagename sv s.server server gt s.pagetype pagetype ch s.channel channel c1 - c50 s.prop1 s.prop50 prop1-prop50 h1 - h5 s.hier1 - s.hier5 hier1-hier5 v0 s.campaign campaign state s.state state zip s.zip zip ev s.events events pl s.products products pi s.purchaseid purchaseid v1 - v50 s.evar1 s.evar50 evar1-evar50 12
ce s.charset cc s.currencycode currencycode D s.dynamicvariableprefix cdp s.cookiedomainperiods NA cl s.cookielifetime (s_vi cookie lifetime in seconds) NA /5/ or /1/ s.mobile NA r s.referrer (Referring URL) referrer g s.pageurl (Current URL) pageurl vid s.visitorid (customer managed visitor id) visitorid Variables Automatically Set: variables that are typically set directly by the Adobe JavaScript file are shown below. These variables can be populated in the image beacon to send data to the corresponding report: pid Page identifier for ClickMap pidt Page identifier type for ClickMap oid Object identifier for ClickMap ot Object tag name for ClickMap oi Source index for ClickMap pe (lnk_d, lnk_e, lnk_o) Link Type linktype 13
pev1 Link URL linkurl pev2 Link Name linkname pev3 Video Reports medianame medialength mediaplayer mediasession IP Address IP Address ipaddress domain Accept-Language Header Accept-Language Header language /b/ss/rsid/ s_account reportsuiteid User-Agent Header User-Agent Header useragent Blanked for Mobile Hits: The following variables typically set by JavaScript will be blanked as part of Adobe processing if the User-Agent of the hit is identified as a mobile device: s Screen resolution (Width x height) resolution c Screen color depth (8, 16, 32, etc.) colordepth j JavaScript version (1.0, 1.2, 1.3, etc.) javascriptversion v Java enabled ('Y' or 'N') javaenabled bw Browser client window width in pixels browserwidth bh Browser client window height in pixels browserheight 14
t Browser time information "DAY/MONTH/YEAR HOUR:MIN:SEC WEEKDAY TIMEZONEOFFSET" timezone k Cookies supported ('Y' or 'N') cookiesenabled ct Connection type ('modem' or 'lan') connectiontype hp Is current page browser's home page ('Y' or 'N') homepage p ';' Separated list of Netscape plug-in names plugins 15