Extending Omniture Analytics with Flash based Super Cookies

Adobe now owns Omniture, so like everyone else, we're expecting some merging of their respective technologies in the coming few years. Flash based super cookies are an ideal compliment to Site Catalyst and Test & Target, but despite the ease of implementation and widespread usage of both technologies, there is minimal current overlap. 
Given we are always trying to squeeze more value from analytics, we started playing with flash based super cookies and once we got it working, we were amazed at the possibilities. This post is aimed to touch on several of these areas where we think flash can add major value to existing Omniture solutions. We've already covered the super cookie technology in a previous post, so we won't dwell on the basics, if you need some more background please read the previous post:

Examples of Super Cookie additions to Omniture deployments
  1. Flash based persistent cookies work across multiple domains and multiple browsers - Standard cookie attrition reduces Test and Target profiling effectiveness and consequently reduces the potential uplift the technology can provide.
  2. Cookie deletion measurements - How often do your existing users delete their standard cookies?
  3. Browser switching measurements - Do your users switch between multiple browsers? How does this affect your analytics?

1. Super persistant cookies
For those people already using Omniture Site Catalyst's s.getAndPersistValue plugin, this is can be thought of as a substantially improved version, it doesn't matter if the user switches browser, the cookie exists in all browsers. It doesn't matter if the user clears their cache, deletes their cookies, it still persists. For analytics heavily dependent on a client side value persisting, this is invaluable, it directly translates to significantly more accurate analytics
For those using Test and Target the value of the super cookie is even more pronounced. Targeting parameters like product and category affinity often take many page views and multiple sessions before profiling parameters can be accurately determined. When standard cookies are deleted, all that rich information is lost. While people think they've done the right thing deleting their cookies to protect their privacy, they may also be perplexed at why your site suddenly starts showing them products and services they have absolutely no interest in. There is very little awareness that the cookie deletion has actually devalued the service provided to them. 

Persisting the profile - In order to keep the rich information on your users no matter whether they delete cookies or switch browsers, you have two main options:

a) Respawn their visitor ID - All their profile information is associated with their visitor ID. By reseting this to it's original value (stored either prior to cookie deletion, or from a previous browser), their profile remains intact. This method can also help you to keep more realistic figures on unique visitors as long as you can replace the visitor ID prior to sending any requests to Omniture. Although this gives the smoothest operation, the privacy issues are obvious and must be addressed. 
b) Keep a copy of targeting parameters in a super cookie - If you detect a cookie deletion, resend the the parameters to Omniture so they can be re-bind them to the new visitor ID. This is a little more privacy friendly, as you're allowing the user to remove association to a specific ID, but their profile remains. You no longer know who they are, but you still know a little about them to help serve them better.

The image above is an example of respawning an identifier which would have long since expired when using traditional cookies. The flow shows how the customer is already known and because a lead situation has been identified, he will be called by a sales rep. 

2. Cookie Deletion Measurements
If you grapple with privacy concerns but are still desperate to know how many of your users delete their cookies, then you can use this method to find out without fear of privacy invasion. This technique is useful for adjusting data inaccuracies caused by cookie deletion. 

Super cookies remain after users delete their standard cookies. Because flash cookies are not currently dealt with by browser settings (Chrome has some functionality), or understood by consumers, they are rarely deleted (assume this will increase in the future). By comparing the super cookie value to the standard cookie value, you can quickly tell if a previous value existed and has since been deleted. The high level logic is found below, this would be done in JavaScript:

IF standardCookie(a) is not equal to superCookie(a) AND superCookie(a) is not null THEN
{
s.propXX = "cookie deletion"
s.eVarXX = "cookie deletion"
s.events = "eventXX"
SEND OMNITURE REQUEST
}

The above logic would enable you to see several things including:

a) The total number of cookie deletions (using the prop or event)
b) Conversion rates of users who have deleted their cookies vs those that haven't (using the eVar). Note: This is particularly useful for Test and Target, where profiling enhances conversion.

You can directly measure the uplift of normal users compared to users post cookie deletion.

3. Browser Switching Measurements
Many people now use multiple internet browsers for a variety of reasons, evaluation, different features, old bookmarks and probably most importantly, technical issues. The problem for analysts is that traditional cookies are browser specific, so each browser appears as a different user. Super cookies can quantify this issue.

Sadly compatibility issues affect all browsers, although i shudder to think of the man hours wasted catering for IE6 issues. For example, a while back I emailed Citibank to let them know their site was completely crippled in Firefox, which was my browser of choice at the time (incidentally they never responded, i assume they were too busy issuing CDO's or something...). I didn't have Internet Explorer or any other browser, so i had to go and install it just to access Citibank. I continued to check back in Firefox from time to time waiting for the issue to be fixed and eventually it worked, but now i use Chrome... My experience with Citibank is fairly common, i've used 3 browsers in past 12 months as my primary browser, one switch was by choice and one was forced by technical issues, if Citibank didn't require me to identify myself by logging in, they would think i was 3 different users. 

So what does all this mean for super cookies? In the above case, Citibank may have assumed there was no need to support Firefox because none of their customers used it, but in reality, they couldn't use it because it didn't work. What if they had a way to see that i had visited several pages in Firefox and on a particular page i switched browsers. This would provide them with the critical point where a technical issue was occurring. 

Looking beyond the Citibank example, super cookies provide the capability to keep a cross browser profile that remains even if a user uninstalls a specific browser and switches to a completely new one, but for the purposes of the exercise we are only looking to quantify the issue.

To create this capability the following pseudo code logic can be used. Again this would be written in JavaScript. 
IF current browser is not equal to superCookie(browser) THEN
{
s.propXX = "old browser > new browser"
s.eVarXX = "old browser > new browser"
s.events = "eventXX"
SEND OMNITURE REQUEST
set superCookie(browser) = current browser
}
 

The above logic would enable you to see:
a) Which browsers people are switching from/to (s.propXX). This can help you plan future testing resource allocations, etc.
b) Which pages browser switches are commonly associated with (above logic does not show a direct correlation to a specific page, but you can store the final session page in the super cookie and use that to see if the user has made a browser switch on the same page, which may indicate a browser issue).
c) How many browser switches have occurred (s.eventXX)
d) How many users use multiple browsers (if you keep a common visitor ID across multiple browsers)

Hopefully this article has helped to show you how super cookies can be used to improve your Omniture Analytics deployment accuracy. For actual code examples, please see our original super cookie post or download the zip file below. For any questions or enquiries, please contact us at insights@datalicious.com

 

Click here to download:
Datalicious_Super_Cookie.zip (9 KB)

E*Trade: Omniture SiteCatalyst implementation review including media attribution and optimisation

Challenge

To quantify the impact of offline and online media spend on new customer acquisition, along with the construction of a reporting and analytics framework to continually optimise media budget allocation using a better understanding of customer vs. non-customer navigational paths. 

Solution

Major review and upgrade of the existing Omniture SiteCatalyst deployment to build a data collection foundation that could properly address the core business KPIs. A controlled display exposure test was used to quantify the incremental conversion uplift from online display advertising and to determine the real media cost per acquisition. In addition, a website entry survey was used to further analyse the impact of existing brand equity and offline media activity on online channels, specifically navigational search and direct to site visits. It was particularly important to look at the differences between customers and non-customers.

Results

E*Trade now has the ability to report on and de-duplicate conversions across all paid and non-paid media channels as well as to clearly differentiate between customers and non-customers. The marketing team can now not only optimise the company's media mix for maximum acquisition efficiency but also use the data to develop a smoother customer experience and media attribution model. The developed reporting and analytics framework provides the client with the ability to analyse a range of core KPI's on an ongoing basis, putting the business in an excellent strategic position moving forward.

Testimonials

"E*Trade Australia was originally looking for a provider who could help us optimise our media spend and Datalicious brought with them best practice analytics to demonstrate the true value of our marketing dollars. Since then, they have become a critical business partner in their support of our Omniture analytics implementation. They've provided great insights which have driven key business decisions." Trang Young, Senior Internet Marketing Manager, E*Trade Australia

 

Super Cookies example code using Flash local storage

What are Super Cookies?
Super cookies are a relatively new method of storing user information locally for usage in web applications. Users will be familiar with standard web cookies, which are used to store anything from session ID's through to personal information and usage information. Their downsides are many, mainly that they get deleted all the time, or are simply rejected based on the users privacy settings. Along with straight up rejection, cookies are also browser specific. If you're like me and switch from chrome to firefox to safari on a regular basis, then analysts are out of luck, each browser appears in reports as a different user. Just to compound those issues a little more, cookies are domain specific. With the exception of third party cookies (set on another domain), which are largely rejected these days, all cookies are stored under the domain the visitor is visiting. This is also the only domain that can access those cookies, which means sites or networks spanning multiple domains have major issues trying to pass information as users hop domains. 
Enter the Super Cookie...
Imagine you can set a cookie that is available across multiple domains and multiple browsers, with a high acceptance rate and a dramatically lower deletion rate. You can! Here are some of the advantages:
  • Flash cookies use the Flash local storage object (LSO), which is common to all browsers. 
  • Flash cookies are set on the domain the flash file was served from, so by serving from a common location, the cookies are available to multiple domains.
  • Flash has a 99% penetration rate (according to them - http://www.adobe.com/products/player_census/flashplayer/)
  • The cookie size limitations are far less restrictive than standard cookies.
  • Flash content is largely not controlled by browser privacy settings (yet). So the deletion rates are minimal compared to standard cookies
  • Flash can be used to back up standard cookies so they can be regenerated 

How to install?
We've created a very simple integration that essentially provides the ability to read and write cookies with just a few lines of code to be cut and paste, see below. For full details, please see the attached zip file with code and fully documented examples.
 
Essentially there are 3 steps:
1. Add the js and swf files to your server (see "Datalicious Super Cookie.zip" file)
2. Cut and paste the following code on your page
 
<script type="text/javascript" src="supercookie.js"></script>
<script type="text/javascript">
function dtFlashCookieLoaded(){
// Function triggers when the flash loading is complete. At this point you can read and write the super cookies. 
}
</script>
 
3. Once you have added the files and put the code on page, cookies can be read/written using two very simple javascript functions, as follows:
setSuperCookie(name,value);
getSuperCookie(name);
 
The dtFlashCookieLoaded() function is executed once the flash has loaded. If you have code depending on the flash read/write, you can put it inside this function or alternatively you can use this to set a flag to indicate that the flash object can now be accessed.
 
Custom Implementations
Datalicious provides consulting on web analytics, business intelligence and strategy. Feel free to contact us with any enquiries at insights@datalicious.com
 
 
Privacy controls
Lots of people are not happy about super cookies, the privacy concerns are obvious. In some ways i can support this notion, but as a web analyst i also see the benefits passed on to consumers by the better understanding of customers, and they are huge. We encourage businesses to be open and transparent about privacy. If you are concerned about privacy, please see the following Wikipedia article http://en.wikipedia.org/wiki/Local_Shared_Object
 

 

Click here to download:
Datalicious_Super_Cookie.zip (9 KB)

360 Omniture services from implementation consulting to fully outsourced platform management

Are you thinking about implementing one of the below Omniture Online Marketing Suite products or would you like an independent view on how to get more value from your current implementation? Is your company beyond passive web analytics and ready to implement a bid management, testing or merchandising platform? 

Then email us at insights@datalicious.com, we have significant experience in implementing and managing all parts of the Omniture Online Marketing Suite of products and would love to support your company in taking the next step in online business optimisation.

Read our case study: making Vodafone Australia datalicious, which ranks our implementation of the Omniture platform among the top 10 globally, if you're still hesitant about involving an independent 3rd party or are not quite sure about what kind of service to expect from Datalicious.

You might also be interested in our recent announcement of becoming the exclusive Atomic Labs Pion reseller for Australia, if web analytics tag maintenance or the increasing amount of mobile traffic from smart phones are a problem for your company. Pion is a new server based data collection method that allows you to populate your Omniture reports without ever having to touch your page code again. As Pion doesn't rely on JavaScript it also tracks all forms of mobile devices with or without JavaScript support out of the box.

Simplot: Omniture SiteCatalyst delivering advanced user preference insights from new recipe website

Challenge

Implement, maintain and manage an advanced web analytics platform to optimise media designed to driving website subscriptions and generate additional customer preference insights.

Solution

Design, implementation and ongoing management of Omniture web analytics platform across Simplot’s set of brand and recipe websites. The final solution enabled Simplot to enrich and verify their user profiles with website behavioural data, feeding into other research projects including the development of more accurate customer segments.

Results
 
Insights generated online are used by Simplot’s test kitchen team on an ongoing basis to further their understanding of the target market and actively shape the company’s product development strategy. Web analytics data has not only helped to improve the company’s search marketing performance leading to a significant increase in its recipe subscribers but also to analyse user preferences regarding recipes and ingredients as well as brands by customer segment. 
 

   
Click here to download:
Simplot_tag_clients_omniture_w.zip (1111 KB)

Tourism Western Australia: Omniture SiteCatalyst and Traction integration for smarter email targeting

Challenge

Implement, maintain and manage a combined email-marketing and web analytics platform designed to enhance visitor profiling and thus increase content relevance and user interaction.

Solution
 
Design, implementation and ongoing management of an integrated Traction email and Omniture web analytics platform. The final solution enabled Tourism WA to identify and profile individual travellers based on their campaign and website behaviour and allowed us to segment website visitors according to their specific destination interests as well as types of holiday packages.
 
Results

Using interest based customer segmentation with smart targeting and trigger based email campaigns we were able to increase email open and response rates by almost 100% compared to the travel industry average. Combining user profiles with website behavioural data generated valuable additional insights that will be influencing the planning and execution of future campaigns.
 

   
Click here to download:
Tourism_Western_Australia_tag_.zip (1957 KB)

Omniture Site Catalyst variable declaration and naming convention

So what's the big deal?
I continually get to look inside the Site Catalyst implementations of various companies as they struggle to extract value from the product. Those implementations are usually done in such a way that future upgrades are extremely painful and time consuming, if not virtually impossible. Javascript page tagging is messy, but you can make it much cleaner by following the tips below.

Standard Practice and why you can do much better
Most web sites have a block of Omniture variables declared in the page code. For example, somewhere in the body, you may see something like:

s.pageName="site:some page";
s.prop12="calculator";
s.eVar14="widgets";
s.events="event2";

Lets say that prop12 is looking at tool usage and eVar14 is looking at product category affinity. The above will work fine, the variables will be populated in the scode and sent with the request as expected. But what happens when a developer comes back in 2 years time and wants to switch the usage of eVar14 or prop12? The variables are hard-coded everywhere, they appear in lots of templates, a few microsites, and are straight hard-coded on some custom pages, it's a complete nightmare.

The Solution
Call the variables something meaningful to you instead, don't use the Omniture naming convention in your HTML, this makes future changes very messy. Once you have your own variable names you can then transfer the information to the relevant site catalyst variables in the scode file.

Useful naming convention has several benefits:
1. It makes sense to the developer and hence they are less likely to screw it up
2. If you later want to make a change, that's fine, you simply make one change in the scode file and all the old usage will cease immediately as the new usage takes it's place. Switching a variable for your whole site/s can be done in minutes.

Example:
On page:
s.pageName="site:some page";
scToolUsage="calculator";
scCatAffinity="widgets";

In the scode, inside the s_doPlugins(s) function:
s.prop12=scToolUsage;
s.eVar14=scCatAffinity;

In the scode, outside the s_doPlugins(s) function (this makes sure the variables are declared in case they are not declared on the page):
scToolUsage="";
scCatAffinity="";

What about events?
Many events are page related (i.e. a registration event is triggered on the registration confirmation page). So why declare it on page in the variable section? You may want to change it later. Again this is something that can be easily dealt with in your scode file. If you use good s.pageName notation, you can trigger events specifically when certain pages are loaded. Below is an example using the s.apl plugin to append event2 to the s.events variable whenever the pageName contains "registration-thank-you". If you later decide to change the usage of event2 you can once again make a single change in the scode file and you're done, you don't have to worry about searching for code across your site/s.

Example code inside the s_doPlugins(s) function:
var scRegistration=new RegExp("registration-thank-you");
    if (scRegistration.test(s.pageName)) {
        s.events=s.apl(s.events,'event2',',',1);
    };

In short, centralise all the code maintenance you can in your scode file, this makes your developers jobs easier and also provides the freedom and flexibility to make changes quickly moving forward. Secondly, the pageName variable should be your one constant on-page declaration, use it wisely and it can be very powerful. For more tips on s.pageName convention best practice, see our earlier blog post on top 5 tips for deploying Omniture SiteCatalyst. For more information on Site Catalyst deployments, drop me a line at hogilvy@datalicious.com

Datalicious to lead session on paid vs. free web analytics platforms at ad:tech 2010

Update: Check out the impressive list panelists including some of the best web analytics minds in Australia.

Make sure you mark the below date in your calendar if you're wondering what analytics platform to choose: Google Analytics or Omniture?
ad:tech 2010, Wednesday, March 17, 4:50pm - 5:35pm

Paid vs. Free: What Are The Best Analytics Tools For Your Marketing & Advertising Requirements?

  • Do you know what you need? What framework should you be using for comparison?
  • Free vs. paid for tools: what’s best for your advertising plan?
  • How do you leverage the support you get from paid for tools to ensure your marketing plan benefits?
  • Comparing local vs. global analytics tools in the market
  • What’s the best resourcing plan to get full potential from your data analytics tools?
  • What are you watching? Why? Who are you reporting that to?
  • What are the current limitations of social media metrics?
Have a look at the below conference schedule, looks interesting.
http://www.ad-tech.com/sydney/adtech_sydney_schedule.aspx

Atomic Labs Pion: Implementing Omniture without JavaScript page tags

Update: Datalicious now Atomic Lab Pion reseller and integration partner for Australia.

Is implementing and updating Omniture page tags an issue for you? Atomic Labs's Pion Reactors provides a solution to process your website and campaign data server side and then insert it via the Omniture API. They also currently support sending data to Google Analytics and Unica.

In contrast to using a central JavaScript file to dynamically populate the Omniture variables based on page URLs, the Atomic Labs software taps into the network traffic stream and can then use any text within the transmitted data to create/modify additional variables and events via processing rules. At the same time you can also enrich your visitors click stream data from the website with profiling information from your CRM database using simple SQL queries and all in real-time, a great first step towards single customer view.

Why would you want to implement this?

  1. Bypass your developers, staging, testing, etc. Increase your speed to new insights
  2. Deploy new analytics without risking errors on your web site
  3. Hide your tracking data from prying eyes
  4. Modify your CRM in real time. Create targeting algorithms to better serve your customer as well as lead queues for call center staff, all on the fly.
  5. Enrich your analytics with data you would not allow in javascript, such as "profit on a sale transaction".
  6. You won't lose data because of analytics request delays

Check out the Atomic Labs website below or email Hamish at hogilvy@datalicious.com for more information and implementation help.

Testing Javascript code live in production without affecting live traffic

Save yourself some time, reduce your frustration, remove code deployment risk and improve your insight by using our technique to quickly test and deploy new web analytics code on your site without the need for staged testing.

Fear driven motivation ...

Quite frequently we needed to test site updates on a staging server for fear of breaking the production site, upsetting customers and losing revenue. This seems like a really good idea, except that when the files are pushed live things don't always happen quite as expected. Staging sites are never the same as production, we've seen perfect copies have issues with cookies due to the different domain, poor version control, different asset location and other network issues like load balancing amongst a range of other problems, the bottom line is they are never the same, period. 

In addition to the testing issues, we also need to deal with the fact that assets like Javascript are cached by some browsers. Code roll outs are not immediate, but dribble out over a period of up to a month as browsers invalidate their cache. This is a scary proposition for people relying on the analytics data, especially when frequent updates are required. 

Efficiency driven motivation ...

In addition to this, for many of our clients (e.g. banks) we have rare deployment windows as far as 6 months in the future (yes this is not an exaggeration) and aren't allowed to test code outside their building. We have other clients where we need to send them code and wait for a testing response when they can allocate the resources. The feedback loop becomes very slow and sometimes very minor code issues can cause significant deployment delays. The loss in revenue and general inability to find answers to key business questions in a timely manner cannot be underestimated.

Our background is in analytics and strategy, so we're usually dealing with Javascript files for tracking purposes, but the same issues occur with all asset based code updates. We want a simple means to test and deploy new code without making any on page changes or requiring testing in a staging environment. Maybe i'm lazy, but i don't want to test the same code twice! This initially sounds a bit ambitious, but it's actually pretty simple.

The solution ...

We use a single controlling file to include all other Javascript assets. The single file has the ability to switch between different Javascript file versions based on the existence of a cookie (created from a URL parameter when testing is required). This single file is also utilised to control the file version of the asset files without making any on page changes.

Advantages

  1. No on-page changes are required for Javascript updates EVER
  2. All updated files roll out instantly to everyone, there is no caching lag. Roll backs are just as easy.
  3. Testing on the live site can be performed without ever affecting a single other user. Staging sites are not required.
  4. Testing can be performed remotely (wherever the production site is accessible).
  5. Risk of web site down time or customer irritation is greatly reduced.
  6. Time to go live is significantly reduced.
  7. Development costs are significantly reduced.
  8. Javascript file names can include a version number, this greatly reduces confusion around version control.

Implementation

If you know Javascript and you're looking for an example, check out below. If you need more explanation, then drop us a line.

A. CONFIG
- Production server base location (e.g. www.client-site.com/js/)
- Test Server A base loca tion (e.g. www.your-live-test-site.com/client-folder/js/)
- Test Server B base location (e.g. www.client-site.com/js/live-test/). Maybe they want to test too!
- File version (or name, e.g. scode-v1.js)

B. DEFINE INCLUDE FUNCTION and OTHER BASE FUNCTIONS
These functions include setting and retrieving cookies, reading URL parameters into variables and including other javascript files.

function gqp(name){name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var regexS="[\\?&]"+name+"=([^&#]*)";var regex=new RegExp(regexS);var results=regex.exec(window.location.href);if(results==null)return"";else return results[1];}
function setCookie(c_name,value,expiredays){var exdate=new Date();exdate.setDate(exdate.getDate()+expiredays);document.cookie=c_name+"="+escape(value)+((expiredays==null)?"":";expires="+exdate.toGMTString());}
function getCookie(c_name){if(document.cookie.length>0){c_start=document.cookie.indexOf(c_name+"=");if(c_start!=-1){c_start=c_start+c_name.length+1;c_end=document.cookie.indexOf(";",c_start);if(c_end==-1)c_end=document.cookie.length;return unescape(document.cookie.substring(c_start,c_end));}}return"";}
function include(filename){document.write(unescape("%3Cscript src='" + filename + "' type='text/javascript'%3E%3C/script%3E"));}


C. ADD LIVE TESTING FUNCTIONALITY
Some example code is shown below. The test URL parameter we're looking for is called "datalicious". So a URL like http://www.client-site.com/?datalicious=test will trigger the code to include from the test location instead of the production server. The default production code base is stored in a variable called "datClientCodebase"

var datURL=document.location.href.toLowerCase();
datTest = gqp('datalicious');
if (datTest == 'test') {
    setCookie('datCookie', 'test', 1);
}
if (datTest == 'client-name') {
    setCookie('datCookie', 'client-name', 1);
}
datCookieValue = getCookie('datCookie');
if (datCookieValue == 'test' || datTest == 'test' || datCookieValue == 'client-name' || datTest == 'client-name') {
    // This will use the test files on your server folder livetest
    if(datCookieValue == 'test' || datTest == 'test'){
        var datCodebase = '//www.your-server.com/client-name/js/livetest/';
    }else{
        // This will use the test files on the client-name server folder livetest
        var datCodebase = '//www.client-name.com.au/js/livetest/';
    }
} else {
    // Your server will use the production dir (this is done so you don't need a different file version on your
    //site), otherwise the client code base is used, which is the default normally
    if (datURL.indexOf('your-server.') > -1) {
        var datCodebase = '//www.your-server.com/client-name/js/';   
    } else {
        var datCodebase = datClientCodebase;   
    }
}

D. INCLUDE THE FILE
The following line of code takes the base file location and the file name (version), combines them and requests the desired file.

include(datCodebase + datScode);

E. TRIGGER
Now the file has been included, if there are any analytics functions, like with the Omniture scode, or google analytics page tracker, this part of the code can decide when these functions are executed. Normally we have conditions here so the function can be triggered at either the top or the bottom of the body.

F. CALL THE CONTROLLING FILE
Your web sites can now include this base file, but we recommend you use a cachebuster to ensure any updates you make the to base file propagate in a timely manner (we use 24 hours, but you can set to whatever you want). A code example is shown below, this would appear on all site pages:

<!-- BEGIN CACHE BUSTER -->
<script type="text/javascript">
var cacheBuster="";
var cbd=new Date();
var cbm=new Date();
var cby=new Date();
cbd=cbd.getUTCDate();
cbd=cbd.toString();
cbm=cbm.getUTCMonth()+1;
cbm=cbm.toString();
cby=cby.getUTCFullYear();
cby=cby.toString();
cacheBuster=cbd+":"+cbm+":"+cby;
</script>
<!-- END CACHE BUSTER -->

<!-- BEGIN INCLUDES -->
<script type="text/javascript">document.write('<scr'+'ipt type="text/javascript" src="//www.client-site.com/js/datalicious.js?cb='+cacheBuster+'"></scr'+'ipt>')</script>
<!-- END INCLUDES -->

Email Hamish at hogilvy@datalicious.com if you need help with your implementation.