AdWords: Why aggregate data can be misleading

When making decisions based on your Google AdWords account performance, don’t just look at overall account performance. It is very important to get more granular in your analysis.

Consider this scenario

You are willing to spend up to 20% of your product’s price to make a sale. (Maximum % Cost of Sales = 20%). You’ve spent $10,000 in a given period and generated $100,000 in sales. Great! Your advertising’s cost is 10% of sales, well below your 20% maximum. Your account is performing great!

SPEND SALES % COST OF SALES (COS) PERFORMANCE
ACCOUNT $10,000 $100,000 10% Great!

Based on this you decide to increase your spend by an additional $10,000, with the hope that doubling your spend will double your sales. Unfortunately, this doesn’t happen, and you only generate another $25,000 in sales.

SPEND SALES % COS PERFORMANCE
ACCOUNT $20,000 $125,000 16% Good. But not Great.

Why doesn’t it scale?

The problem is that your account performance is not even. Every dollar spent is not generating the same revenue. If we take another look at the initial account, this time with the underlying campaigns visible, it might look something like this:

SPEND SALES % COS PERFORMANCE
BRANDED CAMPAIGN $2,000 $80,000 2.5% Great!
UNBRANDED CAMPAIGN $8,000 $20,000 40% Underperforming
ACCOUNT TOTAL

$10,000

$100,000 10%

The performance of the Branded Campaign is subsidizing and hiding the not-so-good performance of the Unbranded Campaign. Your spend and sales are following a typical 80/20 split: 80% of your sales are coming from only 20% of the spend, and the remaining 80% of your spend is underperforming.

Now that you have this additional information, your budget conclusions are much different:

  1. Decrease spend on your Unbranded campaign (and optimize or segment further)
  2. Increase spend on your Branded campaign.

However, your branded search spend is usually a function of search demand for your brand. Once you are capturing 100% of your search demand, you can’t really scale up any higher. If you want to increase your spend, the only place where you might be able to put the extra spend is the already underperforming unbranded campaign, which will lead to something like this:

SPEND SALES % COS PERFORMANCE
BRANDED CAMPAIGN $2,000 $80,000 2.5% Great!
UNBRANDED CAMPAIGN $18,000 $45,000 40% Underperforming
ACCOUNT TOTAL

$20,000

$125,000 16%

  Summary

  • Avoid making account wide budget decisions on aggregate data. Always try to dig a little deeper.
  • Don’t let underperforming segments ride the coat tails of your top performers. Look for 80/20 campaign and ad group performance and analyze those individually.
  • If you have a single campaign with a single ad group, your Branded and Unbranded searches are likely lumped together. Split them apart into separate ad groups.

Shopify: Fix your Google Analytics Product Performance Reports

The Problem: By default Shopify includes product variant details in the product’s name when it sends e-commerce data to Google Analytics, . If you sell clothing ,or shoes, or other products with color and size variants, then your Product Performance Report becomes too granular.

ga-productperformance-productname

How Shopify data shows up by default in Google Analytics. Notice that the various “Trillium Parka” variants are ungrouped because the size and color information is in the product name. This makes it difficult to see aggregate data for all variants of this product.

This is a bug, because there already exists a “Product Variant” field in Analytics, and it is already being properly populated.

The Solution:
Google Analytics Custom Data Import

The solution to this problem is to overwrite the Shopify data using the Custom Data Import tool.

Step 1: Export your Product Data

First we need to export all our product data – you can use a similar technique to generating your own custom Google Shopping Product Feeds to build a CSV export file.

a. Create a new Collection Template

Call the new collection template csv-ga-product-feed and paste the following code:

{% layout none %}{% paginate collection.products by 1000 %}ga:productSku,ga:productName,ga:productVariant{% for product in collection.products %}{% for variant in product.variants %}
{{ variant.sku }},{{ product.title | replace: ',','' }},{{variant.title | replace: ',',''}}{% endfor %}{% endfor %}{% endpaginate %}

(also available on GitHub here)

b. Create a new Collection based on your csv-ga-product-feed Template

Select the products you want to include in this feed (probably all your products). These will be the products whose values will be overwritten in Google Analytics. Call your collection “Google Analytics Product Data Import” or something similar and save it.

c. Download your Product Feed

  • View your new collection in your store (eg: store.myshopify.com/collections/google-analytics-product-data-import)
  • View source in your browser and save as HTML
  • Rename the file with a CSV extension (eg: google-analytics-product-data-import.csv)

Step 2: Setup and Import the data into Google Analytics

IMPORTANT WARNING! I highly recommend you duplicate or backup your Google Analytics view and do a trial run before working with your live data. Once you upload this new data and overwrite there is no UNDO!

a. Setup the Data Feed

  • Go to Google Analytics > Admin > Account > Property > Data Import
  • Click the red “+ NEW DATA SET” button
  • Select “Product Data”
  • Give your Data Import a name: “Product Name Override”
  • Select the Google Analytics Views you want this import to affect
  • Setup your Data Set Schema: Product SKU is the mandatory key, but select Product and Product Variant as the additional fields.
  • Overwrite Hit Data: Choose Yes (but read my warning above)
  • Click Save and Done

b. Upload your data feed

  • Click on “manage uploads” beside your new Data Feed definition
  • Click the blue UPLOAD button
  • Choose your CSV file and click UPLOAD again
  • And now wait for the upload an update to be complete

Step 3: Verify your new data

The data upload will only affect data from this date forward. So your old data will unfortunately not be fixed. But your future data will be nice and clean.

You will need to wait at least a day before you start seeing the new data coming in. If you add new product SKUs to your store, you will also need to regenerate and reupload a new file in order for the new product data to be fixed.

The Value of View Through Conversions

If you are running a Display or Retargeting campaign you have probably been exposed to View Through Conversions (VTC): View Through Conversions are conversions where a customer saw — but did not click — a display ad on the display network before completing a conversionThere is a lot of debate on if you should count View Through Conversions or ignore them. How can you be sure they legitimately assisted in the conversion?

A/B Testing vs a Blank Ad

Display Network A/B Test

  1. Create 2 different but equal non-overlapping campaigns
    (If you use AdRoll your rep will be happy to set this up for you)
  2. Campaign A will serve your “normal” ad
    Campaign B will serve a Public Service Announcement ad (in our case it was an ad for the SPCA)
  3. Run both campaigns for a few weeks
  4. Do the math:

Valid VTC Formula

Real Life Example

Campaign A
[Default Ad]
Campaign B
[Blank Ad]
Impressions 99,467 97,412
VTCs 329 261

Valid VTCs = (329 – 261) / 329 = 20%

This means that only 1 in 5 View Throughs actually assisted with conversions — the other 80% had no effect and should be ignored. These results are specific to BOATERexam.com — your results will vary depending on your business and ad creative.

Google Analytics Custom Events to Simplify Navigation

Below, is a screen shot of a quiz from our online ATV safety course.

ATV Quiz

The navigation is relatively simple:

  • NEXT and PREVIOUS buttons
  • Right hand menu to navigate to any question
  • FINISH QUIZ button that becomes visible once you have answered all the questions

Questions About Usability:

  • Does anyone actually use the PREVIOUS button?
  • Does anyone actually use the side menu to Navigate?

To answer these questions you can setup a series of Google Analytics Custom Events on each button/nav click.

onclick=”_gaq.push([‘_trackEvent’, ‘TDE Navigation’, ‘Next’, ‘Quiz’]);”

WARNING! Google Analytics has a data limit of 500 hits per session (this includes page views, events, and other types of data). Tracking EVERYTHING with custom events could cause you to reach those limits.

Looking at Google Analytics

Total Events

Total events will give an indication of the relative usage of each navigation element

Unique Events

Unique events will give us an idea of navigation usage PER SESSION.  This answers the question “How many users click on the navigation element at least once during a visit”.

The verdict

  • The previous button only receives 1.3% of the total navigation clicks.
  • About 1 in 6 users do click previous at some point in their quiz.

RECOMMENDATION: Previous button should be converted to a simple text link

  • The side menu (Jump) only receives 0.2% of total navigation clicks.
  • Only 3.5% of users ever used the side menu (about 1 in 30 users).

RECOMMENDATION: Remove the side navigation menu all together
(or make it a slide in/out style navigation element)

Next Steps

Consider auto-advancing to the next question when an answer choice is clicked

Not surprisingly, almost 92% of total navigation clicks go to the NEXT button and another 6.5% of total clicks are on the finish button.  So over 98% of the time the user simply wants to advance to the next logical step.

Does this mean that we should we just auto-advance to the next question when the user selects the answer choice? How often does a user change his answer choice before clicking the next button?  The answer to this last question will be saved for another post (after we collect more data)

I hope you found this post useful.  If you know of simpler methods to gain this sort of insight, please post them in the comments below.

Which Social Networks Are Your Visitors Logged Into

Back in February 2012, Tom Anthony wrote a couple of great posts on how to detect if visitors were logged into a social network and then how to use Google Analytics to track this information.

After the post, there was some discussion about how there are only 5 CustomVar slots in the standard version of Google Analytics, and how it would be nice to consolidate all the Social Media logged in statuses into a single Custom Var.

Well here is the code and steps to track them all in a single Custom Var slot

To implement this using Universal Analytics please read Mark Hoad’s post here: http://aberrant.me/cool-google-analytics-hacks-using-the-new-universal-analytics-js/

1. Read Tom Anthony’s Posts

2. Install The New JavaScript Code

Put this in your <HEAD>

Download the above code here

Then add the following to the bottom of the page, before the closing </BODY> tag:

Download the above code here

NOTE 1: Remember to replace Your-App-Id with your Facebook App Id and http://www.yourdomain.com/pixel.png with a url to an image on your website.  (This last line can probably be implemented with just an in-line JavaScript call, but I’m posting this code as-is because it “Works on My Site”)

NOTE 2: The code above is configured to log your Social Traffic login status in Custom Variable Slot 5.  Change this number if you want a different slot.

3. Setup Custom Segments

If you setup the code above properly, you should see data similar to this in your Analytics Account under the appropriate CustomVar (#5 in our case):

What you want to do is setup Custom Segments so you can isolate individual networks when the user is logged into multiple networks at the same time.  This is very similar to how it was done in the original post, but here are the screen shots for the 4 networks tracked:

Facebook

Google Plus

Gmail/Google Login

Twitter

4. View Data in Analytics

Choose your custom segments:

View your beautiful data!

          Beautiful Social Data 2

(Note: We had a bug with our Facebook tracking when we initially set this up – hence the strange zero-to-hero traffic spike with Facebook towards the end of the graph)

WordPress Plugins

There are already 2 (that I know of) WordPress plugins that implement Tom Anthony’s initial code:

  1. Adapt Partners Social Media User Detection WordPress Plugin
  2. Springest’s Social Analytics WordPress Plugin

I assume it’s just a matter of time before they update their code to be able to cram the tracking into a single CustomVar (although for those already using the old way using multiple CustomVars you will probably want to adjust your Custom Segments to include an OR clause in order to report on data from both formats).

Additional Credits…

A huge thank you to Tom Anthony for the original code that triggered this and to our dev team at Fresh Air Educators, Inc for extending and implementing this new feature!