1. Create empty GTM container and add the code to global header of ALL pages. See pg9 for details of exact position of the tag.
    1. Create GA universal account (UA-00000-3)
      1. Add ignore referrals GA settings for clientdomain.com
      2. Add ignore referrals GA settings for paypal.com and livechat.com etc
      3. Add customDimension5 set to page-level and contentGroup5 set to tracking code level
      4. Optionally, update campaign settings from the 6month default.
      5. If custom search engine lists are used, such as bt.com, then add these in GA settings.


  1. Deploy parallel deployment of Universal (UA-00000-3) via GTM, with GA classic (UA-00000-1) running via hardcode.
    1. Ensure GA pageview tag for UA-00000-3 is triggered in Debug mode on DEV.
    2. Make sure no pages are missing the GTM tag:
      1. use report of pageGroup5 and customDimension5 for autoContainerVersion=(not set)
      2. and report of URL and Hostname tables non-matching vlookup for the two GA accounts.


  1. Then find & replace GA classic code with event called onload_ga_pageview. See Common GTM setup mistakes to avoid for an example, and configure GTM to use this event tag.
      1. Ensure GA pageview tag for UA-00000-1 within GTM is triggered by onload_ga_pageview event.
      2. Within GTM switch UA-00000-3 for UA-00000-1
      3. Run a website crawl to search for missing code using Run a website crawl to search for missing code using ScreamingFrog, WASP or com or Hub-Scan.com


  1. Add ecommerce dataLayer to checkout thankyou page
    1. Check GA classic ecommerce totals vs GA universal ecommerce totals
    2. Click the upgrade to universal button for GA classic UA-00000-1
      • Wait 48hours


  1.  Replace inline code push with equivalent dataLayer.push code and add GTM event tags within GTM settings, so there is a seamless migration:

// Example of inline code…

function trackPrompt(e) {

_gaq.push([“_trackEvent”, whatPage(), e.data(“ga-action”), “Shown”]);

} // source:clientdomain.com/presentation/js/core.combined-e1f32a1.js


      1. Add better dataLayer for product pages, and user-interactions.

A youtube video on migration planning is here.

Note1: a straight migration (without using UA-00000-3 parallel deployment) can also be done, because once the GA backend data collection is upgraded the collection server will process both universal and GA classic hits. See next page for an example.

Note2: Custom code that reads the utmz cookie or calls getVisitorCustomVar(1); or backup of utm.gif images via setLocalGifPath(); is not supported in GA universal, but a workaround exist here.

0117 3361103