Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tactics to Simplify Complex Campaign Tracking

1,137 views

Published on

From the SMX West Conference in San Jose, California, March 3-5, 2015. SESSION: Tactics To Simplify Complex Campaign Tracking. PRESENTATION: Tactics to Simplify Complex Campaign Tracking - Given by Ted Ives, @tedives - Coconut Headphones, Principal. #SMX #31D

Published in: Marketing

Tactics to Simplify Complex Campaign Tracking

  1. 1. March 5, 2015 Tactics to Simplify Complex Campaign Tracking Ted Ives Owner, Coconut Headphones @tedives
  2. 2. 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
  3. 3. 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:
  4. 4. searchmarketingexpo.com @tedives #SMX #31d “As Seen in the Wall Street Journal”
  5. 5. searchmarketingexpo.com @tedives #SMX #31d What Kind of Business Do You Resemble?
  6. 6. 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
  7. 7. searchmarketingexpo.com @tedives #SMX #31d Click Landing Page LeadProspect Sale Why do We Track?
  8. 8. 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/ *
  9. 9. 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
  10. 10. 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.
  11. 11. searchmarketingexpo.com @tedives #SMX #31d Google Tag Manager Rules have been renamed triggers Macros have been renamed variables
  12. 12. searchmarketingexpo.com @tedives #SMX #31d Install the Google Tag Assistant Extension for Chrome
  13. 13. 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.
  14. 14. 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 !!! *
  15. 15. searchmarketingexpo.com @tedives #SMX #31d E-Commerce Tracking
  16. 16. 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
  17. 17. 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. * * *
  18. 18. searchmarketingexpo.com @tedives #SMX #31d Click Landing Page LeadProspect Sale Closing the Loop
  19. 19. 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 *
  20. 20. 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. *
  21. 21. searchmarketingexpo.com @tedives #SMX #31d Setting Up Remarketing With Analytics and AdWords: Step 2 You now have a remarketing list, accumulating cookies.
  22. 22. searchmarketingexpo.com @tedives #SMX #31d Setting Up Remarketing With Analytics and AdWords: Step 3
  23. 23. 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.
  24. 24. 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.
  25. 25. 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/19632UESource:
  26. 26. searchmarketingexpo.com @tedives #SMX #31d

×