Saturday, June 9, 2018

Accelerated Mobile Pages Adobe Analytics Tagging

A few months ago, I participated in a "Hackathon" at work and was tasked with creating a technical guide outlining how to set up Launch by Adobe on Accelerated Mobile Pages (AMP). In this post, I'll share a link to the tech guide I worked on as part of the Hackathon as well as cover basic Adobe Analytics link tracking on AMP pages. 

According to the official AMP website, AMP is an open-source library that provides a straightforward way to create web pages that are compelling, smooth, and load near instantaneously for users. AMP pages are just web pages that you can link to and are controlled by you. One of the reasons why these pages are "compelling, smooth, and load near instantaneously" is because they don't run any JavaScript. 

Digital Analytics tags as you already know, rely almost entirely on JavaScript and not having it enabled introduces a lot of implementation challenges. This post covers two different methodologies by which we set up Adobe Analytics page load and link tracking using AMP. I'll also share links to some sample pages with you for you to set them up on your end. Let's dive right in!

AMP Pages Tagging via Launch by Adobe

Before we get started, it's important to call out that this method supports the Visitor ID Service, Adobe Analytics page view tracking and Adobe Audience Manager. Adobe Target and link tracking are not supported with this approach. 

Here's a link to the public facing technical guide I created that walks through how to do Adobe Analytics page load tracking on AMP pages. I'm going to reference certain components from it in this section.

Validate AMP Syntax

The first step is to make sure your site is compatible with AMP. To do so, paste your code into the AMP validator code editor. Below is a screenshot from the validator site showing that my test page passed (click on the image to enlarge) the syntactical check on the validator site.

Add References to Libraries

We need to reference a couple of JavaScript libraries which are compatible with the AMP platform. These are pasted below and highlighted in the screenshot. Make sure to reference these correctly as shown in the screenshot.

  • (Mandatory file for any kind of analytics tracking in AMP be it Adobe Analytics or Google Analytics.)
  • (Required if you want to setup Adobe Analytics using any Tag Management solution such as Launch by Adobe)

Leverage  the "adobeanalytics_nativeConfig" Template

This is the most important step in the overall configuration. This method makes use of the "adobeanalytics_nativeConfig" template to host the Launch by Adobe library in an iframe as well as outputs meta data required to pass data over to the Analytics tag.

There are two main components of the code as shown in the sections highlighted below.

This is where the iframe (Red) is added and meta data (Blue) to pass along

The "iframeMessage" section (Red) contains the link to the iframe URL along with additional data points such as page URL, referring URL etc along with the iframe domain which in this case is my blog. The next two screenshots see how "iframeMessage" is linked to a separate "iframe" page on my blog.

The "extraUrlParams" section (Blue) contains any meta data you want to pass along to the Tag Management tool and eventually to your Analytics solution. We can think of this as a virtual data layer. is where the Launch library is hosted

The HTML of the iframe page is very simple where all we've included is the Launch by Adobe library code.

HTML of the iframe page reference added here

Setup Adobe Analytics Extension in Launch

Install the Adobe Analytics extension in Launch.

Create a data element to override the page URL to capture the parent page URL instead of the iframe URL.

Validate Adobe Analytics on the AMP Page

Here's a link to a couple of simple AMP pages which when hosted on a server, will fire the Adobe Analytics tag as shown below.

Caveats with this Approach
  • This method doesn't work on Adobe Target due to the iframe
  • Link tracking doesn't work with the "adobeanalytics_nativeConfig" template

Link Tracking on AMP Pages

This section is based off the instructions provided in the official Adobe documentation. I've added a simple addition to show how to fire off events as a client asked about it which are not listed on this page. Let's go through the setup.

Link Tracking Code Setup

The screenshot below shows the code that we need to use to setup basic image pixel based page load and link tracking on AMP pages. At a high level, there are three main sections in the code.

  • The "requests" section (Red) contains a definition of various Adobe Analytics variables that are referenced for the page view and link tracking image requests.
  • The "vars" section (Blue) contains variables that are mandatory to send the image request such as tracking server and report suite.
  • The "click" section (Orange) is where we define all variables needed to be sent as part of the link tracking call.

Validate Link Tracking

Below is a screenshot that shows the Adobe Analytics link tracking call.

Caveats with this Approach

There are lot of issues with this method which are taken from the test page hosted on Adobe's Github

  • Visitor/visit counts will be hyper inflated.
  • Visitor ID Service is not supported.
  • No way to tie a visitor back to the originating site (no measuring new vs repeat visitors or user acquisition).

Given that the link tracking method on AMP causes visitor duplication, my recommendation is to go with the first method which leverages an iframe. How are you tracking your AMP pages?

Monday, May 21, 2018

Adobe Audience Manager Campaign Template

The most common use case for any DMP is campaign activation, where the DMP acts as the intermediary layer between the client's website or CRM system and the Demand Side Platform to share audiences across. In such cases, it's imperative that we have a very well defined process and structure to get these campaigns launched. 

My colleague and I created a simple, yet detailed template/checklist for documenting everything from business requirements to all the nitty gritty details required for successfully launching a campaign using Adobe Audience Manager. Below is a screenshot of the template. Please click the image to get an enlarged view.

The template is divided into three main categories and has a lot of different steps but I'm only going to cover the ones relevant for this post as the other ones are self-explanatory. Let's take a look at some of these categories in detail.

Business Requirements (5 Business Days)

This is the first and most important stage in the entire DMP->Campaign workflow. This involves everything from defining your goals to determining the granularity of your incoming media data. Let's dive into the details.

  • Key Business Objectives (KBOs): For any analysis project, product or campaign to be successful, business objectives or goals need to be defined before getting started. In case of campaigns, there are a lots of different factors involved such as strategy, budget, targeting platform and many others that are outside of the scope of this article. For a DMP, we'll stick to overall objectives and the marketing channels such as display, search, email, social, personalization etc) as well as others included in the template.
  • Key Performance Indicators (KPIs): Once we know the goals, we need to determine the KPIs that'll be used to measure success such as Clicks, Impressions, Click Through Rate (CTR) and other website/app success metrics. These KPIs are instrumental and should tie back to the goals.
  • Target Audience: We need to determine what kind of audience will be targeted for the campaign. It can be anyone between the ages of 18-35, male or female, tech professionals, government officials, income > 100K per annum, location etc. Again, it all has to tie back to back to the overall business objectives.
  • Duration and Dates: Some businesses are seasonal and others are not but there's never a bad time to bring in new customers. It's very important to know when the campaign will run and for how long as timing is everything. Knowing how long the campaign will run can help us estimate how much traffic we'll drive as well as gauge the critical mass to determine success.
  • Identify Destinations: This involves documenting which Demand side platforms will be used to run the campaign. Some examples of DSPs are Adobe Ad Cloud, DoubleClick Bid Manager etc. which already have a server to server (S2S) integration with Audience Manager. There are other platforms which may not have a S2S integration so we need to know what those are so in advance that we can determine the best approach to send data to them. Outside of S2S destinations, we can share AAM data via data exports, cookies and pixels.
  • Data to be Shared with DSPs: We need to identify what kind of data (1st or 3rd party) has to be shared with the DSP. For prospecting campaigns, a very common use case is to purchase 3rd party data from the Adobe Marketplace which is a platform that allows marketers to purchase new audiences from data providers such as Acxiom and Dun & Bradstreet. In other cases, a marketer may want to retarget their existing customers who exited the site before submitting a lead.
  • Data to be Brought into AAM: Every DSPs captures media data at a click and impression level at the very least so we need to determine how will that data be brought into AAM. Data can be brought into AAM either via pixels or by ingesting Ad Server logs. Recent changes around GDPR readiness will impact log ingestion for global companies with European customers so it's important to gauge your ingestion approach beforehand.
  • Define and Receive Media Taxonomy: Finally for the requirements phase, we need to define and lock down our general taxonomy to structure the data in AAM. The campaign owner needs to send over the campaign ID, site, placement etc. matrix. This involves determining the granularity of data required to bring into the DMP. As an example, if you only care about measuring data up to the site level, it may not make sense to capture data at a placement level as it'll be too granular and will result in wasted effort.

Setup and Launch (6-7 Business Days)

This stage involves the operational and technical setup within AAM to prepare for the campaign. This also involves communicating with the campaign owner to receive the campaign taxonomy matrix that contains campaign ID, site, placement etc. information that is used to build traits and segments in AAM. Let's take a deeper look.
  • Send AAM pixel documentation (If applicable): Based on the campaign matrix received from the campaign owner, the AAM consultant creates a pixel documentation and tailors it to match the taxonomy requirements. This involves defining both click and impression level pixels that will be setup in the DSP. Please note that this is not a required step if you're already ingesting Ad Server log files but will be required if you're planning to deploy media pixels.
  • Trait and Segment creation: This step involves creating AAM traits to capture track audiences (1st or 3rd party) for activation in the DSP as well as traits to capture media performance. Activation specific traits are tied directly to the target audience defined in the business requirements state and media performance traits are either tied directly to media pixels or conversion activity on the site. It's a good idea to create both kinds of traits. Once the traits are created, map them to segments as that is how data is shared with external partners. Please note that both traits and segments take about 24-48 hours to initially start populating data and are then populated daily so timing is everything.
  • Pixel validation and sign-off: The campaign owner sets up the pixels in the DSP and shares the pixels with Adobe for validation. The AAM consultant validates the pixels, monitors data in the traits and provides their feedback or sign-off.
  • Map Segments to Destination(s): Once the traits have been setup and validated, we map the segments over to the DSPs and destinations which will be used to run the campaign. It's critical to map the segments at least 3-5 days before campaign launch so that we have enough time to validate data flow and fix any issues with the integration.
  • Campaign Launch!


Once the campaign has launched, we need to start our post-launch activities which revolve primarily around reporting. Let's take a look into what some of these steps entail.

  • Monitor data: This step involves monitoring media traits and segments right after launch to make sure we're capturing data as expected. The other reason why monitoring reports is important because AAM samples certain reports such as the Overlap report that requires a minimum threshold to populate so it's important to assess it early on. 
  • Audience and Overlap report analysis: The last step is to analyze campaign performance in the Audience Optimization and Overlap reports. The Audience Reports are helpful in gauging overall segment performance, volume, trends and optimal frequency. The overlap reports help in identifying high overlap (less reach) and less overlap (high reach) which can be helpful in both prospecting and finding our commonalties. Finally, it's important that you leverage other reports in the DSP and your Analytics tool along with AAM to get the complete picture.

This is a good starting template for documenting and tracking all campaigns being activated from AAM. It will continue to evolve and get better as we start using it for more campaigns and as we get feedback from clients. Currently, this template is in excel format and needs to be created separately for each campaign but at some point we'll probably move it to SharePoint or some other online tracking platform. Feel free to contact me if you need a copy of this template. Out of curiosity, how are you tracking campaigns for your business?

Sunday, May 6, 2018

Migrate legacy Adobe Visitor ID to Experience Cloud Visitor ID

The Adobe Experience Cloud ID Service (formerly known as the Marketing Cloud ID Service) has been around for more than three years now but there are some Adobe Analytics customers who are still on the legacy visitor tracking system. This post covers the various steps involved in migrating from a legacy Analytics tracking solution to the new Experience Cloud Visitor ID Service.

The Experience Cloud Visitor ID Service leverages a common and universal cookie identifier across all Adobe solutions that enables us to seamlessly integrate Adobe solutions with each other.

The Visitor ID service provides the following benefits:
  • As explained above, the ID service provides us with the benefit of seamlessly integrating all Adobe solutions which isn't easy to do with the legacy visitor tracking solution.
  • Visitor ID service enables the Adobe Experience Cloud Device Co-op which is a feature that allows subscribed customers to identify customers across devices and mobile apps. Device co-op also provides customers with the “People” metric that shows a deduplicated count of your users across multiple devices.
  • It enables Customer Attributes that allows customers to upload offline CRM data and tie it to online behavioral data.
  • Customers can leverage the latest video Heartbeat tracking that provides a lot of functionality to track media events across multiple video player formats.
  • It sets a first party cookie (AMCV) that is less susceptible to deletion. The legacy visitor tracking method (by default) sets a third party cookie that is more likely to be deleted by browsers, firewalls and ad blockers. This benefit may not apply to customers who leverage a CNAME as the tracking server where they set the cookie on their own domain.
  • It removes the need to get tracking servers migrated to a CNAME (E.g. which would otherwise require additional support from the network operations team. This benefit only applies to customers who are already on RDC (covered below).

Before we proceed, let's first take a look at the various cookies involved in this process. 
The following table shows which cookies & IDs come into play during the Visitor ID migration. Please click it to enlarge if you're unable to see it clearly.

Now that we've looked at the various cookies involved, let's go through the steps we need to follow to migrate to the new Visitor ID service.

Migrate Tracking Server to RDC

Visitor ID Service requires the tracking server to be migrated to RDC (Regional Data Collection) which is a network of data collection servers that are faster, safer and more reliable compared to the older data collection servers. RDC connects to the closest data center thereby reducing response times of image requests and incorporates load balancing to switch servers in case of a failure. 

The RDC domain is on "" as opposed to the legacy "" domain so it's always a good idea to check if you're already on RDC ( or The steps outlined in this Adobe article shows you how to check if your tracking server is on RDC or not.

If you're on the legacy domain then you will have to switch your tracking server entirely or if there are other domain change scenarios involved in your case, then follow the steps outline in this Adobe article to proceed.

If you're already on CNAME pointing to legacy servers and don't plan to change your tracking server, then you will follow the following steps:

  • Contact Adobe client care to request a migration to RDC by providing them with your existing CNAME based secure and non-secure tracking server names.
  • Customer services provides you with the new RDC tracking server hostnames which will end with
  • Contact your network operations team to redirect your CNAME tracking servers to now point to the new RDC ( domain.
  • Finally, test your tracking servers by pinging them and validating if they're redirecting to the domain as described in this article.

Setup Grace Period

A grace period typically setup for 30/60/90 days is put in place when customers want to continue leveraging the legacy analytics s_vi cookie in place of the new AMCV cookie set by the Visitor ID service. This is most commonly put in place if certain areas of the website have an older code version that cannot upgrade to the Visitor ID service and the implementation is leveraging a global report suite. The reason why it's necessary to put a grace period in place so that we don't see visitor "cliffing" or inflation in visitor & visit counts. That's because the Visitor ID service leverages a new cookie to track visitors and will probably count a repeat visitor as a new visitor. A grace period can also be setup for a company that wants to avoid visitor "cliffing" as they prepare to factor in the eventual visitor & visit inflation. 

To request a grace period, contact the Adobe client care team and provide them with the following information:
  • Experience Cloud or IMS Org ID
  • Company Name
  • Data Center
  • Date to start Grace Period
  • Grace Period Length (Up to 180 days but can be extended)

Setup Visitor ID Service

Once a grace period has been put in place by client care, work with your IT team to setup the Visitor ID service. Here's an example from the Launch by Adobe Tag Management tool to show the Visitor ID service extension. Notice that the we have to put in the Experience Cloud Org ID and populate the secure and regular tracking server fields (highlighted in Red) to setup the Visitor ID service which is required to get grace period to work.

Once the ID service is setup, you will start to see the new first party AMCV cookie and third party demdex cookie appear in your browser instead of the legacy s_vi cookie. However during a grace period, the s_vi continues to be set and is populated in the AMCV cookie to avoid visitor & visit inflation. Below is a visual that explains how cookies are set during a grace period.

Source: Adobe Blog


The next step is to validate the grace period. This is done by checking if the "AID" and "MID" parameters appear in the Analytics image request. The "AID" will contain the Visitor ID value from the s_vi cookie and will continue to be set till the grace period is active. This screenshot shows what the image request during a grace period looks like.

Prepare for the Inevitable

Finally, the most important step is for you to internally prepare your organization for this change as it's a revamped methodology to track visitors and at some point, you will have to confront the reality of visitor inflation when the grace period is turned off. Please note that this visitor "cliffing" will ONLY impact repeat visitors as new visitors will automatically get the new AMCV cookie. 

It might be a good idea to estimate how much impact this change will have on your visitors & visits based on your repeat visitors. If you're on the grace period for 180 days and turn it off after that, what % of your repeat visitors come back to your site or app after 6 months. This number will vary based on the kind of business you're in so all in all, you need to weigh the pros and cons and determine when you want to take the plunge.

So, that was it! If you're already on the Visitor ID service and don't have to deal with any of these outlined steps, then Congratulations. If not, then I'd highly encourage you to give a serious thought to proceeding with it as it will be worth it if you're an Adobe Experience Cloud customer.  

Saturday, May 5, 2018

Launch by Adobe iFrame Page

Test Post to host AMP page Launch library

Test page created to host Launch by Adobe library for AMP.

Sunday, April 22, 2018

Key Adobe Audience Manager Metrics and Ratios

Each reporting system has its own methodology for calculating metrics and a Data Management Platform is no different. When I first learnt Audience Manager, one of concepts that took me a while to understand was how Audience Manager calculates its metrics and this post is intended to cover how it's done.

To begin, it's important to understand that all key metric calculation in Audience Manger is based off devices and cookies so AAM doesn't taken into account raw hits into its calculation. Below is a summary of how each of these are calculated taking into consideration the following visuals.

Trait Metrics

AAM traits are the most granular data points or signals that are populated in Audience Manager. They represent unique visitors that are calculated based off cookies or devices. Please note that by default, a trait may count the same person multiple times if that person qualified for a segment across multiple devices.

Unique Trait Realization: This is the total number of visitors that qualified for a trait on the specified time frame (1 day, 7 days, lifetime etc). This is the typically the preferred metric for gauging active visitors. An example of a trait can be visitors to a particular URL or visitors who completed a purchase. In the screenshot above, 18,981 visitors qualified for this trait during the last day and 2,791,994 visitors have qualified for this trait since it was created.

Total Trait Population: This is the running total number of visitors that are part of this trait since creation based on the specified time frame. In this example, a total 2,539,320 visitors were part of this trait as of yesterday and 2,590,249 visitors were part of this trait in the last 7 days. The reason why the lifetime count of visitors (2,775,871) for this metric is less than that of Unique Trait Realization (2,791,994), is because this metric starts getting calculated after a gap of 24 hours compared to UTR.

Segment Metrics
Segments are built from a combination of individual traits and are shared as audiences to outgoing destinations for activation. If multiple traits mapped to a single segment have the same cookie or device, they are deduplicated at the segment level. Segments can either contain multiple traits or can contain an overlap between two separate traits among other conditional logic.

Real-time Segment Population: This the total number of users who qualified for a trait(s) based on the specified time frame. Similar to UTR, this number will change everyday based on how many users qualified for this segment. In this example above, 54,377 users qualified for this segment during the last day.

Total Segment Population: This is the overall segment population which were part of this segment based on the specified time frame. In this example, there were 4,633,044 unique visitors that were captured across multiple traits which is why the overall volume of segments is more than that of traits.

Destination Metrics & Ratios

Destinations allow segments to be mapped and shared with various outbound partners or DSPs for activated. The following metrics and ratios fluctuate everyday based on how many users have a match between Audience Manager and the DSP.

For this example, I've used an older screenshot with dummy data as I didn't want to use an example from an actual client. Please note that the following screenshot doesn't reflect what the UI looks currently and some metric names will not match entirely so my apologies.

Addressable Audience Match Rate: This is the percentage of visitors that have a device match/sync between the customer's Audience Manager instance and 3rd party partner to be activated on. It is the calculated as ratio of (Customer Addressable Audience [676,173,551]/Customer Total Audience [1,428,072,915]). The higher the match rate, the more the visitors that can be targeted in the DSP and in this example, it's 47%. To increase match rates between AAM and the DSP, the Adobe consultant turns on an ID sync in the backend. Some causes of low match rate are explained here.

Customer Addressable Audience (Devices): This is the total number of visitors that have a device match/sync between the customer's Audience Manager instance and 3rd party partner. The Customer Addressable Audience count shown in the screenshot is 676,173,551 visitors for the last day.

Customer Total Audience: This is the total number of devices that are active in the customer's Audience Manager instance. In this example, the total active devices are 1,428,072,915 which will fluctuate daily.

Audience Manager's Addressable Audience (Lifetime): This is the total number of devices that are active across all Audience Manager customers. Please note that this number will always be more than Customer Total Audience for a particular client account unlike the screenshot above which contains dummy data.

Segment Addressable Audience (Devices): The total number of users who have an active ID sync  for the specific AAM instance localized for a mapped segment. Unlike in the screenshot, this number will vary by each mapped segment which is 123,456,789 for the example.

Segment Match Rate: This is the percentage of Segment Addressable Audience/Total Segment Population. This match rate is more reflective of how many users can be targeted than the Addressable Audience Match Rate.

Profile Merge Rule Metrics & Ratios
Profile Merge Rules or PMRs uniquely identify a user across browsers or devices that allows marketers to deliver a consistent message to their customers. This is made possible by capturing the user's hashed authenticated ID across devices.

Total Devices: T
his is the total number of devices where a hashed authenticated user ID was captured in the last 60 days. In this example, the total number of devices is 3.69 Million.

Total Person: This is the number of unique users where a hashed authenticated user ID was captured across multiple devices. In this example, the number of unique users is 3.32 Million which is less than the total number of devices.

Average devices per Person: This is the ratio of Total Devices/Total People. In this example, an average user logs in across 1.1 devices which rounds up to a single device. Marketers can use this ratio to determine the total number of devices a user logs into.

Active People: This is the number of unique users where a hashed authenticated user ID was captured across multiple devices. It's the same metric as Total Person which is 3.32 Million.

Cross Device: The total number of Cross Device IDs stored for the selected Authenticated Profile since creation. It's basically the total devices in an Audience Manager Instance. In this example, it's 6,711,719.

Active People %: It is a ratio of Active People divided by Cross Device. In this example, it's 50%.

Some of these metrics are already explained in the official Adobe documentation in different places but I've attempted to structure and put them in one post based on my own understanding.

Sunday, April 8, 2018

Characteristics of a Successful Consultant

A few people outside of my field have often asked me about what I do professionally. My general response to them is that I work on solving enterprise client problems in the digital analytics space. I know this a general answer and can apply to different roles but this post aims to uncover what roles I (consultant) usually perform and what are some traits a consultant needs to have to do well.

So, let's start with a question. Why do companies bring in consultants? 

  • They bring in consultants to provide them with the necessary expertise on skills that they don't have
  • Identify problems that they may not be aware of
  • Bring about change as a consultant will provide recommendations impartially. This is an important one as a good consultant isn't scared of the repercussions if the recommendation is for the benefit of the customer.  

Now that we've discussed about the demand for consultants, let's take a look at some of the traits that make a successful consultant:

Passionate about Client Service: In my opinion, this is the most important trait for any consultant to have. Whether a company is B2B, B2C or both, it's the client that every business services. As they say, client is king so consultants needs to understand customer goals, expectations, and vision by listening and asking good questions. Once consultants know that, they should strive to become advocates on behalf of their clients to accomplish these goals.

Dispassionate in Providing Recommendations: As discussed above, companies bring in consultants to have them impartially give their recommendations without any fear. A good consultant knows how to tailor the message in such a way that logically explains WHY the recommendation is good for them and if they can add some sort of a ROI to it, even better!

Think Strategically AND Act Tactically: Good consultants need to be strategic (long-term) and tactical (short-term) in their thinking. A good consultant is able to perform day to day activities while working towards the larger vision by defining processes that will benefit the customer in the long run.

Know the Audience: As with analytics, it's essential to tailor analysis according to the audience. Same applies with consultants when communicating with our stakeholders where they should be able to deliver tedious details to C level executives at a high level and go into the weeds with technical stakeholders.

Set Clear Expectations: Consultants are often asked to step into projects where expectations are generally unclear and they need to make sense of the craziness. A good consultant is able to navigate the choppy waters and logically define what success looks like. In such scenarios, consultants need to have the confidence to tactfully push back on unexpected asks and work on what will make the most sense for the success of the client and project.

Master a Skill and Yet Be Broad: Good consultants not only master a particular skill but are also well rounded professionals. In my case, my primary expertise is in Adobe Analytics (along with Google Analytics) but I also work on projects requiring tag management/little bit of programming (JavaScript, Tealium, DTM, Launch and Ensighten) and data management (Adobe Audience Manager) support. The good thing about having multiple skills is that you open up additional opportunities for yourself and set yourselves apart from others.

Wear Multiple Hats: Consultants know that no two projects are going to be the same and a lot of projects won't have any kind of structure. In such cases, consultants may need to play the role of a project manager to create a simple project plan, gather business requirements, create architectural designs, write code, QA the output and finally communicate the recommendations to the stakeholders.

Be Personable and Build Relationships: While working on tough and tedious projects, it's easy to get focussed into the weeds and not engage with your customer personally. It's always a good idea to take a step back and connect with your customers on a personal level as these relationships can last a long time and you want to leave a lasting impression on them whether you're on or off the project.

There some other traits that consultants should have aside from the ones mentioned above such as: 
  • Be proactive
  • Establish themselves as experts
  • Be willing to train other and share knowledge
  • Be prepared to step out of their comfort zones
  • Push themselves to get stuff done
I'm sure there are other traits that are not listed here and I'll appreciate your comments based on your own experience.

Sunday, March 25, 2018

HTML5 Video Tracking using Launch by Adobe

Tracking interactive media such as video is often a mandatory requirement for clients as they want to gauge the effectiveness of media on their website or app to influence ad revenue or sales. Companies like Youtube, Hulu, ABC or Comcast put a lot of emphasis on tracking video metrics. More the video views, more their ad revenue so it's usually one of the first platforms they want to measure.

Tracking video players typically requires developers to embed code into the video player and fire off tracking beacons triggered from an analytics platform's plug-in. Plug-ins such as Milestone (legacy) and platforms such as Heartbeat (latest) for Adobe Analytics allow clients to track video on their website. Every video implementation I've been involved with (including HTML5), requires both the developer and the technical consultant to implement custom JavaScript logic within the video player and Tag Manager respectively.

Recently, I was involved in helping a client migrate from their legacy (H) code's Milestone tracking code hosted via on-page Analytics code onto the latest analytics (AppMeasurment) library in the Launch by Adobe tag management platform. Sounds simple right? Nope, as their video player (HTML5) had a ton of JavaScript code embedded within the video player and in the analytics configuration file. After looking into our internal documentation, it was apparent that there was no easy migration path as their Milestone library was implemented along with the legacy analytics H code and isn't compatible with the newest AppMeasurment library. The other thing that was challenging is that Milestone video tracking method is no longer supported by Adobe.

This prompted me to host a HTML5 video player with NO video related JavaScipt code, I repeat NO embedded JavaScript code on my own sandbox environment and implement a basic instance of the Launch Tag management solution with AppMeasurement. After validating the approach, I asked the client to implement the same methodology on their own website and it met their requirement.

Please note that to capture video name, I updated the video ID in HTML to capture a user friendly video name that is the only piece of video related 'code' I added on the page. The other thing to keep in mind is that my approach leverages link tracking events to track video events. Below are the steps I took to track metrics such as video start, video 25%, 50%, 75%, 100% complete and dimensions such as friendly video name and others.

Inject Launch by Adobe async JS library: Adobe recommends injecting the async Launch library in the head of the page as it's faster and non-blocking.

Implement AppMeasurement code in Launch: Implement the latest AppMeasurement code in Launch which is what I did for my client. Here's a general screenshot of the extension.

Track Video Name in Launch: We create a data element to capture the video name using the video ID HTML tag where we embed a friendly name. There are other approaches to grab this from the page by writing custom code but I did this to make the migration process seamless for my client. Below is a screenshot of what the video ID looks in the HTML.

Next, we create a simple data element in Launch where our data element captures a "DOM Attribute" called "video" as shown below that is tied directly to our HTML.

Create a Rule to track Video Start: Once we've setup the data element to capture the video name, we now need to setup individual rules in Launch to capture video events. The first video event we want to create is the video start event where we trigger the video event when 1% of the video has been viewed. This made sense to my client as he agreed that unless a user has viewed 1% of the video, it's not really a 'true' video start. So in the scenario, we'd choose the "Data Element Type" as "Media Time Played" triggered when 1% of the video has played. I've added a caveat at the end of the article to explain why we didn't use the "Media Play" event type.

Next, we scroll down to the "Actions' section to set our analytics variables and send a beacon for the video start event as shown below. Please note that we need to do this for each rule we'll create for tracking video events.

The next two steps show what we need to populate in the "Adobe Analytics - Set Variables" and "Adobe Analytics - Send Beacon" actions. Please note that we've defined unique analytics events for each milestone event and an eVar to capture the video name.

Create Rules to track Video Milestones 25%, 50%, 75% Events: We now setup milestone events to track 25%, 50% and 75% complete video events which is a very common tracking requirement for videos. The screenshots below show how we set it up for 25% video complete event but the same steps need to be followed for 50% and 75% complete events where the 25% trigger needs to be replaced with 50% and 75% accordingly.

Create a Rule to capture Video Complete: The last step is to capture the video complete event that can be captured by choosing the "Media Ended" event type in the rule as shown below.

Validate the Video Events: We now test our setup by loading the video in a browser and filtering for "/b/ss" which is a filter we apply to test the Adobe Analytics image request. In the following screenshots, I've included analytics image request for video start, 25% complete and video complete events.

The very last step of the process is for us to validate the data in the Adobe Analytics UI. The following screenshot shows how the report will look like with all video events successfully setup.

Finally, I want to add a few caveats about my post as video tracking is generally very involved:
  • HTML5 is typically the easiest video player to implement analytics tracking on but other players like Brigtcove, YouTube or JW Player may not work with this approach as they are not directly part of the HTML like HTML5 is and typically require additional JavaScript code embedded in the player and page. For other players, it is recommended to use the Heartbeat or traditional video tracking methods.
  • My method fires the video start event when 1% of the video is completed so if a video is 10 minutes long, it may take 6 seconds to fire the start event. "Video Start" event type in Launch on the other hand, triggers a beacon every time a video is played which causes duplication of the start event. 
  • There are many other attributes that are associated with video that are not tracked here. Some of them are Content type, Player name, Show/Episode name/Season (TV shows) or Ad related attributes tied to a campaign.
I hope you like this post but I'd like to know if you have alternative ways by which you track video players. As always, comments and feedback is welcome.