supercharging your organic ctr
TRANSCRIPT
Slides: bit.ly/supercharge-ctr
Supercharging your
Organic CTR
Welcome Phil Pearce SEO & GA Analyst
www.linkedin.com/in/philpearce
Web Analytics
Exchange
mentor
750 GA
questions answered
Tracking
protection
group
Agenda
1. What is the new mark-up (JSON-LD)
2. Why should I enabling this (i.e. benefits)?
– Examples
3. Which method should I use to enable?
– WP plugins vs Google Tag Manger injection
4. How do I test & validate it?
– Single page tests
– Sitewide tests
Lets talk about...
Skiing Ma
Schema.org (precursor to JSON-LD)
Lets talk about...
Microdata & RDFa (Original Rich snippets)
<div itemscope itemtype="http://schema.org/Product">
<span itemprop="name">Kenmore White 17" Microwave</span>
<img itemprop="image" src="kenmore-microwave-17in.jpg" alt='Kenmore 17" Microwave' />
<div itemprop="aggregateRating"
itemscope itemtype="http://schema.org/AggregateRating">
Rated <span itemprop="ratingValue">3.5</span>/5
based on <span itemprop="reviewCount">11</span> customer reviews
</div>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<!--price is 1000, a number, with locale-specific thousands separator
and decimal mark, and the $ character is marked up with the
machine-readable code "USD" -->
<span itemprop="priceCurrency" content="USD">$</span><span
itemprop="price" content="1000.00">1,000.00</span>
<link itemprop="availability" href="http://schema.org/InStock" />In stock
</div>
Product description:
<span itemprop="description">0.7 cubic feet countertop microwave.
Has six preset cooking categories and convenience features like
Add-A-Minute and Child Lock.</span>
Customer reviews:
<div itemprop="review" itemscope itemtype="http://schema.org/Review">
<span itemprop="name">Not a happy camper</span> -
by <span itemprop="author">Ellie</span>,
<meta itemprop="datePublished" content="2011-04-01">April 1, 2011
<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
<meta itemprop="worstRating" content = "1">
<span itemprop="ratingValue">1</span>/
<span itemprop="bestRating">5</span>stars
</div>
<span itemprop="description">The lamp burned out and now I have to replace
it. </span>
</div>
<div itemprop="review" itemscope itemtype="http://schema.org/Review">
<span itemprop="name">Value purchase</span> -
by <span itemprop="author">Lucas</span>,
<meta itemprop="datePublished" content="2011-03-25">March 25, 2011
<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
<meta itemprop="worstRating" content = "1"/>
<span itemprop="ratingValue">4</span>/
<span itemprop="bestRating">5</span>stars
</div>
<span itemprop="description">Great microwave for the price. It is small and
fits in my apartment.</span>
</div>
...
</div>
Pictures & Differentiation = Increased Organic CTR!
Microdata (Original Rich snippets)
<div itemscope itemtype="http://schema.org/Product">
<span itemprop="name">Kenmore White 17" Microwave</span>
<img itemprop="image" src="kenmore-microwave-17in.jpg" alt='Kenmore 17" Microwave' />
<div itemprop="aggregateRating"
itemscope itemtype="http://schema.org/AggregateRating">
Rated <span itemprop="ratingValue">3.5</span>/5
based on <span itemprop="reviewCount">11</span> customer reviews
</div>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<!--price is 1000, a number, with locale-specific thousands separator
and decimal mark, and the $ character is marked up with the
machine-readable code "USD" -->
<span itemprop="priceCurrency" content="USD">$</span><span
itemprop="price" content="1000.00">1,000.00</span>
<link itemprop="availability" href="http://schema.org/InStock" />In stock
</div>
Product description:
<span itemprop="description">0.7 cubic feet countertop microwave.
Has six preset cooking categories and convenience features like
Add-A-Minute and Child Lock.</span>
Customer reviews:
<div itemprop="review" itemscope itemtype="http://schema.org/Review">
<span itemprop="name">Not a happy camper</span> -
by <span itemprop="author">Ellie</span>,
<meta itemprop="datePublished" content="2011-04-01">April 1, 2011
<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
<meta itemprop="worstRating" content = "1">
<span itemprop="ratingValue">1</span>/
<span itemprop="bestRating">5</span>stars
</div>
<span itemprop="description">The lamp burned out and now I have to replace
it. </span>
</div>
<div itemprop="review" itemscope itemtype="http://schema.org/Review">
<span itemprop="name">Value purchase</span> -
by <span itemprop="author">Lucas</span>,
<meta itemprop="datePublished" content="2011-03-25">March 25, 2011
<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
<meta itemprop="worstRating" content = "1"/>
<span itemprop="ratingValue">4</span>/
<span itemprop="bestRating">5</span>stars
</div>
<span itemprop="description">Great microwave for the price. It is small and
fits in my apartment.</span>
</div>
...
</div>
Better organic CTR!
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Product",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "3.5",
"reviewCount": "11"
},
"description": "0.7 cubic feet countertop microwave. Has six preset cooking categories and convenience features like
Add-A-Minute and Child Lock.",
"name": "Kenmore White 17\" Microwave",
"image": "kenmore-microwave-17in.jpg",
"offers": {
"@type": "Offer",
"availability": "http://schema.org/InStock",
"price": "55.00",
"priceCurrency": "USD"
},
"review": [
{
"@type": "Review",
"author": "Ellie",
"datePublished": "2011-04-01",
"description": "The lamp burned out and now I have to replace it.",
"name": "Not a happy camper",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "1",
"worstRating": "1"
}
},
{
"@type": "Review",
"author": "Lucas",
"datePublished": "2011-03-25",
"description": "Great microwave for the price. It is small and fits in my apartment.",
"name": "Value purchase",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "4",
"worstRating": "1"
}
}
]
}
</script>
Better organic CTR!
And action buttons!
JSON-LD (New Rich snippets)
Skiing Ma with action buttons
JSON-LD
Action buttons = even higher Organic CTR
(especially for logged-in users)
Loggedin as Skiing Ma
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Restaurant",
"name": "Dave's Vegetarian Pizza",
"url": "http://www.example.com/restaurant-locations/manhattan",
"menu": "http://www.example.com/menu",
"potentialAction": {
"@type": "OrderAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://www.example.com/daves-cafe-new-york"
},
}
"telephone": "+12122459600"
}
</script>
JSON-LD action button example...
Call actions on the right hand side
Super Gran
Super Gran
Potential Action:
Call
Actions in main results
Potential Action: Watch
Google Video
• https://www.youtube.com/watch?v=XXw8g-FbemI&t=214
• https://www.youtube.com/watch?v=L9BqE01SLeE
Monitoring Improvements
Before vs After
You can already calculate existing Organic CTR
using GA sessions / GWT impressions
SEOmoz now report on this for your site vs competitors
JSON-LD reports per vertical
are also available on BuiltWith
http://trends.builtwith.com/docinfo/JSON-LD
Implementing
Planning JSON implantation
Global vs Page specific
Global
1. Brand Logo 2. Phone Number 3. Social Profiles 4. Site Search 5. OpeningHours 6. Address
Page Specific 1. News data 2. Product data 3. Review data 4. Breadcrumbs 5. Music & TV Product data 6. Local restaurants
vs
Implementation
Method summary
GTM Wordpress
CMS agnostic Yes No
Supports server-side No (dataLayer exception)
Yes
InTool JS validation Native n/a
Speed Asynchronous JS Server-side cache
Uneffected by CSS or DOM ID changes
No, will break (dataLayer exception)
Yes
Live example of GTM output
bit.ly/winningthewar33
GTM JSON-LD example source code…
JSON script are
downloadable
from here:
login:coolgtmstuff
@gmail.com
pw:philrulesgtm7
Auto config import file: bit.ly/winningthewar6
WARNING: For GTM Select merge (not overwrite)
http://peadig.com/wordpress-plugins/structured-social-profiles/ https://wordpress.org/plugins/structured-social-profiles/ https://builtvisible.com/implementing-json-ld-wordpress/
Wordpress plugin for JSON-LD
Very good post... https://builtvisible.com/implementing-json-ld-wordpress/
GTM ProTip: Changing from DataLayer to JSONLD piggybacking...
+
bit.ly/single-tag
GTM DataLayer JSONLD schema
JSONLD schema Mapped to GTM datalayer via JS variables
For Wordpress or Serverside implementation pls add ID to scripts to make it easier to enable GA enhanced ecommerce... <script id="JSONLD-review1">xxx</script>
https://www.analyticspros.com/blog/tag-management/tracking-semantic-seo-with-google-analytics/
bit.ly/single-tag
Practical Examples
Organization – Logo, Social and Telephone number
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Organization",
"url": "http://yourdomain.com/",
"logo": "http://yourdomain.com/images/logo.png",
"sameAs": [
"http://www.facebook.com/yourProfile",
"http://www.twitter.com/yourProfile",
"http://plus.google.com/yourProfile",
"http://www.linkedin.com/in/yourProfile",
"http://instagram.com/yourProfile"
],
"contactPoint": [{
"@type": "ContactPoint",
"telephone": "+1-401-555-1212",
"contactType": "customer service",
"contactOption": "TollFree",
"areaServed": [
"US",
"CA"
],
"availableLanguage": [
"English",
"French"
]
}]
}
</script> Future Action:
Click
Global
Person
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Person",
"name": "Barack Obama",
"jobTitle": "President",
"affiliation": "Democratic Party",
"additionalName": "Barack",
"url": "http://www.barackobama.com/",
"sameAs": [
"http://www.facebook.com/yourProfile",
"http://www.twitter.com/yourProfile",
"http://plus.google.com/yourProfile",
"http://www.linkedin.com/in/yourProfile",
"http://instagram.com/yourProfile"
],
"address": {
"@type": "PostalAddress",
"streetAddress": "White house, 1600 Pennsylvania Ave",
"addressLocality": "Northwest",
"addressRegion": "Washington"
}
}
</script>
Future Action: Follow
updates
Global
WebSite – Search box
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "http://yourdomain.com/",
"potentialAction": {
"@type": "SearchAction",
"target": "http://yourdomain.com/?s={search_term_string}",
"query-input": "required name=search_term_string"
}
}
</script>
Future Action: Search
Global
Breadcrumbs
<!-- developers.google.com/structured-data/breadcrumbs -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@id": "http://{{Page Hostname}}/{{jsmacro_pathnameLevel1 - no prepending slash}}",
"name": "{{jsmacro_pathnameLevel1 - no prepending slash}}"
}
},{
"@type": "ListItem",
"position": 2,
"item": {
"@id": "http://{{Page Hostname}}{{Page Path}}",
"name": "{{js_document.title}}"
}
}]
}
</script>
Page specific
NewsArticle
<!--http://developers.google.com/search/docs/data-types/articles -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "NewsArticle",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "http://{{Page Hostname}}/article1"
},
"headline": "Article headline",
"description": "A most wonderful article",
"image": {
"@type": "ImageObject",
"url": "http://{{Page Hostname}}/thumbnail_1.jpg",
"height": 800,
"width": 800
},
"datePublished": "2016-01-01T00:00:00+08:00",
"dateModified": "2016-01-01T13:00:00+08:00",
"author": {
"@type": "Person",
"name": "John Doe",
"sameAs": "https://plus.google.com/106113236172152128711"
},
"publisher": {
"@type": "Organization",
"name": "Google",
"logo": {
"@type": "ImageObject",
"url": "https://www.newscorp.com/logo.jpg",
"width": 600,
"height": 60
},
"sameAs": "https://www.newscorp.com"
}
}
</script>
Page specific
Products
<!-- https://developers.google.com/search/docs/data-types/products -->
<script type="application/ld+json">
{
"@context": "http://schema.org/",
"@type": "Product",
"name": "Executive Anvil",
"image": "http://www.example.com/anvil_executive.jpg",
"description": "Sleeker than ACME's Classic Anvil, the Executive Anvil
is perfect for the business traveler looking for something to drop from a
height.",
"mpn": "925872",
"brand": {
"@type": "Thing",
"name": "ACME"
},
"offers": {
"@type": "Offer",
"priceCurrency": "USD",
"price": "119.99",
"priceValidUntil": "2099-01-01",
"itemCondition": "UsedCondition", // schema.org/UsedCondition
"availability": "InStock", // schema.org/InStock
"seller": {
"@type": "Organization",
"name": "Executive Objects"
}
}
}
</script>
Page specific
Products Reviews
<!-- https://developers.google.com/search/docs/data-types/reviews -->
<script type="application/ld+json">
{
"@context": "http://schema.org/",
"@type": "Product",
"name": "Executive Anvil",
//...//
"aggregateRating": {
"@type": "AggregateRating",
"worstRating": 1,
"bestRating": 5,
"ratingValue": 4.4,
"reviewCount": 1
},
"review": {
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"worstRating": 1,
"bestRating": 5,
"ratingValue": 4.4
},
"name": "A masterpiece of an Executive Anvil",
"datePublished": "2016-01-01",
"reviewBody": "I really like this product. It captures the essential
challenge business traveler looking for something to drop from a height`s",
"author": {
"@type": "Person",
"name": "John Doe",
"sameAs":
"https://plus.google.com/106113236172152128711"
},
"publisher": {
"@type": "Organization",
"name": "John Doe Inc",
"sameAs": "http://www.janedoe.org"
}
}
}
</script>
Page specific
Review by Expert Author (GoogleNet whitelist)
<!-- https://developers.google.com/structured-data/critic-reviews -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Review",
"author": {
"@type": "Person",
"name": "Lisa Kennedy",
"sameAs": "https://plus.google.com/114108465800532712602"
},
"datePublished": "2014-03-13T20:00",
"description": "Nerve-racking, sentimental and thrilling.",
"itemReviewed": {
"@type": "Movie",
"name": "Gravity",
"sameAs": "http://www.imdb.com/title/tt1454468/",
"datePublished": "2013-10-04T00:00",
"director": {
"@type": "Person",
"name": "Alfonso Cuarón",
"sameAs": "http://en.wikipedia.org/wiki/Alfonso_Cuar%C3%B3n"
},
"actor": [{
"@type": "Person",
"name": "Sandra Bullock",
"sameAs": "http://en.wikipedia.org/wiki/Sandra_Bullock"
},{
"@type": "Person",
"name": "George Clooney",
"sameAs": "http://en.wikipedia.org/wiki/George_Clooney"
}
]
},
"publisher": {
"@type": "Organization",
"name": "Denver Post",
"sameAs": "http://www.denverpost.com"
},
"reviewRating": {
"@type": "Rating",
"worstRating": 1,
"bestRating": 4,
"ratingValue": 3.5
},
"url": "http://www.denverpost.com/movies/ci_24225964/gravity-movie-review-anchored-by-sandra-
bullock-its"
}
</script>
Page specific
LocalBusiness - Restaurant
<!-- https://developers.google.com/search/docs/data-types/local-businesses -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Restaurant",
"name": "Dave's Steak House",
"image": "http://www.example.com/image.jpg",
"url": "http://www.example.com/restaurant-locations/manhattan",
"menu": "http://www.example.com/menu",
"acceptsReservations": "True",
"telephone": "+12122459600",
"address": {
"@type": "PostalAddress",
"streetAddress": "148 W 51st St",
"addressLocality": "New York",
"addressRegion": "NY",
"postalCode": "10019",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": "40.761293",
"longitude": "-73.982294"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday"
],
"opens": "11:30",
"closes": "22:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Wednesday",
"Thursday",
"Friday"
],
"opens": "11:30",
"closes": "23:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "16:00",
"closes": "23:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Sunday",
"opens": "16:00",
"closes": "22:00"
}
]
}
</script>
Page specific
LocalBusiness - HealthClub - ReserveAction
<!--
https://developers.google.com/search/docs/data-types/local-businesses
-->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "HealthClub",
"name": "Dave's House of Yoga",
"image": "http://daveshouseofyoga.example.com/yoga.jpg",
"url": "http://daveshouseofyoga.example.com/",
"telephone": "+14085551135",
"potentialAction": {
"@type": "ReserveAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://www.example.com/reserve?merchantId=20373",
"inLanguage": "en-US",
"actionPlatform": [
"http://schema.org/DesktopWebPlatform"
//, "http://schema.org/IOSPlatform"
//, "http://schema.org/AndroidPlatform"
]
},
"result": {
"@type": "Reservation",
"name": "Book a class"
}
},
"address": {
"@type": "PostalAddress",
"streetAddress": "3986 Rivermark Pkwy",
"addressLocality": "Santa Clara",
"addressRegion": "CA",
"postalCode": "95054",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": "37.3952149",
"longitude": "-121.9474023"
}
}
</script>
Page specific
MusicEvent - location
<!– https://developers.google.com/search/docs/guides/mark-up-listings#mark_up_event_listings -->
<script type="application/ld+json">{
"@context": "http://schema.org",
"@type": "MusicEvent",
"name": "The Wurzels",
"image": "https://cdn2.gigantic.com/static/images/campaign/240x240/the-wurzels5545.jpg",
"url": "https://www.gigantic.com/the-wurzels-electric-palace-2016-09-17-19-30",
"startDate": "2016-09-17T19:30:00+01:00",
"doorTime": "19:30",
"typicalAgeRange": "Under 14's must be accompanied by an adult.",
"location": {
"@type": "Place",
"name": "Electric Palace",
"address": {
"@type": "PostalAddress",
"streetAddress": "35 South Street",
"addressLocality": "Bridport",
"postalCode": "DT63NY",
"addressCountry": "GB"
}
},
"offers": [{
"@type": "Offer",
"name": "Standing",
"category": "primary",
"price": "15.95",
"priceCurrency": "GBP",
"url": "https://www.gigantic.com/the-wurzels-electric-palace-2016-09-17-19-30",
"availability": "InStock"
}],
"performer": [{
"@type": "MusicGroup",
"name": "The Wurzels",
"sameAs": "http://www.thewurzels.com/"
}]
}
</script>
Future Action: Buy
The Wurzels
Sat, 17th Sept
gigantic.com
thewurzels.com
Electric Palace 35 South Street, Bridport, DT63NY
Other supported event types include…
1. MusicEvent 2. TheaterEvent 3. SportsEvent
4. ComedyEvent 5. Festival 6. FoodEvent
Page specific
TheaterEvent - location
<!-- https://developers.google.com/search/docs/data-types/events#venue-markup -->
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "TheaterEvent",
"name": "Julius Caesar at Shakespeare's Globe",
"location": {
"@type": "PerformingArtsTheater",
"name": "Shakespeare's Globe",
"sameAs": "http://www.shakespearesglobe.com/",
"address": "London, UK"
},
"offers": [{
"@type": "Offer",
"name": "Standing (Yard)",
"url": "https://tickets.shakespearesglobe.com/performances.asp?PerIndex=287339",
"category": "primary",
"priceCurrency": "GBP",
"price": "7.50",
"availability": "http://schema.org/InStock"
},{
"@type": "AggregateOffer",
"name": "Lower Gallery",
"url": "https://tickets.shakespearesglobe.com/performances.asp?PerIndex=287339",
"category": "primary",
"priceCurrency": "GBP",
"lowPrice": "17.50",
"highPrice": "44.50",
"availability": "http://schema.org/LimitedAvailability"
}
],
"startDate": "2014-10-01T19:30",
"workPerformed": {
"@type": "CreativeWork",
"name": "Julius Caesar",
"sameAs": "http://en.wikipedia.org/wiki/Julius_Caesar_(play)",
"creator": {
"@type": "Person",
"name": "William Shakespeare",
"sameAs": "http://en.wikipedia.org/wiki/William_Shakespeare"
}
}
}
</script>
Future Action: Buy
Page specific
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"
}
}
}
}
</script>
Page specific
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": {
"@type":"EntryPoint",
"urlTemplate": "http://www.cbs.com/shows/bbt/vid/2356865/occupation_recal?campaign=google_kp_watch",
"actionPlatform": "http://schema.org/DesktopWebPlatform",
"inLanguage": "English"
},
"expectsAcceptanceOf": [
{
"@type": "Offer",
"category": "free",
"availabilityStarts": "2015-01-01T00:00",
"availabilityEnds" : "2015-02-01T00:00",
"eligibleRegion": {
"@type": "Country",
"name": "US"
}
},{
"@type": "Offer",
"category": "externalSubscription",
"availabilityStarts": "2015-01-01T00:00",
"availabilityEnds" : "2015-02-01T00:00",
"eligibleRegion": {
"@type": "Country",
"name": "US"
},
"seller": {
"@type": "Organization",
"name": "Comcast",
"sameAs": "http://xfinity.comcast.net"
}
}
]
},{
"@type": "WatchAction",
"target":[{
"@type":"EntryPoint",
"urlTemplate": "android-
app://com.cbs.app/cbs/shows/bbt/vid/2356865/occupation_recal?campaign=google_kp_watch",
"actionPlatform":[
//"http://schema.org/DesktopWebPlatform",
//"http://schema.org/IOSPlatform",
"http://schema.org/AndroidPlatform"
],
"inLanguage": "English"
},{
"@type":"EntryPoint",
"urlTemplate": "http://www.cbs.com/shows/bbt/vid/2356865/occupation_recal?campaign=google_kp_watch", /*
Should be "ios-app://" but Google Validator has a bug with... ios-app
name://530168168/cbs/shows/bbt/vid/2356865/occupation_recal?campaign=google_kp_watch */
"actionPlatform":[
//"http://schema.org/DesktopWebPlatform"
"http://schema.org/IOSPlatform"
],
"inLanguage": "English"
}],
"expectsAcceptanceOf": [
{
"@type": "Offer",
"category": "free",
"availabilityStarts": "2015-01-08T00:00",
"availabilityEnds" : "2015-01-17T00:00",
"eligibleRegion": {
"@type": "Country",
"name": "US"
}
},{
"@type": "Offer",
"name": "CBS All Access",
"category": "subscription",
"availabilityStarts": "2015-01-01T00:00",
"availabilityEnds" : "2015-02-01T00:00",
"eligibleRegion": {
"@type": "Country",
"name": "US"
},
"price": 5.99,
"priceCurrency": "USD",
"seller": {
"@type": "Organization",
"name": "CBS",
"sameAs": "http://www.cbs.com"
}
}
]
}
],
"sameAs": "http://www.imdb.com/title/tt3337730/",
"description": "Sheldon tries to relax after he is forced to take a vacation. (TV-PG D, L)"
}
</script>
Page specific
I recommend in the <head> with other <meta tags>
but can be placed anywhere.
Position of JSON LD on a page…
JSON-LD data
Note: If deployed via GTM - I recommend deploying on DOM ready.
Testing JSON markup
Structure Data Validator (one page at a time)
https://search.google.com/structured-data/testing-tool
Structure Data Validator (Whole site in GWT)
Future markups
Rich Cards Validator – Recipes only
AMP also requires JSONLD
for BlogPosting & NewsArticle
<script type="application/ld+json">
/* http://developers.google.com/search/docs/data-types/articles */
{
"@context": "http://schema.org",
"@type": "BlogPosting",
"mainEntityOfPage": "https://www.bookinglive.com/blog/online-booking-systems-for-the-public-sector/",
"publisher": {
"@type": "Organization",
"name": "BookingLive Blog",
"logo": {
"@type": "ImageObject",
"url": "https://www.bookinglive.com/blog/wp-
content/themes/bookingliveblog/themes/bookinglive/images/logo.png",
"height": 60,
"width": 600
}
},
"headline": "Online Booking Systems For The Public Sector",
"datePublished": "2016-08-08T14:59:58+00:00",
"dateModified": "",
"author": {
"@type": "Person",
"name": "Booking Live"
},
"description": "",
"image": {
"@type": "ImageObject",
"url": "https://www.bookinglive.com/blog/wp-content/themes/bookingliveblog/themes/bookinglive/images/logo.png",
"height": 800,
"width": 800
}
}
</script>
Action buttons are also supported in Emails
<script type="application/ld+json">
/*
One Click Action: Confirm Action
https://developers.google.com/gmail/markup/reference/one-click-action#confirm_action
*/
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"description": "Approval request for John's $10.13 expense for office supplies",
"potentialAction": {
"@type": "ConfirmAction",
"name": "Approve Expense",
"handler": {
"@type": "HttpActionHandler",
"url": "https://myexpenses.com/approve?expenseId=abc123"
}
}
}
</script>
Here is a live example from GitHub emails...
http://semanticweb.com/github-adds-schema-org-actions-email-notifications-via-json-ld_b44450
You have mail
Future Action: Pull Request
Summary
Enable JSON-LD via GTM or CMS plugins
Good for... Global JSON-LD 1. Brand Logo 2. Phone Number 3. Social Profiles 4. Site Search 5. OpeningHours 6. Address
Good for... Page Specific JSON-LD 1. News data 2. Product data 3. Review data 4. Breadcrumbs 5. Music & TV Product data 6. Local restaurants
Ping GoogleBot after making changes
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. Or Click submit sitemap.xml in GWT
Waiting for GoogleBot to index
(or check in SEOmoz)
Future actions…
1. Google JSON-LD Validator- try
2. GTM auto config for JSONLD or WP CMS plugins - install
3. Ping GoogleBot via sitemap.xml - submit
Questions (Prizes for Questsion)
GET YOUR SEO-ANALYTICS ASS TO MARS
Future Action: Ask Question
Free “USB stick" for Best Question!
Questions…. bit.ly/wawquestions
Appendix
Free Google Tag manager Guide...
bit.ly/gtmdevguide2
€ FREE
www.amazon.de/Google-Tag-Manager-Developer-Guide-ebook/dp/B00KEC2IOK
Future Action: Download
Detecting pages with "Semantic Markup Detection using
GTM script 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
More links
• https://moz.com/blog/using-google-tag-manager-to-dynamically-generate-schema-org-json-ld-tags
• https://builtvisible.com/implementing-json-ld-wordpress/
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 • https://schema.org/docs/actions.html (new)
Video on JSON LD
Very good intro video to JSON-LinkedData
• http://www.youtube.com/watch?v=vioCbTo3C-4
• http://www.youtube.com/watch?v=XXw8g-FbemI
History behind JSON-LinkedData
• http://manu.sporny.org/2014/json-ld-origins-2/
Links
http://www.simoahava.com/analytics/enrich-serp-results-using-gtm/
http://rdf.greggkellogg.net/distiller
https://developers.google.com/structured-data/testing-tool/
http://search4phil.com/_testing_script/____json_ld/json-ld-test.html
http://www.greenlaneseo.com/blog/2015/01/introducing-the-meta-and-rich-snippet-tester/
https://docs.google.com/spreadsheets/d/1sreYyRZ31HJdM1-WX5wztTIbY28aZjCVmGIWN8WKCEM/edit#gid=674078569
https://developers.google.com/schemas/release-notes
http://www.w3.org/wiki/WebSchemas/ActivityActions
// Script to patch a broken inline JSON-LD values
https://plus.google.com/100057001384327175073/posts/SJjfczNMPhc
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/
But first… “JSON LD playground”
Future Action: Use
playground
Empty page…
bit.ly/winningthewar1
Winning the war examples…
bit.ly/winningthewar2
Winning the war examples…
bit.ly/winningthewar33