Hero ImageAs a Con­sul­tant I often review mobile app ana­lytic imple­men­ta­tions of Adobe’s cus­tomers.  Often I find that what was imple­mented and the sub­se­quent data being col­lected is dif­fer­ent than what was expected. In par­tic­u­lar,  this is evi­dent for what should (or should not) be con­sid­ered an app screen view (aka page view). For exam­ple, one app that I reviewed had an astro­nom­i­cal num­ber of screen views within Site­Cat­a­lyst for an aver­age num­ber of unique vis­i­tors.  It turned out that every inter­ac­tion point that was instru­mented within the app (e.g. button-clicks, scrolls to end-of-page, pinch-to-zoom) were all being counted as screen views. As a point of empha­sis, micro-level app activ­ity should never be con­sid­ered a screen view.  The pur­pose of this blog post is to clar­ify the dif­fer­ence between the call type that counts as a screen view and the call type which does not.  We will also look at the app meth­ods which sup­port these dif­fer­ent call types and how to val­i­date between the two.

Know Thy Call Type
Within Site­Cat­a­lyst there are two fun­da­men­tal calls types which con­tain all sub­mit­ted data. A track call is counted as a screen view, and should be used when a new screen has been pre­sented or when the major­ity of the screen has sig­nif­i­cantly changed. A track­Link call should be used for all other sit­u­a­tions in which you are want­ing to mea­sure a user’s interactions.

As a side note, within Site­Catlyst you won’t’ find a “screen view” met­ric ‐  you will only find “page view” met­rics.  The rea­son we are call­ing page views as screen views is app devel­op­ers are more famil­iar with the con­cept of screen views.  Either way, the under­ly­ing data and what it should rep­re­sent is the same.

Call Types of App Meth­ods
Now that you know the dif­fer­ence between these two call types, how do you use them within the app mea­sure­ment libraries?   The eas­i­est way to show which app meth­ods align to which call type is to look at the chart below.

Call Type Com­par­i­son Table
Call Type Comparison Table

The dif­fer­ence between the “Sim­ple” and “Advanced” meth­ods is the scope of what data you can send in within each call.  For exam­ple, track­Cus­tom­App­State allows you to send in a page­Name and con­text­Data as a Track call.  Whereas track­With­Con­text­Data (iOS) allows both Con­text­Data and explic­itly set Cus­tom Vari­ables to be sent at the same time as a Track call.  For more details on these and other meth­ods, see the iOS and Android doc­u­men­ta­tion.  Below are “Advanced” code exam­ples for iOS and Android.

iOS Code Example

IOS Example Code


Android Code Example

Android Code Example
As with any imple­men­ta­tion, val­i­da­tion is vital to know if real­ity is in align­ment with your expec­ta­tions.    Some­times val­i­da­tion can become oner­ous and time con­sum­ing; how­ever, it’s for­tu­nately quite easy to do when dif­fer­en­ti­at­ing between track and track­Link calls.   Sim­ply, if the pev2 vari­able is found within the call, it’s a track­Link call.  If it’s not there, then it’s a track call.  To make it eas­ier to remem­ber, here’s a say­ing:  pev2 means no screen view for you.  As an impor­tant point of clar­ity, don’t assume because the page­Name vari­able is present that it has to be a track call.  Often you will find the page­Name vari­able present within track­Link calls even though it won’t appear within Site­Cat­a­lyst report­ing.  Below are val­i­da­tion exam­ples of track and track­Link calls along with an updated Call Type Com­par­i­son Chart which now includes validation.

Val­i­da­tion Examples


Call Type Com­par­i­son Table (with Val­i­da­tion)
Call Type Comparison Table Revised

Now that you know the fun­da­men­tals of track and track­Link calls and how to imple­ment them within the Adobe’s mobile app mea­sure­ment libraries, never again will you need to sec­ond guess the accu­racy of the screen view met­rics within Site­Cat­a­lyst reporting.

Update (Nov 19, 2013): This post has been updated to include method calls from the 4.x SDK which was released after this post was first published.