1. How can a dataLayer help your SEO?
Slides: bit.ly/seodatalayer2
2. Welcome Back
Phil Pearce
Analytics Freedom Fighter
www.linkedin.com/in/philpearce
Web Analytics
Exchange
mentor
750 GA
questions answered
Tracking
protection
group
3. Summary
1. What
HTML structured data
JavaScript structured data
Hybrid mode
2. Why
+ Organic CTR
+ SEO analysis
+ Adwords Dynamic remarketing
3. How
GTM script examples
Validators
Pinging GoogleBot to re-crawl / index
4. Questions
4. 1. HTML structure data
Human & Robot: Title & H1
Robot: HTTP Response code (e.g. 200 status)
Robot: Meta description
Robot: sitemap.xml
Easy Baddie
5. Human & Robot: Title & H1
Better organic CTR
Higher position for local listing
2. Microdata (aka Rich snippets)
<div>
<div itemscope itemtype="http://data-vocabulary.org/Review">
<span itemprop="itemreviewed">L’Amourita Pizza</span>
Reviewed by <span itemprop="reviewer">Ulysses Grant</span> on
<time itemprop="dtreviewed" datetime="2009-01-06">Jan 6</time>.
<span itemprop="summary">Delicious, tasty pizza in Eastlake!</span>
<span itemprop="description">L'Amourita serves up traditional wood-fired
Neapolitan-style pizza,
brought to your table promptly and without fuss. An ideal neighborhood
pizza joint.</span>
Rating: <span itemprop="rating">4.5</span>
</div>
</div>
A Bit Bad
6. 3. What is a JavaScript DataLayer?
name value
pageCategory : signup
visitorType : high-value
VariableName + Value pairs. For example...
VariableName (pageCategory) + Value (signup)
Like meta <title> but... in JS.
Like an excel table
but on website
and encased in JavaScript
J
S
J
S
Pretty Mean
8. Markup summary
*JS-Robot for onclick content
Mark-up
name
Human can
see?
Robots
see?
Accessible to
DOM?
HTML
No
(except title)
Yes
No
(except title)
Microdata Yes Yes No
DataLayer
(JSON)
No Yes Yes
Hybrid
(JSON-LD)
Yes Yes* Yes Winner
10. Previously, we (Google) only looking at content from
the HTTP response and didn't interpret what a typical
browser running JavaScript would render.
…When pages that have valuable content rendered
by JavaScript started showing up, we weren’t able to
let searchers know about this content, which was a sad
outcome for both users and webmasters.
In order to solve this problem… we started executing
JavaScript.
In the past few months, our indexing system has been
rendering a more web pages like an average user’s
browser (with JavaScript turned on).
JS-Googlebot now indexing JS content!
From 8months ago: May-2014
Source: googlewebmastercentral.blogspot.co.uk/2014/05/understanding-web-pages-better.html
11. The next page has the following action
Future Action:
Watch
12. What is JSON-LD video
https://www.youtube.com/watch?v=vioCbTo3C-4
And https://www.youtube.com/watch?v=XXw8g-FbemI#t=251
14. Note: currently only on Google.com SERPs
... renders JSON-linkedData on SERPs
GoogleNet
GoogleNet
Future Action:
Call
15. use cases:
1. telephone numbers – action call
2. company logos– action click
3. social profile links – action follow
4. events in the Knowledge Graph – action call
5. the sitelinks search box – action search
We (Google) are working on expanding support to
additional markup powered features in the future.
6. product & review actions (not yet supported)
Other Examples
20. variableName value
ecomm_pagetype home
ecomm_pagetype product
ecomm_pagetype category
ecomm_pagetype basket
ecomm_pagetype purchase
ecomm_pagetype siteview
Adwords remarketing pagetype
(allows Adwords to stalk users on
Google Display Network)
Analysing user
session fingerprint
for re-targeting
27. The Power of
Structure
mark-up
= Robot
becomes a
goodie
http://semanticweb.com/github-adds-schema-org-actions-email-notifications-via-json-ld_b44450
You have mail
Future Action:
Pull Request
28. Benefits of JSON-LD?
1. Supported by Google, Yahoo and Bing.
2. Unlike digitalData layer it is officially W3c
supported
3. SEO`s understand it as it is based on schema.org
/ microdata
4. It will eventually supersede microdata
5. It already has strong adoption in HTML emails
(e.g gmail)
6. Benefit`s SEO, Analytics and Remarketing!
29. 3. Back to the present day
How can I enable this now?
GTM script examples
Validators
Pinging GoogleBot to re-crawl / index
31. JSON –LD examples…
JSON script are
downloadable
from here:
login:coolgtmstuff
@gmail.com
pw:philrulesgtm3
Import file for New interface:
http://bit.ly/json-v2
Import file for Old interface:
http://bit.ly/jsonv1
42. MusicGroup - ListenAction
<!-- https://developers.google.com/structured-data/actions/play-music -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "MusicGroup",
"url": [
"http://www.iheart.com/artist/Katy-Perry-35141/"
// Google validator does not like android-app URL - even though its in their example!
//, "android-app://com.clearchannel.iheartradio.controller/ihr/listen/custom_radio/artist/35141"
],
"name": "Katy Perry",
"sameAs": "http://www.katyperry.com",
"logo": "http://{{Page Hostname}}/images/logo.png", // PP missing in Google help pages
"description": "Katy Perry is a pop music artist.",
"potentialAction": {
"@type": "ListenAction",
"target": [
"http://www.iheart.com/artist/Katy-Perry-35141/?autoplay=true&ext=1&playedFrom=197"
// Google validator does not like android-app URL - even though its in their example!
//, "android-
app://com.clearchannel.iheartradio.controller/ihr/listen/custom_radio/artist/35141?ext=1&played_from=197"
],
// Offer added as validator said this was a recommended field
"expectsAcceptanceOf": {
"@type": "Offer",
"eligibleRegion": {
"@type": "Country",
"name": "US"
}
}
}
43. TVEpisode - Play/WatchAction
<!-- https://developers.google.com/structured-data/actions/watch-movies -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@id": "2356865",
"@type": "TVEpisode",
"name": "The Occupation Recalibration",
"episodeNumber": 13,
"partOfSeason": {
"@type": "TVSeason",
"seasonNumber": 7
},
"partOfSeries": {
"@type": "TVSeries",
"name": "The Big Bang Theory",
"sameAs": "http://www.imdb.com/title/tt0898266/",
"url": "http://www.cbs.com/shows/big_bang_theory/",
"description": "The Big Bang Theory is an American sitcom."
},
"releasedEvent": {
"@type": "PublicationEvent",
"startDate": "2015-01-09",
"location": {
"@type": "Country",
"name": "US"
}
},
"potentialAction": [{
"@type": "WatchAction",
"target": "http://www.cbs.com/shows/bbt/vid/2356865/occupation_recal?campaign=google_kp_watch",
54. 3. Ping GoogleBot to get the pages indexed and
get a CTR boast…
1. Ensure pages validate:
2. Ping GoogleBot to re-crawl by visiting this URL:
Or use “Fetch, render and index” on homepage & individual pages in GWT.
3. Wait 4+ weeks
60. Examples in the wild
Ticketmaster (JSON-LD for music events)
https://developers.google.com/webmasters/structured-data/testing-
tool?url=http%253A%252F%252Fwww.ticketmaster.com%252FLady-Gaga-
tickets%252Fartist%252F1249444
http://www.ticketmaster.com/
http://www.bandsintown.com/
http://www.bandpage.com/
http://www.songkick.com/
Nest (Telehone number)
nest.com/about/#contact
LastMinute (DigitalDataLayer only)
www.lastminute.com/hotels/amazing-design-hotel-with-pool-in-east-london-london-
gb.1000071234-1-5-
GH:1$v1v$?intcmp=London+AmazingDesignHotelwithPoolinEastLondon
Test using https://developers.google.com/structured-data/testing-tool/
61. MINI-GUN UPGRADES:
JSmacro for
"Semantic - Event Markup Detection"
GTM import:
https://www.dropbox.com/s/mvs84img781le16/OTHER%20-%20semantic-analytics.json?dl=0
// JSmacro for "Semantic - Event Markup Detection" triggered on gtm.dom ready
function () {
var SemElem = document.querySelectorAll('[itemtype=&"Event"]');
SemElem = SemElem.length > 0 ? true : false;
return SemElem;
}
// JSmacro for "Semantic - Event Markup Properties"
function () {
var venue = $('[itemtype*="Event"] [itemprop*="name"]') [0];
var performer = $('[itemtype*="Event"] [itemprop*="performer"]') .text();
venue = $(venue).text();
label = performer + " at " + venue + " (Semantic Event)";
check = venue.length > 0 ? true : false;
if (check === false) {
label = "No semantic data";
return label;
}
else {
return label;
}
}
Source: http://moz.com/blog/semantic-analytics
62. HTML5 data-tracking-attributes:
Competing mark-up standard
Source: http://www.swellpath.com/2014/08/google-tag-manager-events-using-html5-data-attributes/ and this forum post
vs
<a href="#" class="amazingOfferLink" id="amazingOfferLink1"
data-tracking-action="amazingOffer">Click here</a>
63. HTML5 name Value
data-tracking-action click
data-tracking-event video
data-tracking-entity component
data-tracking-event-context-id 12345
data-tracking-event-context-category video
data-tracking-event-context-action play
data-tracking-event-context-label short circuit video
data-tracking-event-context-value 0
data-tracking-event-context-noninteractive false
HTML5 data-tracking-attributes:
Competing mark-up example
64. JSON-LD Links
Testing Tools
• JSON-LD playground & validation tools:
www.json-ld.org
• Official Google markup-Tester for JSON-LD
www.google.com/webmasters/markup-tester/corporatecontacts (phone numbers)
www.google.com/webmasters/markup-tester/events (music events)
www.google.com/webmasters/markup-tester/ (email)
JSON-LD blog posts
• www.seoskeptic.com/json-ld-google-knowledge-graph-schema-org-seo/
• moduscreate.com/google-announces-json-ld-compliance-at-google-io/
• semanticweb.com/category/technologies-2/json-ld
Official Google help pages
• Musical Artists: Specify your events to Google
support.google.com/webmasters/answer/4620133?hl=en
• Companies: Specify your customer service numbers to Google
support.google.com/webmasters/answer/4620709?hl=en
• Email markup: JSON-LD
developers.google.com/gmail/markup/reference/formats/json-ld
developers.google.com/gmail/markup/
Define: HTML structured data
Title, Meta description, H1, sitemap.xml
Microdata (product images & review)
OpenGraph (facebook image image and link)
Define: JavaScript structured data
GTM dataLayer (pageCategory)
Adwords (ecom_pagetype)
Define: Hybrid mode
Google announcement in May
Schema.org announcement in May
JSON serialisation support: currently limited to telephone.
Cheat sheets: JavaScript structured names standardisation
W3C digitalData names
GTM enhanced dataLayer names
Examples in the wild
digitalData (lastminute.com)
Hybrid mode (nest.com telephone number)
Plugins for Wordpress & Magento for JavaScript structured data
DataLayer plugins
Microdata plugins
Re-mapping scripts for existing JS names
Actionable outcomes SEO analysis examples
GA pageGrouping & pageGrouping flow reports
Adwords audience lists based on JavaScript structured data.
Enhance ecommerce
page.id data append using CSV
Hacking the JS-GoogleBot crawler
Tracking GoogleBot using GTM in script and noscript mode
Cloaking using GTM
Discuss: Website privacy & trust as a ranking factor.
p3p.xml in 2002, DNT 2003.
Video about Google KikScore crawler
JS-GoogleBot Cookie scanning
JSON serialisation hybrid for privacy policy page (p3p.xml + privacy policy)