SlideShare una empresa de Scribd logo
1 de 76
Descargar para leer sin conexión
#emetrics @PHILPEARCE
New York
26th Oct 2016
Learnings from the most Advanced GTM
Deployment I have ever done!
(On a site with 1 billion hits a month)
By Phil Pearce
I`m an Analytics
Adventurer & Explorer!
I recently did 8 countries in 12 weeks = 4.6 days per country
Agenda
1. Set the scene
– Size
– Complexity
– Timelines
2. How we got there
– Tools
– Strategy
3. Conclusion & take always
– Checklist / Solution Library
4. Questions
Last week I did a
twitter survey….
“How many Google Tag Manager
installations have YOU done?”
1. Newbie: 1-3 installation
2. Experienced: 4-10
installation
3. Advanced: 10+ installation
Survey results
https://plus.google.com/117298997433687198127/posts/dW5TjdS7XEV
https://twitter.com/philpearce/status/779678727861104640
Super Experienced
people
AdWords…I have done alot more than 10 GTM & GA Implementations
This is the story of
one such implementation…
So, a beautiful but
HUGE new client just signed!
• 400 man-hours GTM project
• 600 GA classic events
• GA classic to Universal pageview migration
• Inhouse TMS.js migration to GTM
• 6 CMS platforms
• Only 3 months to complete!
• Fine per task, if not completed within the timeline!
Project Complexity
Source: builtwith.com/detailed/behemothclient.com
Over 6+ CMS platforms &
multiple analytics solutions!
Project Size
Huge site!
Number of pages indexed on Google
2,680,000 results
350,000 results
Switch from GA classic
to GA universal
Migrate existing 200
GA events in GTM
Add 400 GA events
(auto-events)
Move pageview from
TMS.js (inhouse TMS)
into GTM
Preliminary GTM
account audit
Behemoth
Project Timeline
to climb the mountain
3 month Deadline…
If missed = financial penalties per task!
In Reality…
Inhouse IT dept slow to respond, thus
impossible to enforce the task based fines.
How did we get to the Summit?
And more importantly...
• What went right?
• What went wrong?
The Win was deliver by
Technical & Tactical working together!
BusinessTechnical
Plus lots of Tools & Techniques!
Technical (Phil)
• Testing Tools
• Strawman Test environment
• Separate DEV & LIVE environments
• Auto-QA
• Failsafe deadman switch
• Security
• Governance of Logins & access levels
• Controlling Risk factors
Tactical (Agency)
• Task prioritisation
• Split based on “required client
dependencies”
• Sorted based on cost vs benefit
• Weighted based on strategically
important items
Wins MistakesWins Mistakes
Tools
Technical
GA classic >> GA universal
migration comparison +/-2%
Pass
+2%
Fail -10%Compare on:
1. Pageview
Then…
2. Sessions
Then..
3. Users
Start with
• Hostname
GA classic
pageTracker
GA universal
secondTracker
GA classic >> GA universal
migration comparison +/-2%
Pass
+2%
Fail -10%Compare on:
1. Pageview
Then…
2. Sessions
Then..
3. Users
GA classic
pageTracker
GA universal
secondTracker
Check in this order:
1. Hostname
2. Referral domains
3. ContentGroups
4. Folders
5. URLs
GA classic >> GA universal
migration comparison +/-2%
bit.ly/ga-api-example
GoogleSheet highlighted
exclude referrals & missing domains
e.g. paypal.com exclude referral was missing!
PII safeguards
…to prevent GA account deletion!
PII prevention filters
PP01a: TidyURL - Replace email with EMAIL-OBFUSCATED-BY-FILTER@gmail.com (start of string)
URL (.*?)(=|%3D)([a-zA-Z0-9_.+-]+(@|%40)[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+)($|&.+)
Output URL $A1=EMAIL-OBFUSCATED-BY-FILTER@gmail.com$A5
PP01b: TidyURL - Replace email with EMAIL-OBFUSCATED-BY-FILTER@gmail.com (end of string)
URL (.*)(=|%3D)([a-zA-Z0-9_.+-]+(@|%40)[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+)($|&.+)
Output URL $A1=EMAIL-OBFUSCATED-BY-FILTER@gmail.com$A5
PP02a: Tidy EventLabel - Replace email with EMAIL-OBFUSCATED-BY-FILTER@gmail.com (start of string)
EventLabel (.*?)(=|%3D)([a-zA-Z0-9_.+-]+(@|%40)[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+)($|&.+)
Output EventLabel $A1=EMAIL-OBFUSCATED-BY-FILTER@gmail.com$A5
PP02b: Tidy EventLabel - Replace email with EMAIL-OBFUSCATED-BY-FILTER@gmail.com (end of string)
EventLabel (.*)(=|%3D)([a-zA-Z0-9_.+-]+(@|%40)[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+)($|&.+)
Output EventLabel $A1=EMAIL-OBFUSCATED-BY-FILTER@gmail.com$A5
Generic PII exclude params
PP_list_lastchecked_2016_10_30, password, password_confirmation, regCode, username,
username_confirm, signin[username], signin[runas], signin, sign_in, conf, gpid, obem,
inf_contact_key, user_id, userId, username1, frmUsername, nickName, qz_user_name, url_mac,
Email, email, mail, MAIL, feedback_email, newEmailAddress, newemailaddress, emailAddress,
emailaddress, recipientName, recipientEmail, MMDB_ID, mmdb_id, EMAIL_ID, email_id,
email[body], email[subject], interaction[email], interaction[name], CVC_M1RSUBNM,
CVC_M1RADDR1, CVC_M1RADDR2, CVC_M1RCITY, CVC_M1RSTATE, CVC_M1RCTRYC, CVC_M1RZIP,
CVC_M1REMAIL, CVC_M1RTACCT, MSRSUBNM, MSRADDR1, MSRADDR2, WESCITY, WESSTATE,
WESZIP, MSREMAIL, Name, selectedAddress, selectedAddres_0, selectedAddres_1,
selectedAddres_2, selectedAddres_3, selectedAddres_4, selectedAddresSize, Address1, Address2,
City, State, Zip, zipcode, qz_user_country, state, oauth_token, oauth_verifier, rptregcta,
rptregcampaign, nickName, selectedAddress, username1, frmUsername, mac_address
Auto-QA
Auto-QA feedback loop… bit.ly/qatemplate
EventID
(GoogleSheet)
Added to each
GTM tag
GA api
(Googlesheet)
vLookup
(GoogleSheet)
Note: Ensure
CustomDimension[20]
enabled in GA settings
Auto-QA feedback loop… bit.ly/qatemplate
EventID
(GoogleSheet)
Added to each
GTM tag
GA api
(Googlesheet)
vLookup
(GoogleSheet)
Auto-QA feedback loop… bit.ly/qatemplate
GTM auto-event config file
bit.ly/gtmconfig (For any CMS)
Reminder: open the import files in notepad, then find & replace
“yourdomain” and “yourdomain.com” with YOURDOMAIN before import.
Separate GTM-live & GTM-Dev
1. Server-side switch example
2. Client-side switch example
<!– Client Side Switch: Google Tag Manager: Output myGTMID -->
<script>
var myHostname = window.location.hostname;
var myGTMID = 'GTM-xxx1'; // LIVE
if(myHostname === 'staging.behemothclient.com' || myHostname === 'localhost'){
myGTMID = 'GTM-xxx2'; // DEV
}
</script>
<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-xxx1"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer', myGTMID);</script>
<!-- End Google Tag Manager -->
Note: This method can not be used on
JSvariables only Custom HTML tags.
3. Tag annotation & Failsafe block
Disable CustomHTML, but allow JS variables.
<script>
/* Working example: bit.ly/deadman-switch */
window.dataLayer = window.dataLayer || [];
dataLayer.push({"gtm.whitelist":
["google", "customPixels", "nonGooglePixels", "nonGoogleScripts", "jsm", "flc", "fls", "k"]
});
</script>
Disable CustomHTML and JS variables (breaks any JS lookup table wildcards)
<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({"gtm.blacklist":
["customScripts"]
});
</script>
4. The Deadman switch example
Thankfully this was never used!
Note: alternative method for inline method to disable specific script was considered:
<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({"hasPreventGTMscrollTrackingBeenSet": true});
var hasPreventGTMscrollTrackingBeenSet = true;
Local Test Environment
"Strawman unit tests"
Local Test Environment
Working Example here:
bit.ly/strawman-test2
Click to
switch versions
JS error benchmarking period before
Custom HTML changes deployed.
Note: 10% client-side sampling used on errorTracker
JS error tracking
Tactical (Business)
Business
Project Scope/Tasks
Original scope…
TMS.js migration
UA pageview migrations
400 gtm event migrations
200 inline event migrations
- 20 second heartbeat
- Scroll tracking
- Link Listeners (Outclick, PDF, social)
- Videos (2 video players)
- Donation ecommerce transactions
Added to scope…
GTM account clean-up (inc Naming
conventions)
DEV vs LIVE environments
HTML Sandboxes
UniversalSecondTracker
GA testing profiles
SSL tag issues
CustomVariables >> CustomDimenssions
Subscription Ecommerce tracking
Cross-domain tracking
Resource Planning Gantt (The "Who")
bit.ly/ga-planning-chart2
No client involvement: GA Settings:
1. Copy the 5 Goals from the TEST profile view to LIVE profile view
2. Create profile view for CART converted and CART non-converted
3. Create profile view for backend rolledup for Apps and Apps for userID
4. Improving organic by 1.5% by updating channel groupibehemoth
No client involvement: GTM config
1. Subscription e-commerce tracking via DOM scrapping
2. Enable Donate ecommerce revenue tracking
3. Consolidating 27 remarkting tags into 4 tags.
4. Reviewing & fix the remaining 178 triggers for errors.
5. Enable Adwords Dynamic remarking using lookup tables
6. Reducing self referrals from 1% to 0% by enabling legacyHistoryImport.
Split Client
dependencies
part1
Task list (The "What")
Milestones & Deadline planning (The "When")
bit.ly/ga-timeline2
Preliminary assessment of Scale of Task…
GTM audit: bit.ly/gtm-audit-template2
262 Tags, 255 rules and 107 macros!
Standardise the naming convention
for Tags, Triggers, Variables
GA pageview trigger example
Consolidated!
GTM Before vs After
• After (3 months later)
• Before (before work started)
-33% Reduction in Tags
-39% Reduction in Triggers
Problem:
Lots of
configuration
mistakes by client
Solution:
Manual clean-up
by senior analyst
Solution: Utilise newer feature such as
auto-events, lookup tables & tag templates
One BIG pile of spaghetti!
Inhouse GTM config built-up
over a 3 year period with 3+ users
Governance:
Controlling multiple-user changes...
...whilst plane is in mid-flight!
Risk of accidentally publishing
other users changes!
Multiple users: Check-in/Check-out
Solution1: Check-in/Check-out processes
and enforce View | Edit access.
Email Role Account
Permissions
01.
LIVE
02
DEV
phil@agency.com Administrator manage users edit publish
dave@agency.com Tester view
brian@client.com Administrator manage users view view
mary@client.com Administrator manage users view view
mathew@client.com Tester view view
devtools@client.com Tester view
When Check-out set to read-only
Solution2: Create User sandboxes
User1 | User2 >> DEV >> LIVE
Multiple users: sandboxes
Email Role Job title Account
Permissions
01.
LIVE
02
DEV
Marys
Sandbox
Mathews
Sandbox
phil@agency.com Administrator Implementation Specialist manage users edit publish view view
dave@agency.com Tester Project Manager view
brian@client.com Administrator Systems Admin manage users view view view view
mary@client.com Administrator Analyst manage users view view publish view
mathew@client.com Publisher Marketing Manager view view publish
devtools@client.com Tester Robot Unit Tester view
GTM-xxx1 GTM-xxx2 GTM-zzzz GTM-xxxx
GTM user access audit
bit.ly/gtm-access-audit2
Also see David Vallejo`s free API based user-access tool here:
www.thyngster.com/gaupet-release-google-analytics-user-permissions-exploring-tool
Summary of safety features
1. 2 stage authentication
2. PII protection - via GA filter on URI & eventLabel
3. JS error tracking profile
4. Inline switch for GTM-DEV / GTM-LIVE
(can be client-side or serverside method)
5. Failsafe/deadman`s switch (dataLayer whitelist)
Unexpected avalanches...
Exceeded monthly hit limit!
Note: Hit Tiers above has changed after this project was completed, so there`s now more
granular tiers.
$$$
Solution: renaming universal
object “ga” to “ga2”
A/B testing tool was sending GA event hits
to all trackers on every page = 3x hits
Moving TMS.js pageview into GTM was delayed
due to clients fragmented codebase
WPF 1st pageview script
images.behemothclient.com/wpf/CACHE/js/6f599508e0a4-cb1424263825.js
images.behemothclient.com/wpf/sites/common/j/analytics.js
www-s.behemothclient.com/wpf/sites/common/j/analytics.js
WPF 2nd pageview script on Members section
media-mmdb.behemothclient.com/static-media/js/analytics.js
WPF 3rd pageview script on Gallery buttons
images.behemothclient.com/wpf/sites/common/j/jquery.address-1.3.1-grant.min-cb1299116789.js
WPF 4th event script on Members section
assets.behemothclient.com/behemoth-header/build/lib/analytics.js
Deployed via GTM flag...
First method not effective as not a common field :(
_gaq.push(['_setCustomVar', 5, 'flag', '_gtmDeployed', 3]);
ga('secondaryTracker.set', 'dimension20', '_gtmDeployed');
Second method worked a charm!
var flag = document.title + '_gtmDeployed';
_gaq.push(['_title', flag ]);
ga("secondaryTracker.set", {title: flag});
Note: filter to clean-up the page title was required...
PP01a. EXCLUDE hits not deployed via GTM
Exclude filter for PageTitle (.*)_gtmDeployed$
PP01b. CLEAN PageTitle
PageTitle (.*)_gtmDeployed$
Output PageTitle $A1
PP02. INCLUDE pageview hits only
Include hitType=^pageview$
Set utmz cookie - so that inline gaq.push
events still work, but don’t effect hitlimit
Solution: _initData
var _gaq = _gaq || [];
_gaq.push(
['_setAccount', 'UA-1-1'],
['_addIgnoredRef', {{Page Hostname}} ],
['_addIgnoredRef', {{Page Hostname - www removed}} ],
['_setDomainName', {{jsm_setTopLevelDomain}} ],
['_setAllowLinker', true],
['_initData']
);
plus.google.com/117298997433687198127/posts/McER3buexek
https://plus.google.com/117298997433687198127/posts/R5r3Bp88ir7
Creative solution: Enable cross-domain tracking in the Cart
funnel without IT dept involvement
Automatic Process Summary
(Dec 23rd, 2015)
Project Successes: Phase(s)
Efficiency improvements
• Less time used on
client meetings.
• More focused on
completing tasks.
However… client slow to action tasks
7 day wait
"Awaiting Agency"
tasks very low :)
Training
Human Error on import & publish
which caused untested & broken version
to be accidentally deployed to LIVE!
Solution: User training & 2 people
used to verify go-live changes.
Wrong version
accidentally deployed
Need to
prevent this
happening
again...
Client Training
• analyticsacademy.withgoogle.com/course/5
• cardinalpath.com/training/google-analytics/analytics-301/
• lynda.com/Google-Tag-Manager-training-tutorials/
• measureschool.com/products/
bit.ly/gtmplaylist
Project Learnings/Improvements
1. Remove "human factor"
(e.g. manual export from DEV to LIV)
2. Auto-QA change to use TagID and auto-detect if new GA event added
in GTM.
3. Enforce GTM audit at the beginning (not optional task)
4. Enforce a Project summary and feedback session at the end of every
phase (not optional task)
5. Move onto insight, dashboards, A/B testing or BigQuery sooner.
Unexpected wins
1. 1000 tags consolidate to 500 tags reduce gtm.js download size.
2. Reduction in JS errors after TMS.js change to GTM auto-events
3. Much easier to maintain pageview triggers.
4. SSL tag issues fixed
5. Cross-domain tracking was done without IT involvement using
JS variable script.
6. VideoProvider tracking was done without IT involvement using
DOM scrapping.
7. Ecommerce revenue enabled via DOM scraping.
Checklist of Tools…
Life saving tools
bit.ly/gtm-checklist
Technical (Phil)
1. +/-2% migration comparison sheet:
bit.ly/ga-api-example
2. Auto-QA sheet:
bit.ly/qatemplate
3. GTM auto-config file: bit.ly/gtmconfig
4. DEV strawman examples: bit.ly/strawman-test2
5. GTM developer guide: bit.ly/gtmdevguide2
• Script for "Deployed via GTM flag" to find
inline GA scripts (without using a crawler)
• Script for _initData to sustain gap.push events
Tactical (Agency)
1. Resource planning Gantt sheet:
bit.ly/ga-planning-chart2
2. Deadline planning sheet:
bit.ly/ga-timeline2
3. GTM user access audit:
bit.ly/gtm-access-audit2
4. GTM audit template:
bit.ly/gtm-audit-template
5. Free GTM Training videos:
bit.ly/gtmplaylist
Thankyou & Questions
Phil Pearce
Senior Web Analyst and GTM specialist
phildpearce@gmail.com
linkedin.com/in/philpearce
Web
Analytics
Exchange
mentor
750 GA
questions answered
Tracking
protection
group
Free Prize for the best question(s).
bit.ly/gtmdevguide2 (free)
Prize: GTM developer guide
free!!
bit.ly/gtmdevguide2

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

One Further - Spektrix and Google Analytics 4
One Further - Spektrix and Google Analytics 4One Further - Spektrix and Google Analytics 4
One Further - Spektrix and Google Analytics 4
 
LearnInbound_AnnaCorbett_GTM Events for GA4.pdf
LearnInbound_AnnaCorbett_GTM Events for GA4.pdfLearnInbound_AnnaCorbett_GTM Events for GA4.pdf
LearnInbound_AnnaCorbett_GTM Events for GA4.pdf
 
Cracking the Product Manager Interview with Gayle McDowell
Cracking the Product Manager Interview with Gayle McDowellCracking the Product Manager Interview with Gayle McDowell
Cracking the Product Manager Interview with Gayle McDowell
 
Comment-survivre-a-google.pdf
Comment-survivre-a-google.pdfComment-survivre-a-google.pdf
Comment-survivre-a-google.pdf
 
🎙GA4 Chances & Differences Guide
🎙GA4 Chances & Differences Guide🎙GA4 Chances & Differences Guide
🎙GA4 Chances & Differences Guide
 
Guide to-google-analytics google 4
Guide to-google-analytics google 4Guide to-google-analytics google 4
Guide to-google-analytics google 4
 
GA4 LAND - Trendigital 2023
GA4 LAND - Trendigital 2023GA4 LAND - Trendigital 2023
GA4 LAND - Trendigital 2023
 
A Practical Guide to Keyword Research
A Practical Guide to Keyword ResearchA Practical Guide to Keyword Research
A Practical Guide to Keyword Research
 
Youtube for SEO
Youtube for SEOYoutube for SEO
Youtube for SEO
 
Measurefest - GA4 From Migration to Measurement - The Key To Success.pptx
Measurefest - GA4 From Migration to Measurement - The Key To Success.pptxMeasurefest - GA4 From Migration to Measurement - The Key To Success.pptx
Measurefest - GA4 From Migration to Measurement - The Key To Success.pptx
 
Google display network ppt 2
Google display network ppt 2Google display network ppt 2
Google display network ppt 2
 
Deep dive google tag manager (mike van hoenselaar, maart 2022)
Deep dive google tag manager (mike van hoenselaar, maart 2022)Deep dive google tag manager (mike van hoenselaar, maart 2022)
Deep dive google tag manager (mike van hoenselaar, maart 2022)
 
Jak číst a vyhodnocovat data v Google Analytics - Czech On-line Expo 2023
 Jak číst a vyhodnocovat data v Google Analytics - Czech On-line Expo 2023 Jak číst a vyhodnocovat data v Google Analytics - Czech On-line Expo 2023
Jak číst a vyhodnocovat data v Google Analytics - Czech On-line Expo 2023
 
Google Analytics 4 : The Next Generation of Digital Analytics - Benjamin Kepn...
Google Analytics 4 : The Next Generation of Digital Analytics - Benjamin Kepn...Google Analytics 4 : The Next Generation of Digital Analytics - Benjamin Kepn...
Google Analytics 4 : The Next Generation of Digital Analytics - Benjamin Kepn...
 
Introduction to Google Analytics GA4
Introduction to Google Analytics GA4Introduction to Google Analytics GA4
Introduction to Google Analytics GA4
 
GA4 Mini Training Webinar Deck.pdf
GA4 Mini Training Webinar Deck.pdfGA4 Mini Training Webinar Deck.pdf
GA4 Mini Training Webinar Deck.pdf
 
Data.Monks SGTM is a universal endpoint.pptx
Data.Monks SGTM is a universal endpoint.pptxData.Monks SGTM is a universal endpoint.pptx
Data.Monks SGTM is a universal endpoint.pptx
 
Google Tag Manager (GTM)
Google Tag Manager (GTM)Google Tag Manager (GTM)
Google Tag Manager (GTM)
 
Preparing for GA4 - The Future of Google Analytics
Preparing for GA4 - The Future of Google AnalyticsPreparing for GA4 - The Future of Google Analytics
Preparing for GA4 - The Future of Google Analytics
 
Facebook ads: How To Build A Funnel For Sales, Not Likes
Facebook ads: How To Build A Funnel For Sales, Not LikesFacebook ads: How To Build A Funnel For Sales, Not Likes
Facebook ads: How To Build A Funnel For Sales, Not Likes
 

Destacado

Destacado (7)

Phils Session cards @ Measurecamp
Phils Session cards @ MeasurecampPhils Session cards @ Measurecamp
Phils Session cards @ Measurecamp
 
Blackhat Analytics 2 @ Superweek
Blackhat Analytics 2  @ SuperweekBlackhat Analytics 2  @ Superweek
Blackhat Analytics 2 @ Superweek
 
Morphing GA into an Affiliate Analytics Monster
Morphing GA into an Affiliate Analytics MonsterMorphing GA into an Affiliate Analytics Monster
Morphing GA into an Affiliate Analytics Monster
 
PPC Growth Hacking - By Phil Pearce @ SuperWeek 2014
PPC Growth Hacking - By Phil Pearce @ SuperWeek 2014PPC Growth Hacking - By Phil Pearce @ SuperWeek 2014
PPC Growth Hacking - By Phil Pearce @ SuperWeek 2014
 
JSON-LD SEO Cheatsheet
JSON-LD SEO CheatsheetJSON-LD SEO Cheatsheet
JSON-LD SEO Cheatsheet
 
Digital Analytic & SEO Acceleration
Digital Analytic & SEO AccelerationDigital Analytic & SEO Acceleration
Digital Analytic & SEO Acceleration
 
SEO dataLayer 2: Entity Wars
SEO dataLayer 2: Entity WarsSEO dataLayer 2: Entity Wars
SEO dataLayer 2: Entity Wars
 

Similar a Most Advanced GTM Deployment. Ever!

Big Data - Hadoop and MapReduce for QA and testing by Aditya Garg
Big Data - Hadoop and MapReduce for QA and testing by Aditya GargBig Data - Hadoop and MapReduce for QA and testing by Aditya Garg
Big Data - Hadoop and MapReduce for QA and testing by Aditya Garg
QA or the Highway
 

Similar a Most Advanced GTM Deployment. Ever! (20)

"Taster Slides" for Most advanced GTM implementation
"Taster Slides" for Most advanced GTM implementation"Taster Slides" for Most advanced GTM implementation
"Taster Slides" for Most advanced GTM implementation
 
Having fun with Google Tag Manager (implement cool things like weather tracki...
Having fun with Google Tag Manager (implement cool things like weather tracki...Having fun with Google Tag Manager (implement cool things like weather tracki...
Having fun with Google Tag Manager (implement cool things like weather tracki...
 
Expert Tips and Techniques for Using Google Tag Manager
Expert Tips and Techniques  for Using Google Tag ManagerExpert Tips and Techniques  for Using Google Tag Manager
Expert Tips and Techniques for Using Google Tag Manager
 
All about google tag manager - Basics
All about google tag manager - Basics All about google tag manager - Basics
All about google tag manager - Basics
 
29 Advanced Google Tag Manager Tips Every Marketer Should Know
29 Advanced Google Tag Manager Tips Every Marketer Should Know29 Advanced Google Tag Manager Tips Every Marketer Should Know
29 Advanced Google Tag Manager Tips Every Marketer Should Know
 
Your Raw Data is Ready - Introduction to Analytics Engineering | SMX Advanced...
Your Raw Data is Ready - Introduction to Analytics Engineering | SMX Advanced...Your Raw Data is Ready - Introduction to Analytics Engineering | SMX Advanced...
Your Raw Data is Ready - Introduction to Analytics Engineering | SMX Advanced...
 
Questioning data quality and troubleshooting tracking gaps (version2 | Smx Su...
Questioning data quality and troubleshooting tracking gaps (version2 | Smx Su...Questioning data quality and troubleshooting tracking gaps (version2 | Smx Su...
Questioning data quality and troubleshooting tracking gaps (version2 | Smx Su...
 
How Google Tag Manager changes everything you knew about website analytics
How Google Tag Manager changes everything you knew about website analyticsHow Google Tag Manager changes everything you knew about website analytics
How Google Tag Manager changes everything you knew about website analytics
 
How to recover from an unsuccessful SEO relaunch by activating your data (SMX...
How to recover from an unsuccessful SEO relaunch by activating your data (SMX...How to recover from an unsuccessful SEO relaunch by activating your data (SMX...
How to recover from an unsuccessful SEO relaunch by activating your data (SMX...
 
Managing an Experimentation Platform by LinkedIn Product Leader
Managing an Experimentation Platform by LinkedIn Product LeaderManaging an Experimentation Platform by LinkedIn Product Leader
Managing an Experimentation Platform by LinkedIn Product Leader
 
Migrating wise.com to server-side GA4
Migrating wise.com to server-side GA4Migrating wise.com to server-side GA4
Migrating wise.com to server-side GA4
 
Google Tag Manager - Basic Introduction
Google Tag Manager - Basic IntroductionGoogle Tag Manager - Basic Introduction
Google Tag Manager - Basic Introduction
 
Questioning Data Quality and Troubleshooting Tracking Gaps (SMX Munich 2020)
Questioning Data Quality and Troubleshooting Tracking Gaps (SMX Munich 2020)Questioning Data Quality and Troubleshooting Tracking Gaps (SMX Munich 2020)
Questioning Data Quality and Troubleshooting Tracking Gaps (SMX Munich 2020)
 
Google tag manager fundamentals question and answer (june 23 and july 24, 2015)
Google tag manager fundamentals question and answer (june 23 and july 24, 2015)Google tag manager fundamentals question and answer (june 23 and july 24, 2015)
Google tag manager fundamentals question and answer (june 23 and july 24, 2015)
 
Ship code like a keptn
Ship code like a keptnShip code like a keptn
Ship code like a keptn
 
Crash Course on Google Analytics
Crash Course on Google AnalyticsCrash Course on Google Analytics
Crash Course on Google Analytics
 
Big Data - Hadoop and MapReduce for QA and testing by Aditya Garg
Big Data - Hadoop and MapReduce for QA and testing by Aditya GargBig Data - Hadoop and MapReduce for QA and testing by Aditya Garg
Big Data - Hadoop and MapReduce for QA and testing by Aditya Garg
 
Top 10 Tips for Google Tag Manager
Top 10 Tips for Google Tag ManagerTop 10 Tips for Google Tag Manager
Top 10 Tips for Google Tag Manager
 
Complex realtime event analytics using BigQuery @Crunch Warmup
Complex realtime event analytics using BigQuery @Crunch WarmupComplex realtime event analytics using BigQuery @Crunch Warmup
Complex realtime event analytics using BigQuery @Crunch Warmup
 
Google Optimize for testing and personalization
Google Optimize for testing and personalizationGoogle Optimize for testing and personalization
Google Optimize for testing and personalization
 

Más de Phil Pearce

Más de Phil Pearce (20)

GTM container positions: a summary of best & worst
GTM container positions: a summary of best & worstGTM container positions: a summary of best & worst
GTM container positions: a summary of best & worst
 
Blackhat Analyics 4: May the 25th be with you!
Blackhat Analyics 4:  May the 25th be with you!Blackhat Analyics 4:  May the 25th be with you!
Blackhat Analyics 4: May the 25th be with you!
 
Photos of LaserBowling @ MeasureCamp Cardiff 2
Photos of LaserBowling @ MeasureCamp Cardiff 2Photos of LaserBowling @ MeasureCamp Cardiff 2
Photos of LaserBowling @ MeasureCamp Cardiff 2
 
Measurebowling Nerdshirts 2017-06-08
Measurebowling Nerdshirts 2017-06-08Measurebowling Nerdshirts 2017-06-08
Measurebowling Nerdshirts 2017-06-08
 
Plan a Digital Analytics Training Strategy for an Analytics Agency
Plan a Digital Analytics Training Strategy for an Analytics AgencyPlan a Digital Analytics Training Strategy for an Analytics Agency
Plan a Digital Analytics Training Strategy for an Analytics Agency
 
The Kamasutra of GTM container positions
The Kamasutra of GTM container positionsThe Kamasutra of GTM container positions
The Kamasutra of GTM container positions
 
Common mistakes with media tagging (utm tags) and how to fix them!
Common mistakes with media tagging (utm tags) and how to fix them!Common mistakes with media tagging (utm tags) and how to fix them!
Common mistakes with media tagging (utm tags) and how to fix them!
 
QR code uses cases & Digital Marketing podcasts
QR code uses cases & Digital Marketing podcastsQR code uses cases & Digital Marketing podcasts
QR code uses cases & Digital Marketing podcasts
 
Analytics Crystal maze
Analytics Crystal mazeAnalytics Crystal maze
Analytics Crystal maze
 
Google Data Studio - First impressions @ Measurecamp
Google Data Studio - First impressions @ MeasurecampGoogle Data Studio - First impressions @ Measurecamp
Google Data Studio - First impressions @ Measurecamp
 
Supercharging your Organic CTR
Supercharging your Organic CTRSupercharging your Organic CTR
Supercharging your Organic CTR
 
Example cookie compliance audit
Example cookie compliance auditExample cookie compliance audit
Example cookie compliance audit
 
Example SEO audit
Example SEO auditExample SEO audit
Example SEO audit
 
Clicktale Vendor Privacy Audit (August 2013)
Clicktale Vendor Privacy Audit (August 2013)Clicktale Vendor Privacy Audit (August 2013)
Clicktale Vendor Privacy Audit (August 2013)
 
SEO analytics: How to report & improve performance
SEO analytics: How to report & improve performanceSEO analytics: How to report & improve performance
SEO analytics: How to report & improve performance
 
CRO analytics - How to Continually Optimise
CRO analytics - How to Continually OptimiseCRO analytics - How to Continually Optimise
CRO analytics - How to Continually Optimise
 
Analytics & Optimisation for University sites
Analytics & Optimisation for University sitesAnalytics & Optimisation for University sites
Analytics & Optimisation for University sites
 
Benefits of Google Tag Manager
Benefits of Google Tag ManagerBenefits of Google Tag Manager
Benefits of Google Tag Manager
 
Hard PPC questions for the Panel
Hard PPC questions for the PanelHard PPC questions for the Panel
Hard PPC questions for the Panel
 
Google Tag Manager Flash Tips @ MeasureCamp
Google Tag Manager Flash Tips @ MeasureCampGoogle Tag Manager Flash Tips @ MeasureCamp
Google Tag Manager Flash Tips @ MeasureCamp
 

Último

CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
amitlee9823
 
➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men 🔝Thrissur🔝 Escor...
➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men  🔝Thrissur🔝   Escor...➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men  🔝Thrissur🔝   Escor...
➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men 🔝Thrissur🔝 Escor...
amitlee9823
 
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
amitlee9823
 
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
amitlee9823
 
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
amitlee9823
 
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
amitlee9823
 
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service BangaloreCall Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
amitlee9823
 
👉 Amritsar Call Girl 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Phone No Amri...
👉 Amritsar Call Girl 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Phone No Amri...👉 Amritsar Call Girl 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Phone No Amri...
👉 Amritsar Call Girl 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Phone No Amri...
karishmasinghjnh
 
CHEAP Call Girls in Rabindra Nagar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Rabindra Nagar  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Rabindra Nagar  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Rabindra Nagar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
amitlee9823
 
➥🔝 7737669865 🔝▻ malwa Call-girls in Women Seeking Men 🔝malwa🔝 Escorts Ser...
➥🔝 7737669865 🔝▻ malwa Call-girls in Women Seeking Men  🔝malwa🔝   Escorts Ser...➥🔝 7737669865 🔝▻ malwa Call-girls in Women Seeking Men  🔝malwa🔝   Escorts Ser...
➥🔝 7737669865 🔝▻ malwa Call-girls in Women Seeking Men 🔝malwa🔝 Escorts Ser...
amitlee9823
 

Último (20)

CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
 
Midocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFxMidocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFx
 
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Junnasandra Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
 
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
 
➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men 🔝Thrissur🔝 Escor...
➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men  🔝Thrissur🔝   Escor...➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men  🔝Thrissur🔝   Escor...
➥🔝 7737669865 🔝▻ Thrissur Call-girls in Women Seeking Men 🔝Thrissur🔝 Escor...
 
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men  🔝Bangalore🔝   Esc...
➥🔝 7737669865 🔝▻ Bangalore Call-girls in Women Seeking Men 🔝Bangalore🔝 Esc...
 
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
 
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
 
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
 
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
 
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
 
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort ServiceBDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
 
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service BangaloreCall Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Begur Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
 
👉 Amritsar Call Girl 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Phone No Amri...
👉 Amritsar Call Girl 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Phone No Amri...👉 Amritsar Call Girl 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Phone No Amri...
👉 Amritsar Call Girl 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Phone No Amri...
 
CHEAP Call Girls in Rabindra Nagar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Rabindra Nagar  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Rabindra Nagar  (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Rabindra Nagar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
 
Anomaly detection and data imputation within time series
Anomaly detection and data imputation within time seriesAnomaly detection and data imputation within time series
Anomaly detection and data imputation within time series
 
➥🔝 7737669865 🔝▻ malwa Call-girls in Women Seeking Men 🔝malwa🔝 Escorts Ser...
➥🔝 7737669865 🔝▻ malwa Call-girls in Women Seeking Men  🔝malwa🔝   Escorts Ser...➥🔝 7737669865 🔝▻ malwa Call-girls in Women Seeking Men  🔝malwa🔝   Escorts Ser...
➥🔝 7737669865 🔝▻ malwa Call-girls in Women Seeking Men 🔝malwa🔝 Escorts Ser...
 
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
 

Most Advanced GTM Deployment. Ever!

  • 1. #emetrics @PHILPEARCE New York 26th Oct 2016 Learnings from the most Advanced GTM Deployment I have ever done! (On a site with 1 billion hits a month) By Phil Pearce
  • 2. I`m an Analytics Adventurer & Explorer! I recently did 8 countries in 12 weeks = 4.6 days per country
  • 3. Agenda 1. Set the scene – Size – Complexity – Timelines 2. How we got there – Tools – Strategy 3. Conclusion & take always – Checklist / Solution Library 4. Questions
  • 4. Last week I did a twitter survey….
  • 5. “How many Google Tag Manager installations have YOU done?” 1. Newbie: 1-3 installation 2. Experienced: 4-10 installation 3. Advanced: 10+ installation Survey results https://plus.google.com/117298997433687198127/posts/dW5TjdS7XEV https://twitter.com/philpearce/status/779678727861104640 Super Experienced people
  • 6. AdWords…I have done alot more than 10 GTM & GA Implementations
  • 7. This is the story of one such implementation…
  • 8. So, a beautiful but HUGE new client just signed! • 400 man-hours GTM project • 600 GA classic events • GA classic to Universal pageview migration • Inhouse TMS.js migration to GTM • 6 CMS platforms • Only 3 months to complete! • Fine per task, if not completed within the timeline!
  • 9. Project Complexity Source: builtwith.com/detailed/behemothclient.com Over 6+ CMS platforms & multiple analytics solutions!
  • 10. Project Size Huge site! Number of pages indexed on Google 2,680,000 results 350,000 results
  • 11. Switch from GA classic to GA universal Migrate existing 200 GA events in GTM Add 400 GA events (auto-events) Move pageview from TMS.js (inhouse TMS) into GTM Preliminary GTM account audit Behemoth Project Timeline to climb the mountain
  • 12. 3 month Deadline… If missed = financial penalties per task!
  • 13. In Reality… Inhouse IT dept slow to respond, thus impossible to enforce the task based fines.
  • 14. How did we get to the Summit? And more importantly... • What went right? • What went wrong?
  • 15. The Win was deliver by Technical & Tactical working together! BusinessTechnical
  • 16. Plus lots of Tools & Techniques! Technical (Phil) • Testing Tools • Strawman Test environment • Separate DEV & LIVE environments • Auto-QA • Failsafe deadman switch • Security • Governance of Logins & access levels • Controlling Risk factors Tactical (Agency) • Task prioritisation • Split based on “required client dependencies” • Sorted based on cost vs benefit • Weighted based on strategically important items Wins MistakesWins Mistakes
  • 18. GA classic >> GA universal migration comparison +/-2% Pass +2% Fail -10%Compare on: 1. Pageview Then… 2. Sessions Then.. 3. Users Start with • Hostname GA classic pageTracker GA universal secondTracker
  • 19. GA classic >> GA universal migration comparison +/-2% Pass +2% Fail -10%Compare on: 1. Pageview Then… 2. Sessions Then.. 3. Users GA classic pageTracker GA universal secondTracker Check in this order: 1. Hostname 2. Referral domains 3. ContentGroups 4. Folders 5. URLs
  • 20. GA classic >> GA universal migration comparison +/-2% bit.ly/ga-api-example
  • 21. GoogleSheet highlighted exclude referrals & missing domains e.g. paypal.com exclude referral was missing!
  • 22. PII safeguards …to prevent GA account deletion!
  • 23. PII prevention filters PP01a: TidyURL - Replace email with EMAIL-OBFUSCATED-BY-FILTER@gmail.com (start of string) URL (.*?)(=|%3D)([a-zA-Z0-9_.+-]+(@|%40)[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+)($|&.+) Output URL $A1=EMAIL-OBFUSCATED-BY-FILTER@gmail.com$A5 PP01b: TidyURL - Replace email with EMAIL-OBFUSCATED-BY-FILTER@gmail.com (end of string) URL (.*)(=|%3D)([a-zA-Z0-9_.+-]+(@|%40)[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+)($|&.+) Output URL $A1=EMAIL-OBFUSCATED-BY-FILTER@gmail.com$A5 PP02a: Tidy EventLabel - Replace email with EMAIL-OBFUSCATED-BY-FILTER@gmail.com (start of string) EventLabel (.*?)(=|%3D)([a-zA-Z0-9_.+-]+(@|%40)[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+)($|&.+) Output EventLabel $A1=EMAIL-OBFUSCATED-BY-FILTER@gmail.com$A5 PP02b: Tidy EventLabel - Replace email with EMAIL-OBFUSCATED-BY-FILTER@gmail.com (end of string) EventLabel (.*)(=|%3D)([a-zA-Z0-9_.+-]+(@|%40)[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+)($|&.+) Output EventLabel $A1=EMAIL-OBFUSCATED-BY-FILTER@gmail.com$A5
  • 24. Generic PII exclude params PP_list_lastchecked_2016_10_30, password, password_confirmation, regCode, username, username_confirm, signin[username], signin[runas], signin, sign_in, conf, gpid, obem, inf_contact_key, user_id, userId, username1, frmUsername, nickName, qz_user_name, url_mac, Email, email, mail, MAIL, feedback_email, newEmailAddress, newemailaddress, emailAddress, emailaddress, recipientName, recipientEmail, MMDB_ID, mmdb_id, EMAIL_ID, email_id, email[body], email[subject], interaction[email], interaction[name], CVC_M1RSUBNM, CVC_M1RADDR1, CVC_M1RADDR2, CVC_M1RCITY, CVC_M1RSTATE, CVC_M1RCTRYC, CVC_M1RZIP, CVC_M1REMAIL, CVC_M1RTACCT, MSRSUBNM, MSRADDR1, MSRADDR2, WESCITY, WESSTATE, WESZIP, MSREMAIL, Name, selectedAddress, selectedAddres_0, selectedAddres_1, selectedAddres_2, selectedAddres_3, selectedAddres_4, selectedAddresSize, Address1, Address2, City, State, Zip, zipcode, qz_user_country, state, oauth_token, oauth_verifier, rptregcta, rptregcampaign, nickName, selectedAddress, username1, frmUsername, mac_address
  • 26. Auto-QA feedback loop… bit.ly/qatemplate EventID (GoogleSheet) Added to each GTM tag GA api (Googlesheet) vLookup (GoogleSheet) Note: Ensure CustomDimension[20] enabled in GA settings
  • 27. Auto-QA feedback loop… bit.ly/qatemplate EventID (GoogleSheet) Added to each GTM tag GA api (Googlesheet) vLookup (GoogleSheet)
  • 28. Auto-QA feedback loop… bit.ly/qatemplate
  • 29. GTM auto-event config file bit.ly/gtmconfig (For any CMS) Reminder: open the import files in notepad, then find & replace “yourdomain” and “yourdomain.com” with YOURDOMAIN before import.
  • 32. 2. Client-side switch example <!– Client Side Switch: Google Tag Manager: Output myGTMID --> <script> var myHostname = window.location.hostname; var myGTMID = 'GTM-xxx1'; // LIVE if(myHostname === 'staging.behemothclient.com' || myHostname === 'localhost'){ myGTMID = 'GTM-xxx2'; // DEV } </script> <!-- Google Tag Manager --> <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-xxx1" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer', myGTMID);</script> <!-- End Google Tag Manager -->
  • 33. Note: This method can not be used on JSvariables only Custom HTML tags. 3. Tag annotation & Failsafe block
  • 34. Disable CustomHTML, but allow JS variables. <script> /* Working example: bit.ly/deadman-switch */ window.dataLayer = window.dataLayer || []; dataLayer.push({"gtm.whitelist": ["google", "customPixels", "nonGooglePixels", "nonGoogleScripts", "jsm", "flc", "fls", "k"] }); </script> Disable CustomHTML and JS variables (breaks any JS lookup table wildcards) <script> window.dataLayer = window.dataLayer || []; dataLayer.push({"gtm.blacklist": ["customScripts"] }); </script> 4. The Deadman switch example Thankfully this was never used! Note: alternative method for inline method to disable specific script was considered: <script> window.dataLayer = window.dataLayer || []; dataLayer.push({"hasPreventGTMscrollTrackingBeenSet": true}); var hasPreventGTMscrollTrackingBeenSet = true;
  • 36. Local Test Environment Working Example here: bit.ly/strawman-test2 Click to switch versions
  • 37. JS error benchmarking period before Custom HTML changes deployed. Note: 10% client-side sampling used on errorTracker JS error tracking
  • 39. Project Scope/Tasks Original scope… TMS.js migration UA pageview migrations 400 gtm event migrations 200 inline event migrations - 20 second heartbeat - Scroll tracking - Link Listeners (Outclick, PDF, social) - Videos (2 video players) - Donation ecommerce transactions Added to scope… GTM account clean-up (inc Naming conventions) DEV vs LIVE environments HTML Sandboxes UniversalSecondTracker GA testing profiles SSL tag issues CustomVariables >> CustomDimenssions Subscription Ecommerce tracking Cross-domain tracking
  • 40. Resource Planning Gantt (The "Who") bit.ly/ga-planning-chart2
  • 41. No client involvement: GA Settings: 1. Copy the 5 Goals from the TEST profile view to LIVE profile view 2. Create profile view for CART converted and CART non-converted 3. Create profile view for backend rolledup for Apps and Apps for userID 4. Improving organic by 1.5% by updating channel groupibehemoth No client involvement: GTM config 1. Subscription e-commerce tracking via DOM scrapping 2. Enable Donate ecommerce revenue tracking 3. Consolidating 27 remarkting tags into 4 tags. 4. Reviewing & fix the remaining 178 triggers for errors. 5. Enable Adwords Dynamic remarking using lookup tables 6. Reducing self referrals from 1% to 0% by enabling legacyHistoryImport. Split Client dependencies part1
  • 42. Task list (The "What")
  • 43. Milestones & Deadline planning (The "When") bit.ly/ga-timeline2
  • 44. Preliminary assessment of Scale of Task… GTM audit: bit.ly/gtm-audit-template2
  • 45. 262 Tags, 255 rules and 107 macros! Standardise the naming convention for Tags, Triggers, Variables
  • 46. GA pageview trigger example Consolidated!
  • 47. GTM Before vs After • After (3 months later) • Before (before work started) -33% Reduction in Tags -39% Reduction in Triggers
  • 48. Problem: Lots of configuration mistakes by client Solution: Manual clean-up by senior analyst
  • 49. Solution: Utilise newer feature such as auto-events, lookup tables & tag templates One BIG pile of spaghetti! Inhouse GTM config built-up over a 3 year period with 3+ users
  • 51. Risk of accidentally publishing other users changes!
  • 52. Multiple users: Check-in/Check-out Solution1: Check-in/Check-out processes and enforce View | Edit access. Email Role Account Permissions 01. LIVE 02 DEV phil@agency.com Administrator manage users edit publish dave@agency.com Tester view brian@client.com Administrator manage users view view mary@client.com Administrator manage users view view mathew@client.com Tester view view devtools@client.com Tester view When Check-out set to read-only
  • 53. Solution2: Create User sandboxes User1 | User2 >> DEV >> LIVE Multiple users: sandboxes Email Role Job title Account Permissions 01. LIVE 02 DEV Marys Sandbox Mathews Sandbox phil@agency.com Administrator Implementation Specialist manage users edit publish view view dave@agency.com Tester Project Manager view brian@client.com Administrator Systems Admin manage users view view view view mary@client.com Administrator Analyst manage users view view publish view mathew@client.com Publisher Marketing Manager view view publish devtools@client.com Tester Robot Unit Tester view GTM-xxx1 GTM-xxx2 GTM-zzzz GTM-xxxx
  • 54. GTM user access audit bit.ly/gtm-access-audit2 Also see David Vallejo`s free API based user-access tool here: www.thyngster.com/gaupet-release-google-analytics-user-permissions-exploring-tool
  • 55. Summary of safety features 1. 2 stage authentication 2. PII protection - via GA filter on URI & eventLabel 3. JS error tracking profile 4. Inline switch for GTM-DEV / GTM-LIVE (can be client-side or serverside method) 5. Failsafe/deadman`s switch (dataLayer whitelist)
  • 57. Exceeded monthly hit limit! Note: Hit Tiers above has changed after this project was completed, so there`s now more granular tiers. $$$
  • 58. Solution: renaming universal object “ga” to “ga2” A/B testing tool was sending GA event hits to all trackers on every page = 3x hits
  • 59. Moving TMS.js pageview into GTM was delayed due to clients fragmented codebase WPF 1st pageview script images.behemothclient.com/wpf/CACHE/js/6f599508e0a4-cb1424263825.js images.behemothclient.com/wpf/sites/common/j/analytics.js www-s.behemothclient.com/wpf/sites/common/j/analytics.js WPF 2nd pageview script on Members section media-mmdb.behemothclient.com/static-media/js/analytics.js WPF 3rd pageview script on Gallery buttons images.behemothclient.com/wpf/sites/common/j/jquery.address-1.3.1-grant.min-cb1299116789.js WPF 4th event script on Members section assets.behemothclient.com/behemoth-header/build/lib/analytics.js
  • 60. Deployed via GTM flag... First method not effective as not a common field :( _gaq.push(['_setCustomVar', 5, 'flag', '_gtmDeployed', 3]); ga('secondaryTracker.set', 'dimension20', '_gtmDeployed'); Second method worked a charm! var flag = document.title + '_gtmDeployed'; _gaq.push(['_title', flag ]); ga("secondaryTracker.set", {title: flag}); Note: filter to clean-up the page title was required... PP01a. EXCLUDE hits not deployed via GTM Exclude filter for PageTitle (.*)_gtmDeployed$ PP01b. CLEAN PageTitle PageTitle (.*)_gtmDeployed$ Output PageTitle $A1 PP02. INCLUDE pageview hits only Include hitType=^pageview$
  • 61. Set utmz cookie - so that inline gaq.push events still work, but don’t effect hitlimit Solution: _initData var _gaq = _gaq || []; _gaq.push( ['_setAccount', 'UA-1-1'], ['_addIgnoredRef', {{Page Hostname}} ], ['_addIgnoredRef', {{Page Hostname - www removed}} ], ['_setDomainName', {{jsm_setTopLevelDomain}} ], ['_setAllowLinker', true], ['_initData'] ); plus.google.com/117298997433687198127/posts/McER3buexek
  • 62. https://plus.google.com/117298997433687198127/posts/R5r3Bp88ir7 Creative solution: Enable cross-domain tracking in the Cart funnel without IT dept involvement
  • 65. Efficiency improvements • Less time used on client meetings. • More focused on completing tasks.
  • 66. However… client slow to action tasks 7 day wait "Awaiting Agency" tasks very low :)
  • 68. Human Error on import & publish which caused untested & broken version to be accidentally deployed to LIVE! Solution: User training & 2 people used to verify go-live changes. Wrong version accidentally deployed
  • 70. Client Training • analyticsacademy.withgoogle.com/course/5 • cardinalpath.com/training/google-analytics/analytics-301/ • lynda.com/Google-Tag-Manager-training-tutorials/ • measureschool.com/products/ bit.ly/gtmplaylist
  • 71. Project Learnings/Improvements 1. Remove "human factor" (e.g. manual export from DEV to LIV) 2. Auto-QA change to use TagID and auto-detect if new GA event added in GTM. 3. Enforce GTM audit at the beginning (not optional task) 4. Enforce a Project summary and feedback session at the end of every phase (not optional task) 5. Move onto insight, dashboards, A/B testing or BigQuery sooner.
  • 72. Unexpected wins 1. 1000 tags consolidate to 500 tags reduce gtm.js download size. 2. Reduction in JS errors after TMS.js change to GTM auto-events 3. Much easier to maintain pageview triggers. 4. SSL tag issues fixed 5. Cross-domain tracking was done without IT involvement using JS variable script. 6. VideoProvider tracking was done without IT involvement using DOM scrapping. 7. Ecommerce revenue enabled via DOM scraping.
  • 74. Life saving tools bit.ly/gtm-checklist Technical (Phil) 1. +/-2% migration comparison sheet: bit.ly/ga-api-example 2. Auto-QA sheet: bit.ly/qatemplate 3. GTM auto-config file: bit.ly/gtmconfig 4. DEV strawman examples: bit.ly/strawman-test2 5. GTM developer guide: bit.ly/gtmdevguide2 • Script for "Deployed via GTM flag" to find inline GA scripts (without using a crawler) • Script for _initData to sustain gap.push events Tactical (Agency) 1. Resource planning Gantt sheet: bit.ly/ga-planning-chart2 2. Deadline planning sheet: bit.ly/ga-timeline2 3. GTM user access audit: bit.ly/gtm-access-audit2 4. GTM audit template: bit.ly/gtm-audit-template 5. Free GTM Training videos: bit.ly/gtmplaylist
  • 75. Thankyou & Questions Phil Pearce Senior Web Analyst and GTM specialist phildpearce@gmail.com linkedin.com/in/philpearce Web Analytics Exchange mentor 750 GA questions answered Tracking protection group Free Prize for the best question(s).
  • 76. bit.ly/gtmdevguide2 (free) Prize: GTM developer guide free!! bit.ly/gtmdevguide2