The document discusses Google Analytics and strategies for making metrics more meaningful. It proposes treating blog content like online products by tracking things like page views, scroll depth, and dwell time to measure user engagement. Specific strategies covered include using the Page Visibility API to determine meaningful page views and modeling content engagement metrics after ecommerce metrics like product impressions, add to cart, and purchase. The tips provided emphasize designing data collection with analysis in mind.
22. SUPERWEEK 2015 | #SPWK | @SimoAhava
APIS, WORKERS, LIBRARIES, SPECIFICATIONS
ECMAScript
DOMSettableTokenList
Web Audio
AutocompleteErrorEvent
Animation Timing
DOMTokenList
DOM
Fullscreen
Drag and Drop
SVG
Indexed DB
DocumentFragment
DOMError
File API
ChildNode
Media
DOMImplementation
Web Sockets and Messaging
Event
WebGL
Visibility
Web Storage
Document
EventSource
CSS Object Model
Comment
Web Workers
Attr
WebRTC
Selectors
DocumentType
Offline
Element
CharacterData
Browser
Canvas
EventListener
CustomEvent
Shadow DOM
CloseEvent
File System API
BroadcastChannel
Typed Arrays
Pointer Lock
Elements
23. SUPERWEEK 2015 | #SPWK | @SimoAhava
APIS, WORKERS, LIBRARIES, SPECIFICATIONS
ECMAScript
DOMSettableTokenList
Web Audio
AutocompleteErrorEvent
Animation Timing
DOMTokenList
DOM
Fullscreen
Drag and Drop
SVG
Indexed DB
DocumentFragment
DOMError
File API
ChildNode
Media
DOMImplementation
Web Sockets and Messaging
Event
WebGL
Visibility
Web Storage
Document
EventSource
CSS Object Model
Comment
Web Workers
Attr
WebRTC
Selectors
DocumentType
Offline
Element
CharacterData
Browser
Canvas
EventListener
CustomEvent
Shadow DOM
CloseEvent
File System API
BroadcastChannel
Typed Arrays
Pointer Lock
Elements
27. SUPERWEEK 2015 | #SPWK | @SimoAhava
PAGE VISIBILITY API
Meaningful data:
When a page is loaded in hidden state, do not send a Page View.
If the visibility of the page changes from hidden to visible, then
send the Page View.
30. SUPERWEEK 2015 | #SPWK | @SimoAhava
THE PROCESS
1. Page is loaded in the browser
1. Page is loaded in the browser
2. Is the Visibility API supported?
3. Is the page visible?
4. Is a Visibility Change detected?
yes / no
FIRE PAGE VIEW
…and remove visibility listener…
…and end the process…
31. SUPERWEEK 2015 | #SPWK | @SimoAhava
THE PROCESS
2. Is the Visibility API supported?
1. Page is loaded in the browser
2. Is the Visibility API supported?
3. Is the page visible?
4. Is a Visibility Change detected?
yes / no
FIRE PAGE VIEW
…and remove visibility listener…
…and end the process…
32. SUPERWEEK 2015 | #SPWK | @SimoAhava
THE PROCESS
2. Is the Visibility API supported?
1. Page is loaded in the browser
2. Is the Visibility API supported?
3. Is the page visible?
4. Is a Visibility Change detected?
yes / no
FIRE PAGE VIEW
…and remove visibility listener…
…and end the process…>> >>
33. SUPERWEEK 2015 | #SPWK | @SimoAhava
THE PROCESS
2. Is the Visibility API supported?
1. Page is loaded in the browser
2. Is the Visibility API supported?
3. Is the page visible?
4. Is a Visibility Change detected?
yes / no
FIRE PAGE VIEW
…and remove visibility listener…
…and end the process…
document.addEventListener(
'visibilitychange',
function() {
dataLayer.push({
'event' : 'visibility-
Change'
});
}
);
34. SUPERWEEK 2015 | #SPWK | @SimoAhava
THE PROCESS
3. Is the page visible?
1. Page is loaded in the browser
2. Is the Visibility API supported?
3. Is the page visible?
4. Is a Visibility Change detected?
yes / no
FIRE PAGE VIEW
…and remove visibility listener…
…and end the process…
35. SUPERWEEK 2015 | #SPWK | @SimoAhava
THE PROCESS
3. Is the page visible?
1. Page is loaded in the browser
2. Is the Visibility API supported?
3. Is the page visible?
4. Is a Visibility Change detected?
yes / no
FIRE PAGE VIEW
…and remove visibility listener…
…and end the process…>> >>
36. SUPERWEEK 2015 | #SPWK | @SimoAhava
THE PROCESS
3. Is the page visible?
1. Page is loaded in the browser
2. Is the Visibility API supported?
3. Is the page visible?
4. Is a Visibility Change detected?
yes / no
FIRE PAGE VIEW
…and remove visibility listener…
…and end the process…
37. SUPERWEEK 2015 | #SPWK | @SimoAhava
THE PROCESS
4. Is a Visibility Change detected?
1. Page is loaded in the browser
2. Is the Visibility API supported?
3. Is the page visible?
4. Is a Visibility Change detected?
yes / no
FIRE PAGE VIEW
…and remove visibility listener…
…and end the process…
38. SUPERWEEK 2015 | #SPWK | @SimoAhava
THE PROCESS
4. Is a Visibility Change detected?
1. Page is loaded in the browser
2. Is the Visibility API supported?
3. Is the page visible?
4. Is a Visibility Change detected?
yes / no
FIRE PAGE VIEW
…and remove visibility listener…
…and end the process…>> >>
45. SUPERWEEK 2015 | #SPWK | @SimoAhava
Adjusted Bounce Rate
Adjusted
Not happy with a metric? Sure! Tweak the data
collection. Don’t tackle the real
problem, i.e. your horrible content!
55. SUPERWEEK 2015 | #SPWK | @SimoAhava
Product: A blog article
Product price: Words in an article
Product impression: Views of a
title or title+ingress in content
lists
Product list: Widget / content
area where product impressions
can be gathered from
Product list click: Clicks on entries
in a product list
Product detail view: Page load
of an article page
Add to cart: First scroll on an
article page
Checkout: 1/3, 2/3, and 3/3
scroll depth on an article page
Purchase: 3/3 scroll depth on an
article page and minimum of 60
seconds dwell time
65. SUPERWEEK 2015 | #SPWK | @SimoAhava
TIPS
1. Use dataLayer, don’t do what I did (DOM scrape)
2. Feel free to leave something out if it isn’t meaningful
or doesn’t make sense
3. Design the data collection with analysis in mind – not
because it’s fun and cool
4. If using GTM, remember that only the most recent
’ecommerce’ object push is sent with a tag! Always
remember to push an ’event’ value with an
’ecommerce’ object push
5. Read Google’s Dev Guide! It’s all in there.
66. SUPERWEEK 2015 | #SPWK | @SimoAhava
TIPS
1. Use dataLayer, don’t do what I did (DOM scrape)
2. Feel free to leave something out if it isn’t meaningful
or doesn’t make sense
3. Design the data collection with analysis in mind – not
because it’s fun and cool
4. If using GTM, remember that only the most recent
’ecommerce’ object push is sent with a tag! Always
remember to push an ’event’ value with an
’ecommerce’ object push
5. Read Google’s Dev Guide! It’s all in there.
67. SUPERWEEK 2015 | #SPWK | @SimoAhava
TIPS
1. Use dataLayer, don’t do what I did (DOM scrape)
2. Feel free to leave something out if it isn’t meaningful
or doesn’t make sense
3. Design the data collection with analysis in mind – not
because it’s fun and cool
4. If using GTM, remember that only the most recent
’ecommerce’ object push is sent with a tag! Always
remember to push an ’event’ value with an
’ecommerce’ object push
5. Read Google’s Dev Guide! It’s all in there.
68. SUPERWEEK 2015 | #SPWK | @SimoAhava
TIPS
1. Use dataLayer, don’t do what I did (DOM scrape)
2. Feel free to leave something out if it isn’t meaningful
or doesn’t make sense
3. Design the data collection with analysis in mind – not
because it’s fun and cool
4. If using GTM, remember that only the most recent
’ecommerce’ object push is sent with a tag! Always
remember to push an ’event’ value with an
’ecommerce’ object push
5. Read Google’s Dev Guide! It’s all in there.
69. SUPERWEEK 2015 | #SPWK | @SimoAhava
TIPS
1. Use dataLayer, don’t do what I did (DOM scrape)
2. Feel free to leave something out if it isn’t meaningful
or doesn’t make sense
3. Design the data collection with analysis in mind – not
because it’s fun and cool
4. If using GTM, remember that only the most recent
’ecommerce’ object push is sent with a tag! Always
remember to push an ’event’ value with an
’ecommerce’ object push
5. Read Google’s Dev Guide! It’s all in there.
70. SUPERWEEK 2015 | #SPWK | @SimoAhava
FURTHER READING
http://goo.gl/lMWqW8
71. SUPERWEEK 2015 | #SPWK | @SimoAhava
FURTHER READING
http://goo.gl/xYNVb3
72. SUPERWEEK 2015 | #SPWK | @SimoAhava
FURTHER READING
http://enhancedecommerce.appspot.com/
73. SUPERWEEK 2015 | #SPWK | @SimoAhava
FURTHER READING
https://github.com/sahava/eec-gtm