SlideShare a Scribd company logo
1 of 36
Simo Ahava | NetBooster
GTM For Nerds 
MeasureCamp V – 20 September 2014 
function MeasureCampV() { this.awesome = awesome; }
GTM For Nerds 
MeasureCamp V – 20 September 2014 
@SimoAhava 
function MeasureCampV() { this.awesome = awesome; } 
http://google.me/+SimoAhava 
simo@simoahava.com 
www.simoahava.com
MASTERED by desire impulsive, 
By a mighty inward urging, 
I am ready now for singing, 
Ready to begin the coding -- 
A. Gallen-Kallela: The Boat’s Lament
What is dataLayer 
 A JavaScript Array 
@SimoAhava | MeasureCamp V
What is dataLayer 
 A JavaScript Array 
 dataLayer = []; 
@SimoAhava | MeasureCamp V
What is dataLayer 
 A JavaScript Array 
 dataLayer = []; 
 dataLayer.push('item1'); // dataLayer[0] => 'item1’ 
@SimoAhava | MeasureCamp V
What is dataLayer 
 A JavaScript Array 
 dataLayer = []; 
 dataLayer.push('item1'); // dataLayer[0] => 'item1' 
 dataLayer.push({'item2' : [{'data1' : true},{'data2' : 'Peter'}]}); 
// dataLayer[1] => 'item2' : Array[2] 
@SimoAhava | MeasureCamp V
What is dataLayer 
 A JavaScript Array 
 dataLayer = []; 
 dataLayer.push('item1'); // dataLayer[0] => 'item1' 
 dataLayer.push({'item2' : [{'data1' : true},{'data2' : 'Peter'}]}); 
// dataLayer[1] => 'item2' : Array[2] 
 var item2 = dataLayer.pop(); // item2 => Array[2], dataLayer[1] => 
@SimoAhava | MeasureCamp V 
undefined
What is dataLayer 
 A JavaScript Array 
 dataLayer = []; 
 dataLayer.push('item1'); // dataLayer[0] => 'item1' 
 dataLayer.push({'item2' : [{'data1' : true},{'data2' : 'Peter'}]}); 
// dataLayer[1] => 'item2' : Array[2] 
 var item2 = dataLayer.pop(); // item2 => Array[2], dataLayer[1] => 
@SimoAhava | MeasureCamp V 
undefined 
 dataLayer.push({'event' : 'gtm.js'}); // No special effects
What is dataLayer 
 A JavaScript Array 
 dataLayer = []; 
 dataLayer.push('item1'); // dataLayer[0] => 'item1' 
 dataLayer.push({'item2' : [{'data1' : true},{'data2' : 'Peter'}]}); 
// dataLayer[1] => 'item2' : Array[2] 
 var item2 = dataLayer.pop(); // item2 => Array[2], dataLayer[1] => 
@SimoAhava | MeasureCamp V 
undefined 
 dataLayer.push({'event' : 'gtm.js'}); // No special effects 
 There is absolutely nothing special about dataLayer ... or is there?
What is dataLayer 
 A JavaScript Array 
 dataLayer = []; 
 dataLayer.push('item1'); // dataLayer[0] => 'item1' 
 dataLayer.push({'item2' : [{'data1' : true},{'data2' : 'Peter'}]}); 
// dataLayer[1] => 'item2' : Array[2] 
 var item2 = dataLayer.pop(); // item2 => Array[2], dataLayer[1] => 
@SimoAhava | MeasureCamp V 
undefined 
 dataLayer.push({'event' : 'gtm.js'}); // No special effects 
 There is absolutely nothing special about dataLayer ... or is there? 
 It’s the default name of the data structure that Google Tag Manager uses
What is dataLayer 
 …but it looks like GTM overrides the default push() method: 
@SimoAhava | MeasureCamp V
What is dataLayer 
 …but it looks like GTM overrides the default push() method: 
 This does three (visible) things: 
@SimoAhava | MeasureCamp V
What is dataLayer 
 …but it looks like GTM overrides the default push() method: 
 This does three (visible) things: 
1. Initiates a listener which processes the new state of dataLayer after each push() 
2. Sets the maximum length of dataLayer to 300 
3. Instead of returning the length of the Array, a push() returns true if no tags were fired and 
false if tags were fired – synchronous operation for ”Wait for Tags”! 
@SimoAhava | MeasureCamp V
What is dataLayer 
 …but it looks like GTM overrides the default push() method: 
 This does three (visible) things: 
1. Initiates a listener which processes the new state of dataLayer after each push() 
2. Sets the maximum length of dataLayer to 300 
3. Instead of returning the length of the Array, a push() returns true if no tags were fired and 
false if tags were fired – synchronous operation for ”Wait for Tags”! 
 These will all be part of the specification that vendors need to adhere to 
 Memory management such as setting the maximum length of the Array will 
eventually be configurable 
@SimoAhava | MeasureCamp V
A. Gallen-Kallela: Lemminkainen’s Mother 
THERE the blood-stained data model, 
There Google's son and hero, 
Cuts in pieces dataLayer, 
Chops it with his mighty hatchet --
What is Google Tag Manager’s data model 
 An abstract data model, which passes and processes data from dataLayer to 
Google Tag Manager 
@SimoAhava | MeasureCamp V
What is Google Tag Manager’s data model 
 An abstract data model, which passes and processes data from dataLayer to 
Google Tag Manager 
dataLayer Data model 
Tool-agnostic Tool-specific 
Generic Unique 
Accessed directly Accessed via helper 
Structured Abstract 
@SimoAhava | MeasureCamp V
What is Google Tag Manager’s data model 
 In GTM, the interface exposes two methods: 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key') 
 google_tag_manager["GTM-XXXX"].dataLayer.set('key','value') 
@SimoAhava | MeasureCamp V
What is Google Tag Manager’s data model 
 In GTM, the interface exposes two methods: 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key') 
 google_tag_manager["GTM-XXXX"].dataLayer.set('key','value') 
 These are used to access the data stored in the data model, and should not be 
used directly 
@SimoAhava | MeasureCamp V
What is Google Tag Manager’s data model 
 In GTM, the interface exposes two methods: 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key') 
 google_tag_manager["GTM-XXXX"].dataLayer.set('key','value') 
 These are used to access the data stored in the data model, and should not be 
used directly 
 Using get() retrieves the most recent value for ’key’ 
 dataLayer.push({'key1' : 'value1'}); // dataLayer[0] 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // 'value1' 
 dataLayer.push({'key1' : 'value2'}); // dataLayer[1]! 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // 'value2' 
@SimoAhava | MeasureCamp V
What is Google Tag Manager’s data model 
 Cool, get() works nicely with dotted names and nested objects 
 dataLayer.push({'key1.id' : '123'}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1.id'); // '123' 
 dataLayer.push({'key2' : {'id' : '234'}}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key2.id'); // '234’ 
@SimoAhava | MeasureCamp V
What is Google Tag Manager’s data model 
 Cool, get() works nicely with dotted names and nested objects 
 dataLayer.push({'key1.id' : '123'}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1.id'); // '123' 
 dataLayer.push({'key2' : {'id' : '234'}}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key2.id'); // '234’ 
 Yes, get() is the method that is called by your Data Layer Variable Macros 
@SimoAhava | MeasureCamp V
What is Google Tag Manager’s data model 
 Cool, get() works nicely with dotted names and nested objects 
 dataLayer.push({'key1.id' : '123'}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1.id'); // '123' 
 dataLayer.push({'key2' : {'id' : '234'}}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key2.id'); // '234’ 
 Yes, get() is the method that is called by your Data Layer Variable Macros 
 So… 
 When a dataLayer.push() occurs, the arguments are copied to the data 
model 
@SimoAhava | MeasureCamp V
What is Google Tag Manager’s data model 
 Cool, get() works nicely with dotted names and nested objects 
 dataLayer.push({'key1.id' : '123'}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1.id'); // '123' 
 dataLayer.push({'key2' : {'id' : '234'}}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key2.id'); // '234’ 
 Yes, get() is the method that is called by your Data Layer Variable Macros 
 So… 
 When a dataLayer.push() occurs, the arguments are copied to the data 
model 
 The get() method can be used to retrieve data from the data model 
@SimoAhava | MeasureCamp V
A. Gallen-Kallela: The Forging Of The Sampo 
dataLayer, worthy brother, 
Thou, my faithful indexed Array, 
Come and see this wondrous beauty, 
Abstract structure, awesome methods --
Peculiarities of the data model 
 Changing value type overwrites the previous value 
 dataLayer.push({'key1' : [1, 2, 3]}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // Array[3] 
 dataLayer.push({'key1' : 'cool'}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // 'cool' 
@SimoAhava | MeasureCamp V
Peculiarities of the data model 
 Changing value type overwrites the previous value 
 dataLayer.push({'key1' : [1, 2, 3]}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // Array[3] 
 dataLayer.push({'key1' : 'cool'}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // 'cool' 
 Array to Array and plain object to plain object behave a bit differently 
 dataLayer.push({'key1' : [1, 2, 3]}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [1, 2, 3] 
 dataLayer.push({'key1' : [4, 5]}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [4, 5, 3]! 
@SimoAhava | MeasureCamp V
Peculiarities of the data model 
 Updating an Array in the data model is clumsy (and not a good idea) 
 dataLayer.push({'key1' : [1, 2, 3]}); 
 var k = google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [1, 2, 3] 
 k.push(4, 5); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [1, 2, 3, 4, 5] 
@SimoAhava | MeasureCamp V
Peculiarities of the data model 
 Updating an Array in the data model is clumsy (and not a good idea) 
 dataLayer.push({'key1' : [1, 2, 3]}); 
 var k = google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [1, 2, 3] 
 k.push(4, 5); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [1, 2, 3, 4, 5] 
 So there’s a special ’command array’ you can use, which accesses all supported 
methods of the value 
 dataLayer.push({'key1' : [1, 2, 3]}); 
 dataLayer.push(['key1.push', 4, 5]); // Note the square brackets! 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [1, 2, 3, 4, 5] 
@SimoAhava | MeasureCamp V
Peculiarities of the data model 
 Plain object to plain object is more straightforward 
 dataLayer.push({'key1' : {'one' : 1}}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: 1} 
@SimoAhava | MeasureCamp V
Peculiarities of the data model 
 Plain object to plain object is more straightforward 
 dataLayer.push({'key1' : {'one' : 1}}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: 1} 
 dataLayer.push({'key1' : {'two' : 2}}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: 1}, {two: 2} 
@SimoAhava | MeasureCamp V
Peculiarities of the data model 
 Plain object to plain object is more straightforward 
 dataLayer.push({'key1' : {'one' : 1}}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: 1} 
 dataLayer.push({'key1' : {'two' : 2}}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: 1}, {two: 2} 
 dataLayer.push({'key1' : {'one' : {'two' : 3}}}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: {two: 3}}, 
@SimoAhava | MeasureCamp V 
{two: 2}
Peculiarities of the data model 
 You can also run your own functions on values in the data model 
 dataLayer.push({'key1' : {'one' : 1}}); 
 dataLayer.push(function() { 
var key1 = this.get('key1'); 
if(key1.hasOwnProperty('one') { 
this.set('key1', {'one' : 2}); 
} 
}); 
 google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: 2} 
@SimoAhava | MeasureCamp V
@SimoAhava | MeasureCamp V 
Thank you 
www.simoahava.com/analytics/data-layer/ 
www.simoahava.com/analytics/google-tag-manager-data-model/ 
#GTMtips 
http://google.me/+SimoAhava @SimoAhava

More Related Content

What's hot

🎙GA4 Chances & Differences Guide
🎙GA4 Chances & Differences Guide🎙GA4 Chances & Differences Guide
🎙GA4 Chances & Differences GuideŞahin Seçil
 
Fear and Loathing Google in Las Vegas - Lily Ray SEO Presentation 2024
Fear and Loathing Google in Las Vegas - Lily Ray SEO Presentation 2024Fear and Loathing Google in Las Vegas - Lily Ray SEO Presentation 2024
Fear and Loathing Google in Las Vegas - Lily Ray SEO Presentation 2024Lily Ray
 
Ponencia sobre SEO para Ecommerce en Posiciona18
Ponencia sobre SEO para Ecommerce en Posiciona18Ponencia sobre SEO para Ecommerce en Posiciona18
Ponencia sobre SEO para Ecommerce en Posiciona18David Ayala Gil
 
Columbus Web Analytics Wednesday - Google Analytics 4
Columbus Web Analytics Wednesday - Google Analytics 4Columbus Web Analytics Wednesday - Google Analytics 4
Columbus Web Analytics Wednesday - Google Analytics 4Tim Wilson
 
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.pdfAnnaCorbett4
 
An Introduction to the Google Analytics 360 Suite
An Introduction to the Google Analytics 360 SuiteAn Introduction to the Google Analytics 360 Suite
An Introduction to the Google Analytics 360 SuiteSearch Laboratory
 
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 GA4Tom Bennet
 
Guide to-google-analytics google 4
Guide to-google-analytics google 4Guide to-google-analytics google 4
Guide to-google-analytics google 4Nizam Uddin
 
Getting Started with Google Analytics 4
Getting Started with Google Analytics 4Getting Started with Google Analytics 4
Getting Started with Google Analytics 4In Marketing We Trust
 
GA4 Mini Training Webinar Deck.pdf
GA4 Mini Training Webinar Deck.pdfGA4 Mini Training Webinar Deck.pdf
GA4 Mini Training Webinar Deck.pdfBuiltvisible
 
Google Analytics 4 Trial Recommendation
Google Analytics 4 Trial RecommendationGoogle Analytics 4 Trial Recommendation
Google Analytics 4 Trial RecommendationYisrael Segall
 
Advanced Google Analytics 4.0 by Aviso Digital
Advanced Google Analytics 4.0 by Aviso DigitalAdvanced Google Analytics 4.0 by Aviso Digital
Advanced Google Analytics 4.0 by Aviso DigitalSumeet Mayor
 
Hacking GA4 for SEO - Brighton SEO - Apr 2023
Hacking GA4 for SEO - Brighton SEO - Apr 2023Hacking GA4 for SEO - Brighton SEO - Apr 2023
Hacking GA4 for SEO - Brighton SEO - Apr 2023Nitesh Sharoff
 
Google Tag Manager - Introduction & Implementation
Google Tag Manager - Introduction & ImplementationGoogle Tag Manager - Introduction & Implementation
Google Tag Manager - Introduction & ImplementationSearch Commander, Inc.
 
What's new in Google Analytics 4
What's new in Google Analytics 4What's new in Google Analytics 4
What's new in Google Analytics 4Stephen Ellis
 
Potencia tu Tag Manager - User Web Analytics - Eshow 2017
Potencia tu Tag Manager - User Web Analytics - Eshow 2017Potencia tu Tag Manager - User Web Analytics - Eshow 2017
Potencia tu Tag Manager - User Web Analytics - Eshow 2017Iñaki Huerta (ikhuerta)
 
Software Testing for SEO
Software Testing for SEOSoftware Testing for SEO
Software Testing for SEOMichael King
 
Most Advanced GTM Deployment. Ever!
Most Advanced GTM Deployment. Ever!Most Advanced GTM Deployment. Ever!
Most Advanced GTM Deployment. Ever!Phil Pearce
 

What's hot (20)

🎙GA4 Chances & Differences Guide
🎙GA4 Chances & Differences Guide🎙GA4 Chances & Differences Guide
🎙GA4 Chances & Differences Guide
 
Fear and Loathing Google in Las Vegas - Lily Ray SEO Presentation 2024
Fear and Loathing Google in Las Vegas - Lily Ray SEO Presentation 2024Fear and Loathing Google in Las Vegas - Lily Ray SEO Presentation 2024
Fear and Loathing Google in Las Vegas - Lily Ray SEO Presentation 2024
 
Ponencia sobre SEO para Ecommerce en Posiciona18
Ponencia sobre SEO para Ecommerce en Posiciona18Ponencia sobre SEO para Ecommerce en Posiciona18
Ponencia sobre SEO para Ecommerce en Posiciona18
 
Columbus Web Analytics Wednesday - Google Analytics 4
Columbus Web Analytics Wednesday - Google Analytics 4Columbus Web Analytics Wednesday - Google Analytics 4
Columbus Web Analytics Wednesday - 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
 
An Introduction to the Google Analytics 360 Suite
An Introduction to the Google Analytics 360 SuiteAn Introduction to the Google Analytics 360 Suite
An Introduction to the Google Analytics 360 Suite
 
Google Tag Manager 101
Google Tag Manager 101Google Tag Manager 101
Google Tag Manager 101
 
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
 
Guide to-google-analytics google 4
Guide to-google-analytics google 4Guide to-google-analytics google 4
Guide to-google-analytics google 4
 
Getting Started with Google Analytics 4
Getting Started with Google Analytics 4Getting Started with Google Analytics 4
Getting Started with Google Analytics 4
 
GA4 Mini Training Webinar Deck.pdf
GA4 Mini Training Webinar Deck.pdfGA4 Mini Training Webinar Deck.pdf
GA4 Mini Training Webinar Deck.pdf
 
Google Analytics 4 Trial Recommendation
Google Analytics 4 Trial RecommendationGoogle Analytics 4 Trial Recommendation
Google Analytics 4 Trial Recommendation
 
Advanced Google Analytics 4.0 by Aviso Digital
Advanced Google Analytics 4.0 by Aviso DigitalAdvanced Google Analytics 4.0 by Aviso Digital
Advanced Google Analytics 4.0 by Aviso Digital
 
Google Analytics 4: A Quick Start Guide
 Google Analytics 4: A Quick Start Guide Google Analytics 4: A Quick Start Guide
Google Analytics 4: A Quick Start Guide
 
Hacking GA4 for SEO - Brighton SEO - Apr 2023
Hacking GA4 for SEO - Brighton SEO - Apr 2023Hacking GA4 for SEO - Brighton SEO - Apr 2023
Hacking GA4 for SEO - Brighton SEO - Apr 2023
 
Google Tag Manager - Introduction & Implementation
Google Tag Manager - Introduction & ImplementationGoogle Tag Manager - Introduction & Implementation
Google Tag Manager - Introduction & Implementation
 
What's new in Google Analytics 4
What's new in Google Analytics 4What's new in Google Analytics 4
What's new in Google Analytics 4
 
Potencia tu Tag Manager - User Web Analytics - Eshow 2017
Potencia tu Tag Manager - User Web Analytics - Eshow 2017Potencia tu Tag Manager - User Web Analytics - Eshow 2017
Potencia tu Tag Manager - User Web Analytics - Eshow 2017
 
Software Testing for SEO
Software Testing for SEOSoftware Testing for SEO
Software Testing for SEO
 
Most Advanced GTM Deployment. Ever!
Most Advanced GTM Deployment. Ever!Most Advanced GTM Deployment. Ever!
Most Advanced GTM Deployment. Ever!
 

Viewers also liked

Advanced Remarketing in Google Analytics Using CRM Data
Advanced Remarketing in Google Analytics Using CRM DataAdvanced Remarketing in Google Analytics Using CRM Data
Advanced Remarketing in Google Analytics Using CRM Datametricmogul
 
MeasureCamp IX (London) - 10 JavaScript Concepts for web analysts
MeasureCamp IX (London) - 10 JavaScript Concepts for web analystsMeasureCamp IX (London) - 10 JavaScript Concepts for web analysts
MeasureCamp IX (London) - 10 JavaScript Concepts for web analystsSimo Ahava
 
Search Marketer's Toolkit for Google Tag Manager and Google Analytics
Search Marketer's Toolkit for Google Tag Manager and Google AnalyticsSearch Marketer's Toolkit for Google Tag Manager and Google Analytics
Search Marketer's Toolkit for Google Tag Manager and Google AnalyticsSimo Ahava
 
Advanced Form Tracking in Google Tag Manager
Advanced Form Tracking in Google Tag ManagerAdvanced Form Tracking in Google Tag Manager
Advanced Form Tracking in Google Tag ManagerSimo Ahava
 
Google Tag Manager (GTM)
Google Tag Manager (GTM)Google Tag Manager (GTM)
Google Tag Manager (GTM)Dragos Ionita
 
Tricks and tweaks for Google Analytics and Google Tag Manager
Tricks and tweaks for Google Analytics and Google Tag ManagerTricks and tweaks for Google Analytics and Google Tag Manager
Tricks and tweaks for Google Analytics and Google Tag ManagerSimo Ahava
 
Google Tag Manager for beginners
Google Tag Manager for beginnersGoogle Tag Manager for beginners
Google Tag Manager for beginnersL3analytics
 
Be Critical: Going Beyond The Defaults With GA And GTM (SMX Munich 2015)
Be Critical: Going Beyond The Defaults With GA And GTM (SMX Munich 2015)Be Critical: Going Beyond The Defaults With GA And GTM (SMX Munich 2015)
Be Critical: Going Beyond The Defaults With GA And GTM (SMX Munich 2015)Simo Ahava
 
What's the weather like? MeasureFest 2014
What's the weather like? MeasureFest 2014What's the weather like? MeasureFest 2014
What's the weather like? MeasureFest 2014Simo Ahava
 
Rationalizing Tag Management
Rationalizing Tag ManagementRationalizing Tag Management
Rationalizing Tag ManagementSimo Ahava
 
Meaningful Data - Reaktor Breakpoint 2015
Meaningful Data - Reaktor Breakpoint 2015Meaningful Data - Reaktor Breakpoint 2015
Meaningful Data - Reaktor Breakpoint 2015Simo Ahava
 
Tag Management Solutions - Best Data Ever (Marketing Festival 2014)
Tag Management Solutions - Best Data Ever (Marketing Festival 2014)Tag Management Solutions - Best Data Ever (Marketing Festival 2014)
Tag Management Solutions - Best Data Ever (Marketing Festival 2014)Simo Ahava
 
Content Analytics - The Whys And Hows For Google Analytics
Content Analytics - The Whys And Hows For Google AnalyticsContent Analytics - The Whys And Hows For Google Analytics
Content Analytics - The Whys And Hows For Google AnalyticsSimo Ahava
 
SuperWeek 2016 - Garbage In Garbage Out: Data Quality in a TMS World
SuperWeek 2016 - Garbage In Garbage Out: Data Quality in a TMS WorldSuperWeek 2016 - Garbage In Garbage Out: Data Quality in a TMS World
SuperWeek 2016 - Garbage In Garbage Out: Data Quality in a TMS WorldSimo Ahava
 
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)Mahendra Patel
 
Google Tag Manager Advanced - SEOCampixx 2016
Google Tag Manager Advanced - SEOCampixx 2016Google Tag Manager Advanced - SEOCampixx 2016
Google Tag Manager Advanced - SEOCampixx 2016Jan Berens
 
Google Tag Manager (Manual in English)
Google Tag Manager (Manual in English)Google Tag Manager (Manual in English)
Google Tag Manager (Manual in English)Sergey Bizikin
 
Content Engagement with Google Analytics (Emerce Conversion 2015)
Content Engagement with Google Analytics (Emerce Conversion 2015)Content Engagement with Google Analytics (Emerce Conversion 2015)
Content Engagement with Google Analytics (Emerce Conversion 2015)Simo Ahava
 
Universal Analytics and Google Tag Manager - Superweek 2014
Universal Analytics and Google Tag Manager - Superweek 2014Universal Analytics and Google Tag Manager - Superweek 2014
Universal Analytics and Google Tag Manager - Superweek 2014Analytics Ninja LLC
 

Viewers also liked (20)

Advanced Remarketing in Google Analytics Using CRM Data
Advanced Remarketing in Google Analytics Using CRM DataAdvanced Remarketing in Google Analytics Using CRM Data
Advanced Remarketing in Google Analytics Using CRM Data
 
The Lego Data Layer
The Lego Data LayerThe Lego Data Layer
The Lego Data Layer
 
MeasureCamp IX (London) - 10 JavaScript Concepts for web analysts
MeasureCamp IX (London) - 10 JavaScript Concepts for web analystsMeasureCamp IX (London) - 10 JavaScript Concepts for web analysts
MeasureCamp IX (London) - 10 JavaScript Concepts for web analysts
 
Search Marketer's Toolkit for Google Tag Manager and Google Analytics
Search Marketer's Toolkit for Google Tag Manager and Google AnalyticsSearch Marketer's Toolkit for Google Tag Manager and Google Analytics
Search Marketer's Toolkit for Google Tag Manager and Google Analytics
 
Advanced Form Tracking in Google Tag Manager
Advanced Form Tracking in Google Tag ManagerAdvanced Form Tracking in Google Tag Manager
Advanced Form Tracking in Google Tag Manager
 
Google Tag Manager (GTM)
Google Tag Manager (GTM)Google Tag Manager (GTM)
Google Tag Manager (GTM)
 
Tricks and tweaks for Google Analytics and Google Tag Manager
Tricks and tweaks for Google Analytics and Google Tag ManagerTricks and tweaks for Google Analytics and Google Tag Manager
Tricks and tweaks for Google Analytics and Google Tag Manager
 
Google Tag Manager for beginners
Google Tag Manager for beginnersGoogle Tag Manager for beginners
Google Tag Manager for beginners
 
Be Critical: Going Beyond The Defaults With GA And GTM (SMX Munich 2015)
Be Critical: Going Beyond The Defaults With GA And GTM (SMX Munich 2015)Be Critical: Going Beyond The Defaults With GA And GTM (SMX Munich 2015)
Be Critical: Going Beyond The Defaults With GA And GTM (SMX Munich 2015)
 
What's the weather like? MeasureFest 2014
What's the weather like? MeasureFest 2014What's the weather like? MeasureFest 2014
What's the weather like? MeasureFest 2014
 
Rationalizing Tag Management
Rationalizing Tag ManagementRationalizing Tag Management
Rationalizing Tag Management
 
Meaningful Data - Reaktor Breakpoint 2015
Meaningful Data - Reaktor Breakpoint 2015Meaningful Data - Reaktor Breakpoint 2015
Meaningful Data - Reaktor Breakpoint 2015
 
Tag Management Solutions - Best Data Ever (Marketing Festival 2014)
Tag Management Solutions - Best Data Ever (Marketing Festival 2014)Tag Management Solutions - Best Data Ever (Marketing Festival 2014)
Tag Management Solutions - Best Data Ever (Marketing Festival 2014)
 
Content Analytics - The Whys And Hows For Google Analytics
Content Analytics - The Whys And Hows For Google AnalyticsContent Analytics - The Whys And Hows For Google Analytics
Content Analytics - The Whys And Hows For Google Analytics
 
SuperWeek 2016 - Garbage In Garbage Out: Data Quality in a TMS World
SuperWeek 2016 - Garbage In Garbage Out: Data Quality in a TMS WorldSuperWeek 2016 - Garbage In Garbage Out: Data Quality in a TMS World
SuperWeek 2016 - Garbage In Garbage Out: Data Quality in a TMS World
 
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)
 
Google Tag Manager Advanced - SEOCampixx 2016
Google Tag Manager Advanced - SEOCampixx 2016Google Tag Manager Advanced - SEOCampixx 2016
Google Tag Manager Advanced - SEOCampixx 2016
 
Google Tag Manager (Manual in English)
Google Tag Manager (Manual in English)Google Tag Manager (Manual in English)
Google Tag Manager (Manual in English)
 
Content Engagement with Google Analytics (Emerce Conversion 2015)
Content Engagement with Google Analytics (Emerce Conversion 2015)Content Engagement with Google Analytics (Emerce Conversion 2015)
Content Engagement with Google Analytics (Emerce Conversion 2015)
 
Universal Analytics and Google Tag Manager - Superweek 2014
Universal Analytics and Google Tag Manager - Superweek 2014Universal Analytics and Google Tag Manager - Superweek 2014
Universal Analytics and Google Tag Manager - Superweek 2014
 

Similar to GTM Data Model Explained

Data Layer - MeasureCamp VII 2015
Data Layer - MeasureCamp VII 2015Data Layer - MeasureCamp VII 2015
Data Layer - MeasureCamp VII 2015Simo Ahava
 
"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 implementationPhil Pearce
 
Simo's Top 30 GTM tips
Simo's Top 30 GTM tipsSimo's Top 30 GTM tips
Simo's Top 30 GTM tipsSimo Ahava
 
Game Playing RL Agent
Game Playing RL AgentGame Playing RL Agent
Game Playing RL AgentApache MXNet
 
AWS Lambda를 통한 Tensorflow 및 Keras 기반 추론 모델 서비스하기 :: 이준범 :: AWS Summit Seoul 2018
AWS Lambda를 통한 Tensorflow 및 Keras 기반 추론 모델 서비스하기 :: 이준범 :: AWS Summit Seoul 2018AWS Lambda를 통한 Tensorflow 및 Keras 기반 추론 모델 서비스하기 :: 이준범 :: AWS Summit Seoul 2018
AWS Lambda를 통한 Tensorflow 및 Keras 기반 추론 모델 서비스하기 :: 이준범 :: AWS Summit Seoul 2018Amazon Web Services Korea
 
Build, train and deploy your ML models with Amazon Sage Maker
Build, train and deploy your ML models with Amazon Sage MakerBuild, train and deploy your ML models with Amazon Sage Maker
Build, train and deploy your ML models with Amazon Sage MakerAWS User Group Bengaluru
 
Oracle - Program with PL/SQL - Lession 17
Oracle - Program with PL/SQL - Lession 17Oracle - Program with PL/SQL - Lession 17
Oracle - Program with PL/SQL - Lession 17Thuan Nguyen
 
XQuery Triggers in Native XML Database Sedna
XQuery Triggers in Native XML Database SednaXQuery Triggers in Native XML Database Sedna
XQuery Triggers in Native XML Database Sednamaria.grineva
 
Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...
Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...
Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...DrupalCamp MSK
 
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 MonsterPhil Pearce
 
Javascript & SQL within database management system
Javascript & SQL within database management systemJavascript & SQL within database management system
Javascript & SQL within database management systemClusterpoint
 
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...Eventz.Digital
 
Bulletproof Jobs: Patterns For Large-Scale Spark Processing
Bulletproof Jobs: Patterns For Large-Scale Spark ProcessingBulletproof Jobs: Patterns For Large-Scale Spark Processing
Bulletproof Jobs: Patterns For Large-Scale Spark ProcessingSpark Summit
 
Using Task Queues and D3.js to build an analytics product on App Engine
Using Task Queues and D3.js to build an analytics product on App EngineUsing Task Queues and D3.js to build an analytics product on App Engine
Using Task Queues and D3.js to build an analytics product on App EngineRiver of Talent
 

Similar to GTM Data Model Explained (20)

Data Layer - MeasureCamp VII 2015
Data Layer - MeasureCamp VII 2015Data Layer - MeasureCamp VII 2015
Data Layer - MeasureCamp VII 2015
 
"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
 
Simo's Top 30 GTM tips
Simo's Top 30 GTM tipsSimo's Top 30 GTM tips
Simo's Top 30 GTM tips
 
Speed bumps ahead
Speed bumps aheadSpeed bumps ahead
Speed bumps ahead
 
Game Playing RL Agent
Game Playing RL AgentGame Playing RL Agent
Game Playing RL Agent
 
AWS Lambda를 통한 Tensorflow 및 Keras 기반 추론 모델 서비스하기 :: 이준범 :: AWS Summit Seoul 2018
AWS Lambda를 통한 Tensorflow 및 Keras 기반 추론 모델 서비스하기 :: 이준범 :: AWS Summit Seoul 2018AWS Lambda를 통한 Tensorflow 및 Keras 기반 추론 모델 서비스하기 :: 이준범 :: AWS Summit Seoul 2018
AWS Lambda를 통한 Tensorflow 및 Keras 기반 추론 모델 서비스하기 :: 이준범 :: AWS Summit Seoul 2018
 
Graphite
GraphiteGraphite
Graphite
 
Build, train and deploy your ML models with Amazon Sage Maker
Build, train and deploy your ML models with Amazon Sage MakerBuild, train and deploy your ML models with Amazon Sage Maker
Build, train and deploy your ML models with Amazon Sage Maker
 
Oracle - Program with PL/SQL - Lession 17
Oracle - Program with PL/SQL - Lession 17Oracle - Program with PL/SQL - Lession 17
Oracle - Program with PL/SQL - Lession 17
 
XQuery Triggers in Native XML Database Sedna
XQuery Triggers in Native XML Database SednaXQuery Triggers in Native XML Database Sedna
XQuery Triggers in Native XML Database Sedna
 
Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...
Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...
Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...
 
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
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
Javascript & SQL within database management system
Javascript & SQL within database management systemJavascript & SQL within database management system
Javascript & SQL within database management system
 
Hacking Movable Type
Hacking Movable TypeHacking Movable Type
Hacking Movable Type
 
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...
 
JavaScript Refactoring
JavaScript RefactoringJavaScript Refactoring
JavaScript Refactoring
 
Clean Javascript
Clean JavascriptClean Javascript
Clean Javascript
 
Bulletproof Jobs: Patterns For Large-Scale Spark Processing
Bulletproof Jobs: Patterns For Large-Scale Spark ProcessingBulletproof Jobs: Patterns For Large-Scale Spark Processing
Bulletproof Jobs: Patterns For Large-Scale Spark Processing
 
Using Task Queues and D3.js to build an analytics product on App Engine
Using Task Queues and D3.js to build an analytics product on App EngineUsing Task Queues and D3.js to build an analytics product on App Engine
Using Task Queues and D3.js to build an analytics product on App Engine
 

More from Simo Ahava

Web Browsers and Tracking Protections
Web Browsers and Tracking ProtectionsWeb Browsers and Tracking Protections
Web Browsers and Tracking ProtectionsSimo Ahava
 
Server-side Tagging in Google Tag Manager - MeasureSummit 2020
Server-side Tagging in Google Tag Manager - MeasureSummit 2020Server-side Tagging in Google Tag Manager - MeasureSummit 2020
Server-side Tagging in Google Tag Manager - MeasureSummit 2020Simo Ahava
 
Browser Tracking Protections - SuperWeek 2020
Browser Tracking Protections - SuperWeek 2020Browser Tracking Protections - SuperWeek 2020
Browser Tracking Protections - SuperWeek 2020Simo Ahava
 
You can't spell MEASURE without CUSTOMIZATION
You can't spell MEASURE without CUSTOMIZATIONYou can't spell MEASURE without CUSTOMIZATION
You can't spell MEASURE without CUSTOMIZATIONSimo Ahava
 
Essential Search Marketing Tweaks For Google Analytics And Google Tag Manager
Essential Search Marketing Tweaks For Google Analytics And Google Tag ManagerEssential Search Marketing Tweaks For Google Analytics And Google Tag Manager
Essential Search Marketing Tweaks For Google Analytics And Google Tag ManagerSimo Ahava
 
Agile Analytics
Agile AnalyticsAgile Analytics
Agile AnalyticsSimo Ahava
 
Google Tag Manager - 5 years. What have we learned?
Google Tag Manager - 5 years. What have we learned?Google Tag Manager - 5 years. What have we learned?
Google Tag Manager - 5 years. What have we learned?Simo Ahava
 
Meaningful Data - Best Internet Conference 2015 (Lithuania)
Meaningful Data - Best Internet Conference 2015 (Lithuania)Meaningful Data - Best Internet Conference 2015 (Lithuania)
Meaningful Data - Best Internet Conference 2015 (Lithuania)Simo Ahava
 
Key Insights From Funnels - Enhanced Ecommerce For Google Analytics
Key Insights From Funnels - Enhanced Ecommerce For Google AnalyticsKey Insights From Funnels - Enhanced Ecommerce For Google Analytics
Key Insights From Funnels - Enhanced Ecommerce For Google AnalyticsSimo Ahava
 
Enhanced Ecommerce For Content (SMX München 2015)
Enhanced Ecommerce For Content (SMX München 2015)Enhanced Ecommerce For Content (SMX München 2015)
Enhanced Ecommerce For Content (SMX München 2015)Simo Ahava
 
Google Analytics Bag O' Tricks
Google Analytics Bag O' TricksGoogle Analytics Bag O' Tricks
Google Analytics Bag O' TricksSimo Ahava
 

More from Simo Ahava (11)

Web Browsers and Tracking Protections
Web Browsers and Tracking ProtectionsWeb Browsers and Tracking Protections
Web Browsers and Tracking Protections
 
Server-side Tagging in Google Tag Manager - MeasureSummit 2020
Server-side Tagging in Google Tag Manager - MeasureSummit 2020Server-side Tagging in Google Tag Manager - MeasureSummit 2020
Server-side Tagging in Google Tag Manager - MeasureSummit 2020
 
Browser Tracking Protections - SuperWeek 2020
Browser Tracking Protections - SuperWeek 2020Browser Tracking Protections - SuperWeek 2020
Browser Tracking Protections - SuperWeek 2020
 
You can't spell MEASURE without CUSTOMIZATION
You can't spell MEASURE without CUSTOMIZATIONYou can't spell MEASURE without CUSTOMIZATION
You can't spell MEASURE without CUSTOMIZATION
 
Essential Search Marketing Tweaks For Google Analytics And Google Tag Manager
Essential Search Marketing Tweaks For Google Analytics And Google Tag ManagerEssential Search Marketing Tweaks For Google Analytics And Google Tag Manager
Essential Search Marketing Tweaks For Google Analytics And Google Tag Manager
 
Agile Analytics
Agile AnalyticsAgile Analytics
Agile Analytics
 
Google Tag Manager - 5 years. What have we learned?
Google Tag Manager - 5 years. What have we learned?Google Tag Manager - 5 years. What have we learned?
Google Tag Manager - 5 years. What have we learned?
 
Meaningful Data - Best Internet Conference 2015 (Lithuania)
Meaningful Data - Best Internet Conference 2015 (Lithuania)Meaningful Data - Best Internet Conference 2015 (Lithuania)
Meaningful Data - Best Internet Conference 2015 (Lithuania)
 
Key Insights From Funnels - Enhanced Ecommerce For Google Analytics
Key Insights From Funnels - Enhanced Ecommerce For Google AnalyticsKey Insights From Funnels - Enhanced Ecommerce For Google Analytics
Key Insights From Funnels - Enhanced Ecommerce For Google Analytics
 
Enhanced Ecommerce For Content (SMX München 2015)
Enhanced Ecommerce For Content (SMX München 2015)Enhanced Ecommerce For Content (SMX München 2015)
Enhanced Ecommerce For Content (SMX München 2015)
 
Google Analytics Bag O' Tricks
Google Analytics Bag O' TricksGoogle Analytics Bag O' Tricks
Google Analytics Bag O' Tricks
 

Recently uploaded

Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhimiss dipika
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa494f574xmv
 
NSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationNSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationMarko4394
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书rnrncn29
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书zdzoqco
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书rnrncn29
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Sonam Pathan
 
Unidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxUnidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxmibuzondetrabajo
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作ys8omjxb
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predieusebiomeyer
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Paul Calvano
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxDyna Gilbert
 
Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxQ4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxeditsforyah
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationLinaWolf1
 
Internet of Things Presentation (IoT).pptx
Internet of Things Presentation (IoT).pptxInternet of Things Presentation (IoT).pptx
Internet of Things Presentation (IoT).pptxErYashwantJagtap
 

Recently uploaded (17)

Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
 
NSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationNSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentation
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
 
Unidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxUnidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptx
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predi
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptx
 
Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxQ4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptx
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
 
Internet of Things Presentation (IoT).pptx
Internet of Things Presentation (IoT).pptxInternet of Things Presentation (IoT).pptx
Internet of Things Presentation (IoT).pptx
 

GTM Data Model Explained

  • 1. Simo Ahava | NetBooster
  • 2. GTM For Nerds MeasureCamp V – 20 September 2014 function MeasureCampV() { this.awesome = awesome; }
  • 3. GTM For Nerds MeasureCamp V – 20 September 2014 @SimoAhava function MeasureCampV() { this.awesome = awesome; } http://google.me/+SimoAhava simo@simoahava.com www.simoahava.com
  • 4. MASTERED by desire impulsive, By a mighty inward urging, I am ready now for singing, Ready to begin the coding -- A. Gallen-Kallela: The Boat’s Lament
  • 5. What is dataLayer  A JavaScript Array @SimoAhava | MeasureCamp V
  • 6. What is dataLayer  A JavaScript Array  dataLayer = []; @SimoAhava | MeasureCamp V
  • 7. What is dataLayer  A JavaScript Array  dataLayer = [];  dataLayer.push('item1'); // dataLayer[0] => 'item1’ @SimoAhava | MeasureCamp V
  • 8. What is dataLayer  A JavaScript Array  dataLayer = [];  dataLayer.push('item1'); // dataLayer[0] => 'item1'  dataLayer.push({'item2' : [{'data1' : true},{'data2' : 'Peter'}]}); // dataLayer[1] => 'item2' : Array[2] @SimoAhava | MeasureCamp V
  • 9. What is dataLayer  A JavaScript Array  dataLayer = [];  dataLayer.push('item1'); // dataLayer[0] => 'item1'  dataLayer.push({'item2' : [{'data1' : true},{'data2' : 'Peter'}]}); // dataLayer[1] => 'item2' : Array[2]  var item2 = dataLayer.pop(); // item2 => Array[2], dataLayer[1] => @SimoAhava | MeasureCamp V undefined
  • 10. What is dataLayer  A JavaScript Array  dataLayer = [];  dataLayer.push('item1'); // dataLayer[0] => 'item1'  dataLayer.push({'item2' : [{'data1' : true},{'data2' : 'Peter'}]}); // dataLayer[1] => 'item2' : Array[2]  var item2 = dataLayer.pop(); // item2 => Array[2], dataLayer[1] => @SimoAhava | MeasureCamp V undefined  dataLayer.push({'event' : 'gtm.js'}); // No special effects
  • 11. What is dataLayer  A JavaScript Array  dataLayer = [];  dataLayer.push('item1'); // dataLayer[0] => 'item1'  dataLayer.push({'item2' : [{'data1' : true},{'data2' : 'Peter'}]}); // dataLayer[1] => 'item2' : Array[2]  var item2 = dataLayer.pop(); // item2 => Array[2], dataLayer[1] => @SimoAhava | MeasureCamp V undefined  dataLayer.push({'event' : 'gtm.js'}); // No special effects  There is absolutely nothing special about dataLayer ... or is there?
  • 12. What is dataLayer  A JavaScript Array  dataLayer = [];  dataLayer.push('item1'); // dataLayer[0] => 'item1'  dataLayer.push({'item2' : [{'data1' : true},{'data2' : 'Peter'}]}); // dataLayer[1] => 'item2' : Array[2]  var item2 = dataLayer.pop(); // item2 => Array[2], dataLayer[1] => @SimoAhava | MeasureCamp V undefined  dataLayer.push({'event' : 'gtm.js'}); // No special effects  There is absolutely nothing special about dataLayer ... or is there?  It’s the default name of the data structure that Google Tag Manager uses
  • 13. What is dataLayer  …but it looks like GTM overrides the default push() method: @SimoAhava | MeasureCamp V
  • 14. What is dataLayer  …but it looks like GTM overrides the default push() method:  This does three (visible) things: @SimoAhava | MeasureCamp V
  • 15. What is dataLayer  …but it looks like GTM overrides the default push() method:  This does three (visible) things: 1. Initiates a listener which processes the new state of dataLayer after each push() 2. Sets the maximum length of dataLayer to 300 3. Instead of returning the length of the Array, a push() returns true if no tags were fired and false if tags were fired – synchronous operation for ”Wait for Tags”! @SimoAhava | MeasureCamp V
  • 16. What is dataLayer  …but it looks like GTM overrides the default push() method:  This does three (visible) things: 1. Initiates a listener which processes the new state of dataLayer after each push() 2. Sets the maximum length of dataLayer to 300 3. Instead of returning the length of the Array, a push() returns true if no tags were fired and false if tags were fired – synchronous operation for ”Wait for Tags”!  These will all be part of the specification that vendors need to adhere to  Memory management such as setting the maximum length of the Array will eventually be configurable @SimoAhava | MeasureCamp V
  • 17. A. Gallen-Kallela: Lemminkainen’s Mother THERE the blood-stained data model, There Google's son and hero, Cuts in pieces dataLayer, Chops it with his mighty hatchet --
  • 18. What is Google Tag Manager’s data model  An abstract data model, which passes and processes data from dataLayer to Google Tag Manager @SimoAhava | MeasureCamp V
  • 19. What is Google Tag Manager’s data model  An abstract data model, which passes and processes data from dataLayer to Google Tag Manager dataLayer Data model Tool-agnostic Tool-specific Generic Unique Accessed directly Accessed via helper Structured Abstract @SimoAhava | MeasureCamp V
  • 20. What is Google Tag Manager’s data model  In GTM, the interface exposes two methods:  google_tag_manager["GTM-XXXX"].dataLayer.get('key')  google_tag_manager["GTM-XXXX"].dataLayer.set('key','value') @SimoAhava | MeasureCamp V
  • 21. What is Google Tag Manager’s data model  In GTM, the interface exposes two methods:  google_tag_manager["GTM-XXXX"].dataLayer.get('key')  google_tag_manager["GTM-XXXX"].dataLayer.set('key','value')  These are used to access the data stored in the data model, and should not be used directly @SimoAhava | MeasureCamp V
  • 22. What is Google Tag Manager’s data model  In GTM, the interface exposes two methods:  google_tag_manager["GTM-XXXX"].dataLayer.get('key')  google_tag_manager["GTM-XXXX"].dataLayer.set('key','value')  These are used to access the data stored in the data model, and should not be used directly  Using get() retrieves the most recent value for ’key’  dataLayer.push({'key1' : 'value1'}); // dataLayer[0]  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // 'value1'  dataLayer.push({'key1' : 'value2'}); // dataLayer[1]!  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // 'value2' @SimoAhava | MeasureCamp V
  • 23. What is Google Tag Manager’s data model  Cool, get() works nicely with dotted names and nested objects  dataLayer.push({'key1.id' : '123'});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1.id'); // '123'  dataLayer.push({'key2' : {'id' : '234'}});  google_tag_manager["GTM-XXXX"].dataLayer.get('key2.id'); // '234’ @SimoAhava | MeasureCamp V
  • 24. What is Google Tag Manager’s data model  Cool, get() works nicely with dotted names and nested objects  dataLayer.push({'key1.id' : '123'});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1.id'); // '123'  dataLayer.push({'key2' : {'id' : '234'}});  google_tag_manager["GTM-XXXX"].dataLayer.get('key2.id'); // '234’  Yes, get() is the method that is called by your Data Layer Variable Macros @SimoAhava | MeasureCamp V
  • 25. What is Google Tag Manager’s data model  Cool, get() works nicely with dotted names and nested objects  dataLayer.push({'key1.id' : '123'});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1.id'); // '123'  dataLayer.push({'key2' : {'id' : '234'}});  google_tag_manager["GTM-XXXX"].dataLayer.get('key2.id'); // '234’  Yes, get() is the method that is called by your Data Layer Variable Macros  So…  When a dataLayer.push() occurs, the arguments are copied to the data model @SimoAhava | MeasureCamp V
  • 26. What is Google Tag Manager’s data model  Cool, get() works nicely with dotted names and nested objects  dataLayer.push({'key1.id' : '123'});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1.id'); // '123'  dataLayer.push({'key2' : {'id' : '234'}});  google_tag_manager["GTM-XXXX"].dataLayer.get('key2.id'); // '234’  Yes, get() is the method that is called by your Data Layer Variable Macros  So…  When a dataLayer.push() occurs, the arguments are copied to the data model  The get() method can be used to retrieve data from the data model @SimoAhava | MeasureCamp V
  • 27. A. Gallen-Kallela: The Forging Of The Sampo dataLayer, worthy brother, Thou, my faithful indexed Array, Come and see this wondrous beauty, Abstract structure, awesome methods --
  • 28. Peculiarities of the data model  Changing value type overwrites the previous value  dataLayer.push({'key1' : [1, 2, 3]});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // Array[3]  dataLayer.push({'key1' : 'cool'});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // 'cool' @SimoAhava | MeasureCamp V
  • 29. Peculiarities of the data model  Changing value type overwrites the previous value  dataLayer.push({'key1' : [1, 2, 3]});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // Array[3]  dataLayer.push({'key1' : 'cool'});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // 'cool'  Array to Array and plain object to plain object behave a bit differently  dataLayer.push({'key1' : [1, 2, 3]});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [1, 2, 3]  dataLayer.push({'key1' : [4, 5]});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [4, 5, 3]! @SimoAhava | MeasureCamp V
  • 30. Peculiarities of the data model  Updating an Array in the data model is clumsy (and not a good idea)  dataLayer.push({'key1' : [1, 2, 3]});  var k = google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [1, 2, 3]  k.push(4, 5);  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [1, 2, 3, 4, 5] @SimoAhava | MeasureCamp V
  • 31. Peculiarities of the data model  Updating an Array in the data model is clumsy (and not a good idea)  dataLayer.push({'key1' : [1, 2, 3]});  var k = google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [1, 2, 3]  k.push(4, 5);  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [1, 2, 3, 4, 5]  So there’s a special ’command array’ you can use, which accesses all supported methods of the value  dataLayer.push({'key1' : [1, 2, 3]});  dataLayer.push(['key1.push', 4, 5]); // Note the square brackets!  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // [1, 2, 3, 4, 5] @SimoAhava | MeasureCamp V
  • 32. Peculiarities of the data model  Plain object to plain object is more straightforward  dataLayer.push({'key1' : {'one' : 1}});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: 1} @SimoAhava | MeasureCamp V
  • 33. Peculiarities of the data model  Plain object to plain object is more straightforward  dataLayer.push({'key1' : {'one' : 1}});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: 1}  dataLayer.push({'key1' : {'two' : 2}});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: 1}, {two: 2} @SimoAhava | MeasureCamp V
  • 34. Peculiarities of the data model  Plain object to plain object is more straightforward  dataLayer.push({'key1' : {'one' : 1}});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: 1}  dataLayer.push({'key1' : {'two' : 2}});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: 1}, {two: 2}  dataLayer.push({'key1' : {'one' : {'two' : 3}}});  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: {two: 3}}, @SimoAhava | MeasureCamp V {two: 2}
  • 35. Peculiarities of the data model  You can also run your own functions on values in the data model  dataLayer.push({'key1' : {'one' : 1}});  dataLayer.push(function() { var key1 = this.get('key1'); if(key1.hasOwnProperty('one') { this.set('key1', {'one' : 2}); } });  google_tag_manager["GTM-XXXX"].dataLayer.get('key1'); // {one: 2} @SimoAhava | MeasureCamp V
  • 36. @SimoAhava | MeasureCamp V Thank you www.simoahava.com/analytics/data-layer/ www.simoahava.com/analytics/google-tag-manager-data-model/ #GTMtips http://google.me/+SimoAhava @SimoAhava