Structured Data is hard when you're starting out. Conflicting info. Old outdated information. Poor documentation. I've spent a significant amout of time trying to master it. Now you can benefit from all my hard work and testing. Everything here works properly or it wouldn't be here. Many of these will provide the fancy Google Search Enhancements you desire and ensure your content types are marked up properly.
News |
---|
Google's Structured Data Testing Tool has stopped seeing Structured Data thats been inserted via Google Tag Manager. This caused a minor little uproar on Twitter when Google's John Mueller tweeted a response of "I wouldn't rely on a tool like GTM to add Structured Data". One blog immediately |
A.) Hand code it in (Learn more)
(Ugh)
B.) Use Google Tag Manager (Learn more)
Use Google Tag Manager to insert the code with the "Custom HTML" tag. (See screenshot below.) Why Tag Manager? Because Tag Manager can dynamically change the Structured Data based on the content of the page! (eg: Blog posts) See this article and this older Moz article for more information on how to do that.
UPDATE: Google changed something. Now, in order to have the Structured Data Testing tool detect inserted Structured Data properly, it must be inserted programatically. Pasting your desired Structured Data within this snippet below will allow it to be detected properly by the testing tool.
<!-- GOOGLE TAG MANAGER VERSION --> <!-- Credit: https://twitter.com/SimoAhava/status/1001397355403468802 --> <!-- Source: https://github.com/JayHoltslander/Structured-Data-JSON-LD --> <script> (function() { var jsonData = // PASTE THE JSON THAT YOU WANT TO USE, HERE. // Only paste what's within the <script> block. // Your pasted content should start with a "{" and end with a "}" ; var el = document.createElement('script'); el.type = 'application/ld+json'; el.innerHTML = JSON.stringify(jsonData); document.head.appendChild(el); })(); </script>
See also:
- How to install Google Tag Manager
- Add schema markup site using Google Tag Manager
- Adding JSON-LD structured data with Google Tag Manager
🔍 Screenshot |
C.) Use a Wordpress plugin (Learn more)
An average rating based on multiple ratings or reviews utilizing the AggregateRating schema. Be sure to read this article to see why using this example as written might not be the best idea. Hmm. 🤔 Also note that using a 3rd party's ratings (like say Google or Yelp) for a localBusiness seems to go against Google's guidelines. BUT, also see this note on using 3rd party reviews.
If you’re a publisher website, the more specific schema types like NewsArticle or BlogPosting are recommended (choose one or the other, depending on your site/content). Leveraging these markups accordingly can help your content to appear in Google News and in-depth articles search suggestions. See: Enabling Rich Snippets for Articles. Note: To show up in Google's News Carousel not only will the page require Structured Data but it's also required to be a valid AMP page. If you are using the official AMP Plugin for Wordpress you will definitely want to use Tag Manager to insert your Structured Data as opposed to other methods since you will be able to dynamically generate Schema.org JSON-LD Tags from pages that contain the correct pattern for your posts. eg: ?amp=1
or /amp
An even more specific version of Article for a blog post. See the BlogPosting schema for more info.
The BreadcrumbList schema allows you to mark up the breadcrumbs on your site to generate breadcrumb rich snippets for your pages in the SERPs. Learn more.
The Course schema allows you to mark up courses on your site to generate rich snippets for your courses in the SERPs. Learn more.
The Dataset schema is for a body of structured information describing some topic(s) of interest. It should use the sameAs property to link to the canonical page. Learn more.
An example of the ImageObject schema. Demonstrates use of the exifData schema.
The ItemList schema makes a page's items eligible for the Carousel Feature on mobile devices (Screenshot). This example is for a summary page which has a short description of each item in the list, and each item points to a separate details page that is focused entirely on one item. The details page is where the more detailed Structured Data on the item would be located. See: Docs https://developers.google.com/search/docs/guides/mark-up-listings#summary-page--multiple-full-details-pages
The ItemList schema makes a page's items eligible for the Carousel Feature on mobile devices (Screenshot). This example is for a single, all-in-one-page list hosts all list information, including full text of each item: for example, a gallery of recipes for various kinds of muffins, all contained on one page.
See: Docs https://developers.google.com/search/docs/guides/mark-up-listings#single-all-in-one-page-list
The ItemList schema makes a page's items eligible for the Carousel Feature on mobile devices (Screenshot). This example shows usage with the CollectionPage schema.
Adding structured data makes your job postings eligible to appear in a special user experience in Google Search results leading to increased chances of discovery and conversion. Your postings are eligible to be displayed more prominently in the dedicated Job Search UI, featuring your logo, reviews, ratings, and job details. The new user experience enables job seekers to filter by various criteria like location or job title, meaning you’re more likely to attract applicants who are looking exactly for that job. Learn more.
An example of a LocalBusiness with multiple locations defined. Each location having it's own defined service areas.
An example of a LocalBusiness customized for a law firm. Demonstrates combined @types (LocalBusiness/Organization/LegalService) and Corporate Contact useage.
A detailed example of a complex LocalBusiness customized for a Notary. Demonstrates combined @types (LocalBusiness/Organization/Notary) and Corporate Contact useage.
An example of a LocalBusiness customized for an online store with no physical location. Demonstrates combined @types (LocalBusiness/Organization/Store)
My personal structured data snippet for "Person" in JSON-LD format.
An example of some markup that results in Rich Snippets for Questions as observed in the wild being used on Stack Exchange websites. SERP Screenshot This example includes additional Schema types for "Answer" and "QAPage" which do not seem to be required but complement each other.
A collection of services that a LocalBusiness may provide with per/service ratings.
How to define a service area for a local business.
The SiteNavigationElement schema can help increase search engines’ understanding of your site structure and navigation and can be used to influence organic sitelinks. (See also WPHeader on this page for an example of usage within a Navbar!)
For Voice search a SpeakableSpecification indicates via css selector(s) sections of a document that are highlighted as particularly speakable. See this article for more info.
The WebSite schema markup helps generate the Sitelinks Search Box feature for brand SERPs and can help your site name to appear in search results. You must, of course, have an existing site search on your website to enable the Sitelinks Search Box element.
Includes:
- the Webpage schema. Why both? See this description.)
- WPHeader
- WPSidebar
- WPFooter
("Webpage Header" not "Wordpress Header") Define structured Data for items within a site's header with the WPHeader schema. Includes SiteNavigationElements within! Also see an example of this in use within the snippet WebSite.json
A site with embedded or hosted video content can leverage the VideoObject schema. Google primarily displays video rich snippets for YouTube videos, but this will help video rich snippets to appear for your Web pages in Google Video Search. Google Resource Page: Enabling Rich Snippets for Videos
Indicates where something should be viewed. One of the most common implementations is in Google App indexing, where it enables a URL from a website indexed in search results, to be opened inside the corresponding App (if installed in the user's device).
You can link snippets together and reuse them (DRY) by defining and referencing their @id
(These are called "Node identifiers") Learn more about them here.
-
SiteNavigationElement - Table (Examples)
- WPAdBlock (Examples)
-
Website -
Article - Report (Examples)
-
Course -
Dataset - GeoShape (Examples)
- GeoShape info 1 - https://webmasters.stackexchange.com/questions/28916/how-do-i-use-the-http-schema-org-geoshape-itemtype
- GeoShape info 2 - https://developers.google.com/schemas/reference/types/GeoShape
If you found this saved you time, or helped you in any way, feel free to buy me a coffee.
- Structured-Data-Test-Button Wordpress Plugin
- Yoast's admin bar functions
- The Google Structured Data Test Tool.
- Schema Markup Structured Data 2018 Guide - https://presencemedia.io/schema-markup-structured-data-2018-guide/
- Good instructions - https://builtvisible.com/micro-data-schema-org-guide-generating-rich-snippets/
- Using Google Tag Manager to dynamically generate Schema.org JSON-LD Tags
- 5 Common schema problems and what to do about them
- Implement JSON-LD within the Wordpress Divi theme
- Structured Data Actions in email
- Yoast's "Ultimate Guide"
- Reference - Local Business - http://linter.structured-data.org/examples/schema.org/LocalBusiness/
- Reference - Corporate Contacts - https://developers.google.com/search/docs/data-types/corporate-contacts
- Reference - Contact point - http://linter.structured-data.org/examples/schema.org/ContactPoint/
- Homepage Structured Data
- Steal our JSON-LD