Excellent hack! Really, this is a big step for feasibility regarding
Flex based sites. Advertisers especially are interested in analytics
data. What about deep linking, could you run that through GA too?

-- William

--- In [email protected], "Tracy Spratt" <[EMAIL PROTECTED]> wrote:
>
> The ability to record and analyze user navigation, actions and even
> purchases is valuable in many web sites and applications.  In case you
> are not aware of it, Google provides a free service called Google
> Analytics (GA), that makes this very easy to do.  Learn more, and set up
> your account here: http://www.google.com/analytics/
> 
> I recently set this up for a Flex application.  While clear and helpful,
> the GA documentation is strongly oriented toward traditional html
> websites, full of strange terms like "body onLoad" and such, so making
> it work with a Flex app was harder than it needed to be.  Below are the
> steps you need to take to use Google Analytics with Flex.
> 
> Tracking Navigation and actions:
> 1: Set up your account, a tracking profile, and get your account id, at
> the above link.  It is quite simple.  At the end of this process, you
> will see a block of javascript that needs to go in the html wrapper of
> the Flex app
> 
> 2: Modifying the Html Wrapper: Remember that if you are letting Flex
> Builder generate the wrapper, you need to do this in
> "index.template.html", otherwise it can jus to in the wrapper html. Copy
> and paste the whole script block into the html wrapper.  I put mine just
> below the style tag, and above the block that defines the flash Global
> variables.  The first tag includes the js file, the next tag sets the
> account id to a variable, and invokes the "urchinTracker()" function,
> which logs a page hit with GA.  The script block looks like this:
> 
>               <script src="http://www.google-analytics.com/urchin.js";
> type="text/javascript"></script>
>               <script type="text/javascript">
>                       _uacct = "UA-xxxxxxx-x"; //this is your account
> Id
>                       urchinTracker();         //this created a record
> when the wrapper is hit
>               </script>
> 
> Now, you want to know more than that the app wrapper was hit.  To do
> this, you use ExternalInterface in Flex to call the "urchinTracker()"
> function, but you include an argument.  That argument should look like
> an url.  In my case this was no problem, since my navigation was easily
> represented by the form: 
> 
>               /ApplicationName/MainNav/SubNav/OptionalAction.  
> 
> I implemented a public method in my main app:
> 
>               /** sends usage id to GoogleAnalytics */
>               public function logUsage(sUsageId:String):void
>               { 
>                 ExternalInterface.call("urchinTracker",sUsageId);
>               }
> 
> At my main navigation points and in sub-applications as desired, I call
> that method:
>               _app.logUsage("/" + _sAppName + "/SubAppName[/Action]"
> );
> 
> The result of this is a very useful set of data regarding users
> navigation around my application.  GA has filters and many other
> analysis tools available to look at this data.
> 
> Tracking Ecommerce:
> Google analytics also lets you track sales that are made through your
> application.  Again the docs are full of strange terms like "submit
> form" and "receipt page", that we do not know about in Flex.  But if
> your Flex site sells stuff, it is easy to log it in GA.
> 
> 1: Set up GA for Ecommerce logging:
> 1.    Log in to your account. 
> 2.    Click Edit next to the profile you'd like to enable. 
> 3.    On the Profile Settings page, click edit next to Main Website
> Profile Information. 
> 4.    Change the E-Commerce Website radio button from No to Yes. 
> 
> 
> 2: Modifying the Html Wrapper:
> This works by placing your sales transaction data in a hidden form in
> the html wrapper.  GA advises that this form be placed just before the
> closing body tag.  It looks like this, copy it exactly:
> 
>               <form style="display:none;" name="utmform">
>                 <textarea id="utmtrans"></textarea>
>               </form>
> 
> Then, we again use ExternalInterface to send the transaction and line
> item data to a wrapper function:
> 
>               /* called by ExternalInterface */
>               function logTransaction(sTransInfo)
>               {
>                 document.getElementById('utmtrans').innerHTML =
> sTransInfo;
>                 __utmSetTrans(); 
>               }
> 
> You see that the function takes the passed in sales transaction info and
> puts it in the hidden form.  Then it calls the "__utmSetTrans" function,
> which reads the hidden form values and sends it to Google Analytics.
> 
> The sales transaction info string is a specially formatted string, like
> this:
> 
>       
> UTM:T|[order-id]|[affiliation]|[total]|[tax]|[shipping]|[city]|[state]|[
> country] 
>       
> UTM:I|[order-id]|[sku/code]|[productname]|[category]|[price]|[quantity]
> 
> The string works on the delimiters, "UTM" and the "|" pipe, so spaces
> and newlines don't matter.  Build this string in your shopping cart
> however you need.
> You can have as many UTM:I, line item records that you want.  I think
> only the order-id is required, but include all the pipe delimiters, even
> if there is no data between them.
> 
> Note that it takes 12-24 hours for data to be visible in the GA reports,
> which is a pain, but just be patient.
> 
> See the GA help for more details on all of this.
> 
> Since you are using client javascript, your back-end is never involved,
> and you don't need to worry about crossdomain issues etc. 
> 
> I hope you find this useful.
> 
> Tracy Spratt
>


Reply via email to