26
March 5, 2015 Tactics to Simplify Complex Campaign Tracking Ted Ives Owner, Coconut Headphones @tedives

Tactics to Simplify Complex Campaign Tracking

Embed Size (px)

Citation preview

Page 1: Tactics to Simplify Complex Campaign Tracking

March 5, 2015

Tactics to Simplify Complex Campaign Tracking

Ted Ives

Owner, Coconut Headphones

@tedives

Page 2: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Agenda

• Why do We Track?

• Installing Google Analytics

• Setting up Cross-Domain Tracking with Google Tag Manager

• Setting up Conversion Tracking

• Connecting AdWords to Analytics

• Passing Keyword Info to Your CRM System

• Setting up Remarketing with Analytics and AdWords

• E-Commerce Tracking

• Phone Conversion Tracking

• Top Pain Points and How to Avoid Them

Page 3: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Who am I?

An online marketing agency out of Rhode Island (four people)

Our focus is delivering big-agency results with small-agency attention: • Offshore resources

• Constantly document and systematize

• This allows us to deliver tremendous value & focus on client-specific analyses for “moving the dial”.

Paid Search, SEO, Analytics, Remarketing/Display, LinkedIn

Clients:

Page 4: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

“As Seen in the Wall Street Journal”

Page 5: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

What Kind of Business Do You Resemble?

Page 6: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Why do We Track?

http://searchengineland.com/consider-the-ends-to-justify-the-means-in-ppc-117740

The key question though is….is your Paid Search budget limited?

If not (relative to other budgets, it often is not) then you should consider optimizing

Paid Search instead on a “Profit-per-Impression” basis.

Brad Geddes http://searchengineland.com/ad-testing-are-you-using-the-wrong-success-metrics-123556

Page 7: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Click

Landing Page

Lead Prospect

Sale

Why do We Track?

Page 8: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

• GA has concept of account->property->view

• Each property (website) has an ID.

• The view is for viewing data (excluding by IP, adding Filters, etc.)

• You need to create an account, then create a property. You enter your URL and it will give you an ID.

• Then you grab the code snippet it gives you, put that on every page of your website & you’re good to go.

Installing Google Analytics

Unfortunately, it doesn’t tell you WHERE to put it;

The correct place is just before the </head> tag.

This helps ensure that it fires before the user can click away

in body content, and also makes it easy for you to find later.

Tip: Yoast has a nice WordPress plugin for this:

https://yoast.com/wordpress/plugins/google-analytics/

I also very much like NK Google Analytics for WordPress:

https://wordpress.org/plugins/nk-google-analytics/

*

Page 9: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Cross-Domain Tracking

1. In your GA snippet, you must enable Auto-Linker, and each snippet must refer to the *other* site:

On Site 1:

ga('create', 'UA-XXXXXXXX--1', 'auto', {'allowLinker': true});

ga('require', 'linker');

ga('linker:autoLink', [‘site2.com']);

ga('send', 'pageview');

On Site 2:

ga('create', 'UA-XXXXXXXX--1', 'auto', {'allowLinker': true});

ga('require', 'linker');

ga('linker:autoLink', [‘site1.com']);

ga('send', 'pageview');

2. Admin Tracking Info Referral Exclusion List Add all the Domains here!

3. To get the domains to show up in reports (so you can tell the difference)

View Settings Copy View Filters New Filter Custom Very Complicated Settings. Google this.

https://developers.google.com/analytics/devguides/collection/analyticsjs/cross-domain https://productforums.google.com/forum/#!topic/analytics/P1os_m8oNGk

Page 10: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Google Tag Manager

• What is it?

• Has nothing to do with “Tagging” your URLs.

• It really should be called:“Google Javascript Snippet Deployer”

• That said, people are increasingly referring to these snippets as “tags”.

• You deploy its snippet on every page – once…then put your other

snippets into its interface…and it dynamically injects them at page load

time into the page.

• You never have to talk to IT again about deploying an analytics tag.

• It includes template for many popular vendor tags, so you don’t even

need javascript – just IDs and settings.

• It also allows you to easily “listen” for events and generate them for Google Analytics,

without having to write javascript.

Page 11: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Google Tag Manager Rules have been renamed triggers

Macros have been renamed variables

Page 12: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Install the Google Tag Assistant Extension for Chrome

Page 13: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Setting Up Goals: Destinations

99% of the time you’re going to want to track either:

• Lead Submissions

• Sales

• Some Sort of Event

Google Analytics lets you set up goals for:

• Destination

• Duration

• Pages/session

• Events

If you can have your IT person make a “Thank You” page

with a distinct URL after the person submits a lead, this

Can be a very easy way to do goal tracking.

Note: You can *also* set up E-Commerce tracking.

This is not a goal!

The confusing thing is, when you go in AdWords to

import “conversions”, E-Commerce Transactions show up

as a “Conversion” as do individual “Goals”.

So E-Commerce Transactions, although being *like* a goal

in a lot of ways, are not a goal.

Page 14: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Setting Up Goals: Events

If you can’t go off of the URL changing, you can simply have your developer put a snippet of Javascript somewhere – say,

in the code for the submission button…that sends an “Event” to Google Analytics.

<script>

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){

(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),

m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)

})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXXXXXXX-XX', 'auto');

ga('send', 'pageview');

ga('send', 'event', 'Submission', 'Lead', 'unbounce-form-submit', 1) </script>

Although when you read the documentation, you might get hung up thinking that what these four values are actually matters, or that they need fit some sort

of conventions, but they’re actually arbitrary.

Janeway, Seven of Nine, Harry Kim, and 74656 will do just as well for the conditions – as long as they match in the snippet and

in the GA goal setup EXACTLY.

Beware of spaces on the end of things when pasting from emails

!!! Always check for these !!! *

Page 15: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

E-Commerce Tracking

Page 16: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

E-Commerce Tracking (via Google Tag Manager)

<script>

// Send transaction data with a pageview if available when the page loads.

// Otherwise, use an event when the transaction data becomes available.

dataLayer.push({

'ecommerce': {

'purchase': {

'actionField': {

'id': 'T12345', // Transaction ID. Required for purchases and refunds

'affiliation': 'Online Store', // optional

'revenue': '35.43', // Total transaction value (incl. tax and shipping) - includes all products in cart

'tax':'4.90', // optional but ideal to have

'shipping': '5.99', // optional but ideal to have

'coupon': 'SUMMER_SALE' //optional (this is just a label to identify a coupon, not amounts or anything else, sorry!)

},

'products': [{ // List of productFieldObjects.

'name': 'Acme Baseball', // required <---- this represents individual products that were purchased

'id': '12345', // required - product ID (SKU number etc.)

'price': '15.25', // optional but ideal to have

'category': 'Sporting Goods', // optional but ideal to have

'quantity': 1 // optional but ideal to have

},

{

'name': 'Xbox 360', // required

'id': '12345', // required - product ID (SKU number etc.)

'price': '299.99', // optional but ideal to have

'category': 'Video Games', // optional but ideal to have

'quantity': 1 // optional but ideal to have

}]

}

}

});

</script>

After implementing the code on the left in your cart (or

if you’re really lucky, instead hitting the “Google

Analytics E-Commerce Integration” checkbox in your

cart vendor’s Administration panel)….

…Add a tag to your container in Google Tag

Manager, with these settings:

Tag type : Universal Analytics

Track type : Pageview

Enable Enhanced Ecommerce Features: true

Use Data Layer: true

Basic Settings - Document Path: {{url path}}

Firing Rule: {{event}} equals gtm.js

Don’t forget then in Analytics !!!

Property View E-Commerce Settings On

Page 17: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Connecting AdWords to Analytics

1.Use the same Gmail account to log into both Analytics and AdWords.

If you have access to one but not the other, get access to both from the same account.

2.Google Analytics:

Admin Account Account Settings Data Sharing Settings “With other Google Products Only”. Check this !!! Very typical

to miss this part !!!!

3.Google Analytics:

Admin Property AdWords Linking +New Link Group Select the AdWords Account (must be same gmail account you’re

using to manage Hit Save

4. AdWords:

Gear Icon Preferences Tracking Auto-Tagging Yes Hit Save

5. AdWords:

Gear Icon Account Settings Linked Accounts Google Analytics Edit Drill in down through the account, domain, to the

right property Hit “Add” Hit Save

6. AdWords (1 day later):

Tools Conversions Import from Google Analytics (should be ungreyed out) Select Conversions to Import.

NOTE: CONVERSIONS MAKE THEIR WAY INTO ADWORDS WITH A 12-24 HRS LAG.

*

*

*

Page 18: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Click

Landing Page

Lead Prospect

Sale

Closing the Loop

Page 19: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

AdWords can append data to your destination URL as parameters using its “ValueTrack” feature. Just add this to your URLs:

http://www.example.com/?keyword={keyword}

Then if someone arrives at the landing page via a search on “squeaky floor” the “referring URL” will look like this:

http://www.example.com/?keyword=squeaky+floor&gclid=CN3iw62F38NCFYk2gQodPGsAOA Includes Google’s GCLID “auto-tag”

Now, in your CRM, to capture this…if you have HubSpot, you’re in luck – it integrates with the gclid and you don’t even need to do this!!!

Otherwise, here are three options for your “web programmer”.

1.) Get the referring URL via javascript - normally a really bad idea as it only gets the referring URL from the previous *page*

2.) Get it via a web server-side session variable - which is a great approach, as it tracks how the person *originally* came to the site (let's

say they clicked on 12 pages before getting to the landing page - the original referring URL can be gotten out of a web server session

variable).

3.) The ultimate would be, using #2 but also setting it in a cookie. Then when the person hits "Submit" (or whatever the lead capture

action is), you could grab it out of the cookie and pass it along. This has a big advantage in that a sale a month or two later would still

credit the original keyword.

I'm told this is how you can do approach #2 in PHP: "Referring Page:" . " " . $_SERVER['HTTP_REFERER'];

CHECK YOUR DESTINATION URLS FOR REDIRECTS. YOUR WEB SERVER MAY STRIP REFERRER INFO

BEFORE THE GOOGLE ANALYTICS SNIPPET GETS TO FIRE…AND YOU’LL GET “NOT SET”

Passing Keyword Info to your CRM System

*

Page 20: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Setting Up Remarketing With Analytics and AdWords: Step 1

• Update your privacy policy per: https://support.google.com/analytics/answer/2700409 https://support.google.com/adwords/answer/2549063

• Undocumented AdWords behavior: if you don’t have a Privacy Policy, my experience has been that Quality Scores will be 2 less

than they should be - across the board. I recommend putting a PP and TOS in the footer of every page and every landing page.

• Add this line to your Analytics Snippet on every page of your website:

• Analytics Property Settings Enable Display Advertiser Features

You are now cookie-ing site visitors with a Google Display Network (i.e. Doubleclick) cookie.

*

Page 21: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Setting Up Remarketing With Analytics and AdWords: Step 2

You now have a remarketing list, accumulating cookies.

Page 22: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Setting Up Remarketing With Analytics and AdWords: Step 3

Page 23: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Phone Tracking

• What % of your leads come from phone calls?

• You can get limited phone tracking in AdWords by simply adding

call extensions.

• The trick is, getting the phone number on your site to change based on the phone

number the person saw in the search ad in your call extension.

• AdWords has a relatively new feature where it can swap out the number for you. It

requires more knowledge of javascript for the swapping-out part, where Mongoose

instead has a nice one-line library you call that figures it all out.

• Mongoose uses a neat trick – they have a server hit a particular hidden page you put on

your website and they put all the campaign information in the referral string when they

do this – that way you can have a Google Analytics goal fire that someone hit that page,

representing a call.

• Costs vary; for very low volume applications I’ve found 3 phone lines per # is enough to

track at the keyword level.

• Mongoose’s options are a bit confusing; just ask for “AccuTrack SPC” campaigns if you

want to track at the keyword level for Paid Search campaigns.

Page 24: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

Top Pain Avoidance Techniques 1. Keyword (not provided) for AdWords - most often caused by redirects; check all destination URLs!

2. Use Screaming Frog -> Custom String feature to search for your “UA” ID, to identify pages that missing Analytics code.

3. Mixing manual tagging…i.e. utm_code…and gclid (autotagging) in AdWords should be avoided if possible.

Default is for the gclid to win, but there is an Advanced Setting under Properties to switch the behavior to favor the

manual tagging.

4. If all else fails, cheat and just import conversions directly back into AdWords via file upload

(record gclid , date, time for all leads).

5. iFrames are bad news as they “launder” the referring URL. Workarounds exist but are complicated.

6. Forgetting to set “Sharing” with other Google Products in Google Analytics is a real killer! Always check this!

7. When entering goals, if you’ve pasted from somewhere else like email, make sure there’s no extra space at the end.

8. Universal Analytics is supposed to just handle subdomain tracking for you but I’ve not really observed it working. It

seems you still need to do the cross-domain specification and customize the tracking snippets with that.

9. When creating a new “View” in Google Analytics, you can go into the old View’s settings and hit “Copy”….and the

Goals etc. will copy along with it!

10.Time your phone ringing. You may be losing callers.

11.Standardize naming conventions of your campaigns.

Page 25: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d

In Summary:

• These guys obviously didn’t get it right;

why would you expect to?

• Count yourself lucky if anything works at all!

• Test. I’d recommend re-testing the closed

loop of goal tracking every quarter…don’t

assume everything is working.

Check out:

http://www.tedives.com/

http://www.coconutheadphones.com/

http://bit.ly/19632UE Source:

Page 26: Tactics to Simplify Complex Campaign Tracking

searchmarketingexpo.com

@tedives #SMX #31d